roboforum.ru

Технический форум по робототехнике.

МикроКонтроллер AVR начинающим - общие вопросы

Re: МикроКонтроллеры начинающим - общие вопросы

realsystem » 17 фев 2009, 22:56

Всё, разобрался, в коде проблемка была. Теперь все прекрасно разгоняется и тормозится :)

Re: МикроКонтроллеры начинающим - общие вопросы

W0LFX » 19 фев 2009, 08:15

Название Часики реального времени
Язык Си
Компилятор CVAVR
CPU ATmega16

Хочу сделать часы реального времени по примерам из cvavr (апноут123). Чтобы на терминал в proteus выводились. И чет не получается! Посмотрите исходник, мужики, кто знает подскажите, как правильно.
Вложения
test.rar
(2.35 КиБ) Скачиваний: 17

Re: МикроКонтроллеры начинающим - общие вопросы

realsystem » 19 фев 2009, 15:07

Выкладывать надо весь проект для компилятора и весь проект для протеуса.

Re: МикроКонтроллеры начинающим - общие вопросы

realsystem » 20 фев 2009, 17:38

Концептуальный вопрос: где лучше всего обрабатывать прием команд из USART'а? Я делаю пока в основном бесконечном цикле(в main'е), как правильно?

Re: МикроКонтроллеры начинающим - общие вопросы

blindman » 20 фев 2009, 17:49

Лучше для кого? Или для чего?

Я делаю по прерываниям, с буферизацией. И 2 функции - uart_available() и uart_receive(). Первая возвращает количество байт в буфере приемника, вторая - очередной байт из буфера. В принципе и разбор команд можно делать в прерывании (только не все сразу, а после получения каждого байта, например конечным автоматом), а основная программа будет получать уже разобранную команду.

Re: МикроКонтроллеры начинающим - общие вопросы

realsystem » 20 фев 2009, 18:09

blindman писал(а):Лучше для кого? Или для чего?

Лучше "вообще" :)
blindman писал(а):Я делаю по прерываниям, с буферизацией.

У меня обработка опросом:
//usart polling, get command and analyse
int usart_polling(void)
{
if (getchar()== COMMAND)
{
....
Эта функция вытаскивает по символу и обрабатывает. Сама она вызывается в main'е в бесконечном цикле. Вот хочу знать насколько это критично. Можно ли так оставить?

А вы говорите в прерывании, а в каком? По концу приема которое?

Re: МикроКонтроллеры начинающим - общие вопросы

blindman » 20 фев 2009, 18:18

Да, по концу приема. Лучше "вообще" - именно по прерываниям. Лучше в твоем случае - не скажу, зависит от задачи, от того чем занят процессор и т.п. Вполне возможно, что для тебя будет лучше то, что проще реализовать.

Re: МикроКонтроллеры начинающим - общие вопросы

realsystem » 20 фев 2009, 18:33

Ну пока проц занят только приемом команд от компа и в зависимости от команды - меняет ШИМ на моторе и направление вращения. Будет занят стандартными вещами: ШИМ на мотор, управление сервой и анализ ИК датчиков.
Последний раз редактировалось realsystem 20 фев 2009, 18:35, всего редактировалось 1 раз.

Re: МикроКонтроллеры начинающим - общие вопросы

RoboTok » 20 фев 2009, 18:34

А у меня стоит RTOS и одна из задач ожидает прихода символа по UART.
И когда символ приходит вызывает прерывание, а уже в прерывании символ записывается в буфер и посылается событие задачи.
Задача выходит из ожидания и собирает символы в команду.

При такой работе обработчика команд не возникает пауз во время приёма или передачи и остальные задачи работают без рывков...

Самый яркий пример эффективности такого способа - это вывод списка команд на экран размеров в 2кБ.

Раньше весь МК занимался передачей. Если буферизировать вывод, то всё равно не будеш же делать буфер в 2кБ.

А с RTOS список выводится в фоне работы других задач и МК 90% свободен :good:

Re: МикроКонтроллеры начинающим - общие вопросы

realsystem » 20 фев 2009, 18:37

А какая РТОС? На каком проце?

Re: МикроКонтроллеры начинающим - общие вопросы

RoboTok » 20 фев 2009, 18:38

RTOS от Keil-а.

А процессор LPC2131.
Но у АВР-ок тоже есть ОС-ки свои...

Re: МикроКонтроллеры начинающим - общие вопросы

realsystem » 20 фев 2009, 18:46

Понятно, я кстати загнался по поводу того что сказал выше. Прием с компа я делаю в буферы по прерыванию (из курса взял), а вот опросом (функцией выше которая) вытаскиваю команды из буфера.

Re: МикроКонтроллеры начинающим - общие вопросы

blindman » 20 фев 2009, 21:42

RoboTok писал(а):А с RTOS список выводится в фоне работы других задач и МК 90% свободен :good:


RTOS для этого не нужна.

Re: МикроКонтроллеры начинающим - общие вопросы

realsystem » 20 фев 2009, 22:49

Ну да, в принципе просто ОС нужна мультизадачная

Re: МикроКонтроллеры начинающим - общие вопросы

RoboTok » 20 фев 2009, 22:59

blindman
И как можно вывести в UART строку текста длинной больше буфера отправки символов в UART без задержки других задач ?


Rambler\'s Top100 Mail.ru counter