roboforum.ru

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

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




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

Зарегистрирован: 25 сен 2005, 20:26
Сообщения: 23
Как в WinAVR рабоать с UART?
:?:
В документации на WinAVR нашел:

Defines
#define  FILE   struct __file
#define  stdin   (__iob[0])
#define  stdout   (__iob[1])
#define  stderr   (__iob[2])
#define  EOF   (-1)
#define  putc(__c, __stream)   fputc(__c, __stream)
#define  putchar(__c)   fputc(__c, stdout)
#define  getc(__stream)   fgetc(__stream)
#define  getchar()   fgetc(stdin)


Functions
int  fclose (FILE *__stream)
int  vfprintf (FILE *__stream, const char *__fmt, va_list __ap)
int  vfprintf_P (FILE *__stream, const char *__fmt, va_list __ap)
int  fputc (int __c, FILE *__stream)
int  printf (const char *__fmt,...)
int  printf_P (const char *__fmt,...)
int  sprintf (char *__s, const char *__fmt,...)
int  sprintf_P (char *__s, const char *__fmt,...)
int  snprintf (char *__s, size_t __n, const char *__fmt,...)
int  snprintf_P (char *__s, size_t __n, const char *__fmt,...)
int  vsprintf (char *__s, const char *__fmt, va_list ap)
int  vsprintf_P (char *__s, const char *__fmt, va_list ap)
int  vsnprintf (char *__s, size_t __n, const char *__fmt, va_list ap)
int  vsnprintf_P (char *__s, size_t __n, const char *__fmt, va_list ap)
int  fprintf (FILE *__stream, const char *__fmt,...)
int  fprintf_P (FILE *__stream, const char *__fmt,...)
int  fputs (const char *__str, FILE *__stream)
int  fputs_P (const char *__str, FILE *__stream)
int  puts (const char *__str)
int  puts_P (const char *__str)
size_t  fwrite (const void *__ptr, size_t __size, size_t __nmemb, FILE *__stream)
int  fgetc (FILE *__stream)
int  ungetc (int __c, FILE *__stream)
char *  fgets (char *__str, int __size, FILE *__stream)
char *  gets (char *__str)
size_t  fread (void *__ptr, size_t __size, size_t __nmemb, FILE *__stream)
void  clearerr (FILE *__stream)
int  feof (FILE *__stream)
int  ferror (FILE *__stream)
int  vfscanf (FILE *__stream, const char *__fmt, va_list __ap)
int  vfscanf_P (FILE *__stream, const char *__fmt, va_list __ap)
int  fscanf (FILE *__stream, const char *__fmt,...)
int  fscanf_P (FILE *__stream, const char *__fmt,...)
int  scanf (const char *__fmt,...)
int  scanf_P (const char *__fmt,...)
int  sscanf (const char *__buf, const char *__fmt,...)
int  sscanf_P (const char *__buf, const char *__fmt,...)
FILE *  fdevopen (int(*put)(char), int(*get)(void), int opts __attribute__((unused)))

может кто-то знает, когда какая из этих функций используется? :?:


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

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
я написал о USART в задаче-упражнении 5  -  avr123.nm.ru/z5.htm

еще там посмотрите:
http://hubbard.engr.scu.edu/embedded/avr/avrlib


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

Зарегистрирован: 25 сен 2005, 20:26
Сообщения: 23
В задаче 5 рассказывается на прмере CodeVisionAVR.
В CodeVisionAVR программа получается раза в два больше чем на WinAVR.
Может есть какой-нибудь пример UART на WinAVR? :?:


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

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


Посмотрите на своем диске:
X:\WinAVR\doc\examples\largedemo

Если будут вопросы, или у вас старая версия WinAVR, пишите отвечю.

Анатолий.


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

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Олег писал(а):
Может есть какой-нибудь пример UART на WinAVR? :?:


Ну тады снова : ПАФТАРЯЮ

еще там посмотрите:
http://hubbard.engr.scu.edu/embedded/avr/avrlib


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

Зарегистрирован: 25 сен 2005, 20:26
Сообщения: 23
Цитата:
Посмотрите на своем диске:
X:\WinAVR\doc\examples\largedemo

Если будут вопросы, или у вас старая версия WinAVR, пишите отвечю.

Анатолий.


Наверное у меня старая версия WinAVR, у меня такого примера нет. Если не трудно выложите этот пример на форуме.


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

Зарегистрирован: 25 сен 2005, 20:26
Сообщения: 23
Цитата:
Ну тады снова : ПАФТАРЯЮ

еще там посмотрите:
http://hubbard.engr.scu.edu/embedded/avr/avrlib


Это интересная вещь, но я не могу разобраться как это все дело подключить к WinAVR? :?:


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

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Олег писал(а):
Цитата:
Посмотрите на своем диске:
X:\WinAVR\doc\examples\largedemo


у меня такого примера нет. Если не трудно выложите этот пример на форуме.


у меня он в папке - C:\WinAVR\examples\largedemo


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

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


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

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


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

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
AVR Stusio  (45 + 22  Мб)  atmel.ru  soft


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

Зарегистрирован: 25 сен 2005, 20:26
Сообщения: 23
Чем эта функция:
Код:
/*
* Send a C (NUL-terminated) string down the UART Tx.
*/
void printstr(const char *s)
{

 while (*s)
   {
     if (*s == '\n')
   putchr('\r');
     putchr(*s++);
   }
}

отличается от этой:
Код:
/*
* 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);
   }
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 31 окт 2006, 17:54 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
така же как предидущая, but the string is located in program memory, so "lpm" instructions are needed to fetch it.


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

Зарегистрирован: 11 авг 2006, 01:02
Сообщения: 69
Откуда: ----
Олег писал(а):
Цитата:
Посмотрите на своем диске:
X:\WinAVR\doc\examples\largedemo

Если будут вопросы, или у вас старая версия WinAVR, пишите отвечю.

Анатолий.


Наверное у меня старая версия WinAVR, у меня такого примера нет. Если не трудно выложите этот пример на форуме.


Я рекомендую вам установить новую версию WinAVR, которая вышла весной. Ваша версия avr-libc 1.2.x при работе с файлами использует днамическое вделение памяти (функция malloc) в функции открытия файлов, а это дополнительно  около 500 инструкций кода.  avr-libc 1.4.x не использует malloc для функций ввода вывода.

Для использовния нужно:

1. Фнукця которая выводит в поток 1 сомвол.
Код:
int
uart_putchar(char c, FILE *stream)
{
 if (c == '\n')
   uart_putchar('\r', stream);
 loop_until_bit_is_set(UCSRA, UDRE);
 UDR = c;

 return 0;
}


2. Далее в "main", для avr-libc 1.2:

Код:

    usart_init();

    fdevopen(&uart_putchar, NULL, 0);

   printf("\r\nHello\r\n");



для avr-libc 1.4:

Код:


FILE uart_str = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_W);

main()
{
   usart_init();

   stdout = &uart_str;

   printf("\r\nHello\r\n");
.....


Анатолий.

PS: Я ошибся, правильное название примера "stdiodemo".

PSS: Уточните вопрос, Вас интнрисует "работа с UART" или "работа с UART c помощю стандартных функций ввода вывода"?


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

Зарегистрирован: 25 сен 2005, 20:26
Сообщения: 23
Цитата:
PSS: Уточните вопрос, Вас интнрисует "работа с UART" или "работа с UART c помощю стандартных функций ввода вывода"?

Меня интересует вообще работа с UART.

А именно как вывести через UART константу находящуюся во Flash памяти и как получить через UART какое-нибудь слово, а потом сравнить его с имеющимися. :?:


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

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


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

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


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

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