1. Прочтите про UART в даташите на ваш контроллер. (Если тяжко читать на англиском прочитийте здесь на русском, http://www.gaw.ru/html.cgi/txt/doc/micros/avr/arh128/index.htm - они назвали UART - УСАПП.)
3.а. Изучите и попробуйте использовать в своей программе билиотеку 'usart.h/usart.c' (или 'usart2.h/usart2.c' - я не знаю чем они различаються), из avrlib. http://hubbard.engr.scu.edu/embedded/avr/avrlib/
3.б. Изучите пример "stdiodemo" из avr-libc, чтобы узнать как работать с последовательным протом используя стандартные функции ввода/вывода языка С. Как я уже рекомендовал, установите последнию версию WinAVR. http://sourceforge.net/projects/winavr
C удовольствием отвечю на конкретные вопросы по любому из этих пунктов, ..... кроме 3.а
Олег писал(а):
А именно как вывести через UART константу находящуюся во Flash памяти и как получить через UART какое-нибудь слово, а потом сравнить его с имеющимися.
"Разделяй и властвуй!" - Александр Македонский.
Если вы не знаете как отправать по UART константу из флеша.... скопируйте ее в RAM (strcpy_P - Program Space String Utilities) и отравте ее из RAM-а.
получить через UART какое-нибудь слово (точнее строку), а потом сравнить его с имеющимися (strcmp).
/* * Send character c down the UART Tx, wait until tx holding register * is empty. */ void putchr(char c) {
loop_until_bit_is_set(UCSRA, UDRE); UDR = c; }
/* * Same as above, but the string is located in program memory, * so "lpm" instructions are needed to fetch it. */ void printstr_p(const char *s) { char c;
for (c = pgm_read_byte(s); c; ++s, c = pgm_read_byte(s)) { if (c == '\n') putchr('\r'); putchr(c); } }
int main (void) { init(); while(1) { printstr_p(ATZ); } return(1); }
void init(void) { // установка скорости UART UBRRH = 0x00; UBRRL = (F_CPU / (16 * baud)) - 1; // включение приемника и передатчика // и разрешение прерывания по окончании приема UCSRB = (1<<RXEN) | (1<<TXEN) | (1<<RXCIE); // установка формата кадров: 8 бит UCSRC = /*/*для мега8*/(1<<URSEL) |*/ (1<<UCSZ1) | (1<<UCSZ0);*/ // разрешение глобальных прерываний sei(); }
В CVAVR посмотрел. Там все как и у меня. Еденственное различее между мега и тини, это бит URSEL в регистре UCSRC. У меня он взят в комментарии. С железом все впорядке, такая же программа сделанная в CVAVR работает, единственное что весит намного больше.
Написал две программы в WinAVR и CVAVR. Обе программы выдают в порт контроллера команду ATZ. Контроллер подключен к компу через MAX232.
Данные с контроллера с программой на WinAVR видятся на терминале CVAVR на HyperTerminal нет, а с программой написанной на CVAVR наоборот на HyperTerminal видятся, а на терминале CVAVR нет. И то в обоих случаях видится не команда ATZ, а какойто нобор последовательных символов.
Зарегистрирован: 06 ноя 2005, 04:18 Сообщения: 14195 Откуда: Москва
"чепуха" обычнопринимается при ошибке в скорости передачи.
Зашейте в МК прогу для грубой проверки частоты на которой он работает - вывод меандра частоту которого вы можете померить тестером или через звуковой вход ПК.
У меня таже проблема. Есть тестовый проектик который просто передает данные через usart, контроллер tiny2313. В модели Proteus в место "ОК" выдает АА на виртуальном терминале. Затем этот же исходник откомпилировал для Atmega8 все заработало как надо. Тут я решил что модель tiny2313 глючит и создал такой же проект на CVAVR но оно заработало. Подскажите пожалуйста может что нибудь надо настраивать в WinAVR. Проекты в приложении.
У меня таже проблема. Есть тестовый проектик который просто передает данные через usart, контроллер tiny2313. В модели Proteus в место "ОК" выдает АА на виртуальном терминале. Затем этот же исходник откомпилировал для Atmega8 все заработало как надо. Тут я решил что модель tiny2313 глючит и создал такой же проект на CVAVR но оно заработало. Подскажите пожалуйста может что нибудь надо настраивать в WinAVR. Проекты в приложении.
У вас в протеусе был запрограммирован фьюз CLKDIV8, соответственно эмулировалась частота в восемь раз меньше
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения