roboforum.ru

Технический форум по робототехнике.
Текущее время: 03 дек 2024, 17:50

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: 31 окт 2006, 23:29 
Не в сети

Зарегистрирован: 11 авг 2006, 01:02
Сообщения: 69
Откуда: ----
Олег писал(а):
Меня интересует вообще работа с UART.


1. Прочтите про UART в даташите на ваш контроллер. (Если тяжко читать на англиском прочитийте здесь на русском,  http://www.gaw.ru/html.cgi/txt/doc/micros/avr/arh128/index.htm - они назвали UART - УСАПП.)

2. Изучите код из примера "AVR306: Using the AVR UART in C", попутно перечитывая пункт 1.
http://www.atmel.com/dyn/products/app_n ... ily_id=607

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).

Анатолий.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 01 ноя 2006, 15:58 
Не в сети

Зарегистрирован: 25 сен 2005, 20:26
Сообщения: 23
Напсал программу для выдачи в порт команды "ATZ". На ATmega8 работает, а на ATtiny2313 нехочет. Может кто-нибудь посмотрит и скажет почему? :?:
Код:

#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/pgmspace.h>

#define baud 9600UL
#define F_CPU 1843200UL

const char ATZ[] PROGMEM = "ATZ\n";

void init (void);
void printstr_p(const char *s);
void putchr(char c);

/*
* 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();   
}



Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 01 ноя 2006, 19:34 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
мастером в CVAVR сделайте настройку ВАРТА для обоих контроллеров и посмотрите в чем разница.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 01 ноя 2006, 19:47 
Не в сети

Зарегистрирован: 25 сен 2005, 20:26
Сообщения: 23
В CVAVR посмотрел. Там все как и у меня.
Еденственное различее между мега и тини, это бит URSEL в регистре UCSRC. У меня он взят в комментарии.
С железом все впорядке, такая же программа сделанная в CVAVR работает, единственное что весит намного больше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 01 ноя 2006, 23:01 
Не в сети

Зарегистрирован: 25 сен 2005, 20:26
Сообщения: 23
Что за ерунда? :?:

Написал две программы в WinAVR и CVAVR. Обе программы выдают в порт контроллера команду ATZ.
Контроллер подключен к компу через MAX232.

Данные с контроллера с программой на WinAVR видятся на терминале CVAVR на HyperTerminal нет, а с программой написанной на CVAVR наоборот на HyperTerminal видятся, а на терминале CVAVR нет.
И то в обоих случаях видится не команда ATZ, а какойто нобор последовательных символов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 02 ноя 2006, 01:15 
Не в сети

Зарегистрирован: 11 авг 2006, 01:02
Сообщения: 69
Откуда: ----
Олег писал(а):
Что за ерунда? :?:

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


А ATtiny2313 точно работает от кварца 1,84 Мгц, а нет от встроенного генератора?

Анатолий.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 02 ноя 2006, 12:37 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
"чепуха" обычнопринимается при ошибке в скорости передачи.  

Зашейте в МК прогу для грубой проверки частоты на которой он работает - вывод меандра частоту которого вы можете померить тестером или через звуковой вход ПК.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 02 ноя 2006, 12:47 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
зачем брать МК которые не поддерживаются симуляторами VMLAB и PROTEUS - в которых можно не только отладить но и померить многое и залогить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 02 ноя 2006, 12:58 
Не в сети

Зарегистрирован: 25 сен 2005, 20:26
Сообщения: 23
Точно МК от внутреннего генератора работал, перепрошил фьюсы все заработало.

Теперь осталось написать программу для према строки через UART, и сравнивать ее с константой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 02 ноя 2006, 12:59 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
ТЕМ БОЛЕЕ !!!  если вы начинающий !

Зачем УМЫШЛЕННО !!!  лишать себя великолепных
и доступных средств отладки ?????


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 02 ноя 2006, 13:01 
Не в сети

Зарегистрирован: 25 сен 2005, 20:26
Сообщения: 23
Просто я уже купил ATTiny2313, чтобы купить новы МК надо в другой город на радиорынок ехать, незнаю когда туда попаду.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART и WinAVR
СообщениеДобавлено: 12 мар 2010, 12:44 
Не в сети

Зарегистрирован: 12 мар 2010, 12:26
Сообщения: 1
У меня таже проблема.
Есть тестовый проектик который просто передает данные через usart, контроллер tiny2313. В модели Proteus в место "ОК" выдает АА на виртуальном терминале. Затем этот же исходник откомпилировал для Atmega8 все заработало как надо. Тут я решил что модель tiny2313 глючит и создал такой же проект на CVAVR но оно заработало.
Подскажите пожалуйста может что нибудь надо настраивать в WinAVR.
Проекты в приложении.


Вложения:
usart.rar [69.52 КиБ]
Скачиваний: 5
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART и WinAVR
СообщениеДобавлено: 15 апр 2011, 11:30 
Не в сети

Зарегистрирован: 15 апр 2011, 11:17
Сообщения: 1
xoz писал(а):
У меня таже проблема.
Есть тестовый проектик который просто передает данные через usart, контроллер tiny2313. В модели Proteus в место "ОК" выдает АА на виртуальном терминале. Затем этот же исходник откомпилировал для Atmega8 все заработало как надо. Тут я решил что модель tiny2313 глючит и создал такой же проект на CVAVR но оно заработало.
Подскажите пожалуйста может что нибудь надо настраивать в WinAVR.
Проекты в приложении.


У вас в протеусе был запрограммирован фьюз CLKDIV8, соответственно эмулировалась частота в восемь раз меньше


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO