roboforum.ru

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

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

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

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

Сообщение realsystem » 17 фев 2009, 22:56

Всё, разобрался, в коде проблемка была. Теперь все прекрасно разгоняется и тормозится :)
realsystem
 
Сообщения: 629
Зарегистрирован: 01 фев 2009, 01:32
Откуда: Саратов
Skype: realsystem_stas
прог. языки: C, Bash, Perl
ФИО: Станислав

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

Сообщение W0LFX » 19 фев 2009, 08:15

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

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

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

Сообщение realsystem » 19 фев 2009, 15:07

Выкладывать надо весь проект для компилятора и весь проект для протеуса.
realsystem
 
Сообщения: 629
Зарегистрирован: 01 фев 2009, 01:32
Откуда: Саратов
Skype: realsystem_stas
прог. языки: C, Bash, Perl
ФИО: Станислав

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

Сообщение realsystem » 20 фев 2009, 17:38

Концептуальный вопрос: где лучше всего обрабатывать прием команд из USART'а? Я делаю пока в основном бесконечном цикле(в main'е), как правильно?
realsystem
 
Сообщения: 629
Зарегистрирован: 01 фев 2009, 01:32
Откуда: Саратов
Skype: realsystem_stas
прог. языки: C, Bash, Perl
ФИО: Станислав

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

Сообщение blindman » 20 фев 2009, 17:49

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

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

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

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

Сообщение realsystem » 20 фев 2009, 18:09

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

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

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

А вы говорите в прерывании, а в каком? По концу приема которое?
realsystem
 
Сообщения: 629
Зарегистрирован: 01 фев 2009, 01:32
Откуда: Саратов
Skype: realsystem_stas
прог. языки: C, Bash, Perl
ФИО: Станислав

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

Сообщение blindman » 20 фев 2009, 18:18

Да, по концу приема. Лучше "вообще" - именно по прерываниям. Лучше в твоем случае - не скажу, зависит от задачи, от того чем занят процессор и т.п. Вполне возможно, что для тебя будет лучше то, что проще реализовать.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

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

Сообщение realsystem » 20 фев 2009, 18:33

Ну пока проц занят только приемом команд от компа и в зависимости от команды - меняет ШИМ на моторе и направление вращения. Будет занят стандартными вещами: ШИМ на мотор, управление сервой и анализ ИК датчиков.
Последний раз редактировалось realsystem 20 фев 2009, 18:35, всего редактировалось 1 раз.
realsystem
 
Сообщения: 629
Зарегистрирован: 01 фев 2009, 01:32
Откуда: Саратов
Skype: realsystem_stas
прог. языки: C, Bash, Perl
ФИО: Станислав

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

Сообщение RoboTok » 20 фев 2009, 18:34

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

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

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

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

А с RTOS список выводится в фоне работы других задач и МК 90% свободен :good:
Аватара пользователя
RoboTok
 
Сообщения: 1060
Зарегистрирован: 04 фев 2008, 13:18
Откуда: Москва
прог. языки: PHP

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

Сообщение realsystem » 20 фев 2009, 18:37

А какая РТОС? На каком проце?
realsystem
 
Сообщения: 629
Зарегистрирован: 01 фев 2009, 01:32
Откуда: Саратов
Skype: realsystem_stas
прог. языки: C, Bash, Perl
ФИО: Станислав

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

Сообщение RoboTok » 20 фев 2009, 18:38

RTOS от Keil-а.

А процессор LPC2131.
Но у АВР-ок тоже есть ОС-ки свои...
Аватара пользователя
RoboTok
 
Сообщения: 1060
Зарегистрирован: 04 фев 2008, 13:18
Откуда: Москва
прог. языки: PHP

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

Сообщение realsystem » 20 фев 2009, 18:46

Понятно, я кстати загнался по поводу того что сказал выше. Прием с компа я делаю в буферы по прерыванию (из курса взял), а вот опросом (функцией выше которая) вытаскиваю команды из буфера.
realsystem
 
Сообщения: 629
Зарегистрирован: 01 фев 2009, 01:32
Откуда: Саратов
Skype: realsystem_stas
прог. языки: C, Bash, Perl
ФИО: Станислав

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

Сообщение blindman » 20 фев 2009, 21:42

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


RTOS для этого не нужна.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

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

Сообщение realsystem » 20 фев 2009, 22:49

Ну да, в принципе просто ОС нужна мультизадачная
realsystem
 
Сообщения: 629
Зарегистрирован: 01 фев 2009, 01:32
Откуда: Саратов
Skype: realsystem_stas
прог. языки: C, Bash, Perl
ФИО: Станислав

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

Сообщение RoboTok » 20 фев 2009, 22:59

blindman
И как можно вывести в UART строку текста длинной больше буфера отправки символов в UART без задержки других задач ?
Аватара пользователя
RoboTok
 
Сообщения: 1060
Зарегистрирован: 04 фев 2008, 13:18
Откуда: Москва
прог. языки: PHP

Пред.След.

Вернуться в Микроконтроллеры

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

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