zeycon

Програмный Uart

5 сообщений в этой теме

zeycon    0

поделитесь пожалуйста кодом под CVAVR для атмеги

нужен только передатчик

весь инет поискал ничего толкового немогу найти :(

А вы поищите тут!!! Точно помню поднимал такой вопрос Миша... wowa.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mazzi    13

Только на передачу? Ты и сам легко сделаешь.

Передача одного байта с одним стоповым битом

i=10; // это счётчик отправленных бит(стартовый бит+8 бит данных+стоповый бит)
pin_TX = 0; // это отправляем стартовый бит
start_timer(dlit); // запускаем аппаратный таймер на длительность передачи одного бита

// а это функция-обработчик прерывания от аппаратного таймера
void handler_timer(void) interrupt {
   i--; // уменьшаем счётчик бит
   if (i>1) {
      pin_TX = next_bit();// выводим очередной бит
      start_timer(dlit);// перезапускаем аппаратный таймер для выдержки длительностьвывода 1-го бита
   }else if (i == 1){
      pin_TX = 1; // выводим стоп-бит
      start_timer(dlit);// перезапускаем аппаратный таймер для выдержки длительность вывода 1-го бита
   }
}

Вот и всё. Нет ничего страшного.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
zeycon    0
А вы поищите тут!!! Точно помню поднимал такой вопрос Миша... wowa.

Да я тоже точно помню что ктото поднимал такую тему и даже код софтового юарта был

но сколько неискал толком немогу найти :(

Вот и всё. Нет ничего страшного

Спасибо

а сколько времени занимает один бит при скорости 9600бод ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
zeycon    0

написал программу передатчика по инструкции mazzi

все отлично работает даже без использования таймеров

но вот есть одна проблема :(

програмный ЮАРТ мне был нужен для связи МК с МК через ИК

потомучто для ИК связи надо заполнять нули частотой 32КГц

так вот подключил для теста ИК приемник к СОМ порту через МАХ232

и с МК через ИК светодиод отпровляю данные

все работает терминал показывает принятые данные

но проблема в том что неполучаеться непрерывно отправить данные,

после примерно 300 символов терминал перестает принимать данные

и продолжает прием только после некоторой задержки передатчика

и опять останов после 300 символов (ну примерно 250-350 сиволов за раз)

а если подключаю тот же програмный передатчик напрямую к МАХ232 то

передача идет без остановок :(

может кто знает в чем может быть причина ?

пробовал с разными ИК приемниками но результат тот же

Изменено пользователем zeycon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас