Всем привет!
Поделитесь исходником связь двух МК, ну собстно нечего сложного, так передача например температуры, приём команд (например,зажечь светодиод) и всё такое... Вот скоько искал в нете, так конкретно и не нашол исходника по связи двух МК. Если кто-то подобное делал, поделитесь исходником.
За ранние спасибо!
Andryxa писал(а):Всем привет! Поделитесь исходником связь двух МК, ну собстно нечего сложного, так передача например температуры, приём команд (например,зажечь светодиод) и всё такое... Вот скоько искал в нете, так конкретно и не нашол исходника по связи двух МК. Если кто-то подобное делал, поделитесь исходником. За ранние спасибо!
В моей домашней страничке смотрите на стр. 7 - там апноут от производителя AVR по их связи.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
megasvintus писал(а):или соедини их по I2C- посердитее будет- до 400kbps
USART какбы скоростью не шибко ограничен... битрейт 1/16 Fosc в обычном режиме, 1/8 Fosc при включении Double Speed Mode, и 1/2 Fosc при синхронном режиме - что при 8МГц кварце выливается в 4 МБита, полудуплекс.
Что там смотреть? В начале кода - инициализация, потом - либо в цикле опрос байта флагов порта на предмет флага передачи/приема, либо (правильнее) - прерываниями разрулить это все...
Если нужно - могу покопаться в своих проектах поискать код для АЦП/ЦАП(ШИМ), работающего по RS232. Ессно, на асме.
Мне собственно ненадо исходники приёма и передачи по UART, так как я это всё делал в проекте связи с ПК. А мне нужно сама организация протокола, ну сам код связи между двумя МК.
А протокол - это уже вы сами придумывайте Под конкретную задачу...
Неизвестно же, что вы хотите от протокола...
В общих чертах - можно сделать пакет фиксированной длинны, и старт-метку скажем 6 символов FF, + CRC16 контрольная сумма в конце... Надежно но избыточно. Если FF не встречается в данных - можно его сделать маркером начала пакета, длинну пакета сделать фиксированной или переменной... ну и т.д. Контрольная сумма - при наличии контроля четности необязательна.
Ещё SPI есть, у вас длинна линии передачи какая? (и напряжения).
Сколки проводная.
Инициализируйте SPI, одинаково на обоих МК c прерыванием. Для передачи с одного на другой устанавливаете его как мастер, когда передадите обратно на слейв. И другой теперь мастер а этот слейв.
И подключите соответственно.
Передать по знчение переменной а:
#include <spi>
spi(а);
Принять, в обработчике прерывания.
А вообще можно и просто по 3м проводочкам, три любые ножки.
Одна вход-выход для данных, одна выход(указывает на передачу, если не активен приём), одна на вход(запускается обработчик приёма).