Страница 1 из 1

Как отправить байт на вывод микроконтроллера

Добавлено: Пн фев 11, 2008 15:29:04
Артур
Здравствуйте!
Подскажите пожалуйста как обычно отправляют байт на один вывод микроконтроллера?
Я не могу понять - в байте восемь бит, а вывод у нас один.
Например у меня 2 микроконтроллера, я хочу чтоб с вывода одного микроконтроллера передалось число 0х45h на вывод другого а другие числа чтоб игнорировались.
Но вывод то один а число 0х45 будет равно в двоичном виде 0b1000101 и как его передать? Спасибо!

Добавлено: Пн фев 11, 2008 16:01:23
vise
Ну ты даешь, сам ответ написал, и спрашиваешь Ж))) Собсно и передавай сначала 1 потом 0 потом 1 и так далее. Типа такого чтонибудь:

for(unsigned char i=0;i<8;i++)
{
PORTB = PORTB | 0x01; //установили CLK
if((data & 0x01)==0x01)PORTB = PORTB | 0x02; //установили DAT
else PORTB = PORTB & ~0x02; //сбросили DAT
PORTB = PORTB & ~0x01; //сбросили CLK
data=data>>1; //повернули дату вправо на 1 бит
}

На другом конце вешаешь CLK на прерывание которое срабатывает по спаду, ну и в прерывании читаешь данные DAT которые просто на пин порта повешены... А вообще чтоб ничего не изобретать лучше пользоватся уже готовыми решениями типа usart, ну или более точно опиши что хочешь в результате получить? Насчет других чисел, вообще непонятно как то Ж))))

Добавлено: Пн фев 11, 2008 16:30:42
Mozart
в общем читай мануал на 1-wire

Добавлено: Пн фев 11, 2008 18:18:44
Tohey
usart'ом в асинхронном режиме

Добавлено: Ср фев 13, 2008 11:07:16
Артур
Уважаемый vise скажите а что такое CLK , DAT и data
Не могли бы вы описать подробней что делает каждая строчка этого кода? Просто я новичок в програмировании.
Спасибо!

Добавлено: Ср фев 13, 2008 11:44:31
Mozart
то что он написал это херь работает по двум проводам... это раз... во-вторых, чтение будет производится по высокому уровню... и картинка будет не из лучших... примерно такая в масштабе большом конечно

Код: Выделить всё

clk  |-------------|_|-------------|_|-------------|_
data        x                x               x      

Добавлено: Ср фев 13, 2008 12:48:47
Krik99
Лутче посылать первый импульс длинее за другие, тогда будет работать по 1 проводу, и что бы когда МК посылает этот первый импульс , другой МК знает, что щя надо будет щитать импульсы самого числа. А вообще заинтересовало. 8) А вообще выше описали подобие на i2c.

Добавлено: Ср фев 13, 2008 13:11:10
Aheir
Еще можно порекомендовать автору помотреть принципы работы со сдвиговыми регистрами - загрузку данных. Здесь совершенно то же самое.

Добавлено: Ср фев 13, 2008 13:46:09
Артур
Суть соль в том, что я собираюсь этот код отправлять по радио через трансмиттер на ресивер (управление роботом или другим механизмом) и чтоб на другие посторонние сигналы контроллер на стороне приемника не реагировал (см рисунок)
Не могу понять как это можно сделать програмно
Спасибо!

Добавлено: Ср фев 13, 2008 15:46:21
ARV
почитай про код RC5 для телевизионных пультов и сделай аналогично... есть в сети и готовые программы для передачи-приема такого кода...

Добавлено: Ср фев 13, 2008 23:15:17
Aheir
Это называется манчестерский код (кодировка) - ключевые слова для поиска инфы.

Добавлено: Пн фев 18, 2008 16:22:36
Артур
Спасибо Всем! Буду разбираться и читать! По не ясностям буду спрашивать! Спасибо! :lol: