реклама на сайте
подробности

 
 
> Меню для управления через UART, на СИ
V000va
сообщение Jan 23 2012, 22:10
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 87
Регистрация: 23-06-08
Пользователь №: 38 503



Цитата
Лирическое отступление
Поиском пользовался, фак читал. Нашел пару похожих топиков, но не то.
И все же...


День добрый, есть AVR-ка, хотелось бы управлять через UART внутренним АЦП (on/off), ШИМ (менять значения), on/off некоторых пинов контроллера.

Как лучше всего организовать/построить подобное меню? Опыт программирования у меня не большой, посему и спрашиваю. 05.gif

Подскажите в какую сторону копать, или простой примерчик для начинающих.

ЗЫ Планирую использовать прерывание для АЦП.
ЗЗЫ Подойдет ли для этого обычное case ветвление?

Сообщение отредактировал V000va - Jan 23 2012, 22:15
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
V000va
сообщение Jan 24 2012, 16:00
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 87
Регистрация: 23-06-08
Пользователь №: 38 503



Видимо я не очень ясно изложил чего хотел. Да в общем-то не так уж и много, хочу управлять ШИМ-ом через UART и считывать данные с АЦП. Нужно какое-то меню, чтоб этим всем управлять. Вот я и советуюсь, какое направление выбрать.
Планирую делать меню через case. С АЦП понятно - дал команду- пошло преобразование, отбразилось в терминале. Но не знаю как вводить данные в OCR0 для управления ШИМ, а точнее как осуществить загрузку в OCR0. Загрузить не какую-то предустановленную величину из меню, а любую из доступного диапазона.
На счет case я не уверен в общем-то, возможны варианты, покритикуйте если что.



PS Ну а тем кому лениво/уныло читать, могут и не читать, дело-то добровольное, они либо родились уже с программированием на СИ в голове и круче Денниса Ритчи, либо забыли как сами разбирались и учились.

Код
while (1)
      {
      x=getchar();    
      delay_ms(200);
      switch (x) {
      case 'a': printf("\rRun ADC \r");  
      break;
      case 'b': printf("\rSetup PWM \r");
      break;
      default: printf("\rError \r");
      break;  
        };
      };


Сообщение отредактировал V000va - Jan 24 2012, 16:31
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jan 24 2012, 17:05
Сообщение #3


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Как правило, для одного пункта меню нужно передать несколько байт, например, для шим надо передать пакет-сообщение, содержащее команду ШИМ и один-два байта заполнения шим.

Но как определить начало сообщения? Надо разработать структуру пакета. Лучше начать с пакета фиксированной длины. Итак, пакет должен состоять из заголовка, команды, данных и контрольной суммы. Предлагаю такой формат: 0x0B,0x77,CMD, data1,data2, CRC.

Здесь первые два байта - заголовок, CMD - байт команды, обычно одного байта достаточно, затем data1,data2 - два байта данных, затем два байта контрольной суммы.

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

А то, что вы написали, вполне подойдёт для разбора принятой команды.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- V000va   Меню для управления через UART   Jan 23 2012, 22:10
- - _Артём_   Цитата(V000va @ Jan 24 2012, 00:10) ЗЫ Пл...   Jan 23 2012, 22:49
- - _Ivana   В зависимости от того, на чем вы пишете (С или asm...   Jan 24 2012, 09:19
- - _Pasha   "Сферические" задачи даются студентам дл...   Jan 24 2012, 13:05
- - _Ivana   Непонятно, что именно вам непонятно в данных ответ...   Jan 24 2012, 17:03
- - V000va   _Ivana и =GM= Спасибо, вот это уже что-то! Воз...   Jan 24 2012, 18:01
|- - demiurg_spb   Если есть желание развивать свой проект, то совету...   Jan 24 2012, 18:50
|- - _Pasha   Цитата(demiurg_spb @ Jan 24 2012, 22:50) ...   Jan 25 2012, 08:12
- - XVR   Вопрос к ТС: вы своим устройством собираетесь упра...   Jan 25 2012, 07:51
|- - V000va   Цитата(XVR @ Jan 25 2012, 10:51) Вопрос к...   Jan 25 2012, 14:58
|- - _Артём_   Цитата(V000va @ Jan 25 2012, 16:58) Пясни...   Jan 25 2012, 15:24
|- - XVR   Цитата(V000va @ Jan 25 2012, 18:58) Управ...   Jan 25 2012, 18:34
- - Dog Pawlowa   Цитата(V000va @ Jan 24 2012, 02:10) ЗЗЫ П...   Jan 25 2012, 08:16
- - birden   ТС, Вам правильно сказали: делайте все поэтапно. С...   Jan 26 2012, 01:41


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th June 2025 - 01:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016