roboforum.ru

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

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

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

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

Сообщение avr123.nm.ru » 28 окт 2007, 17:21

Dunkan писал(а):
Myp писал(а): мелкая строчка оказалась намного важнее для меня, чем огромные красные буквы


Сообщите какая. Я выделю.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение Dunkan » 28 окт 2007, 17:32

avr123.nm.ru писал(а):Сообщите какая. Я выделю.


дело не в одной конкретной строке. весь курс написан так, что тяжело читать
Аватара пользователя
Dunkan
 
Сообщения: 33
Зарегистрирован: 02 май 2007, 20:33
Откуда: Hamburg, Германия

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

Сообщение steel_monkey » 28 окт 2007, 18:19

Чесности ради замечу, что на эту книгу есть ссылка в "курсе", она выложена в архиве вместе с FAQ по курсу. Так что господину АВР большое человеческое спасибо :wink:
Аватара пользователя
steel_monkey
 
Сообщения: 346
Зарегистрирован: 14 июл 2007, 23:38
Откуда: SPb
прог. языки: немного албанский

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

Сообщение avr123.nm.ru » 28 окт 2007, 19:39

steel_monkey писал(а):качайте книжку "Pardue J.C programming for microcontrollers.2005" со страницы http://ihtik.lib.ru/dreamhost_electrote ... v2007.html (799 в списке), распечатывайте и читайте. Книга на английском, но написана очень толково, структурировано, с примерами.


Я давно уже (18 янв 2007) сделал топик об этой книге и указал где скачать У НАС
В БИБЛИОТЕКЕ форума.
viewtopic.php?f=19&t=2031
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение avr123.nm.ru » 28 окт 2007, 19:41

Dunkan писал(а):курс написан так, что тяжело читать


Добрые люди делают так - http://www.123avr.com
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение Dunkan » 28 окт 2007, 21:35

ну извиняйте, если что не так. я просто высказал своё мнение
Аватара пользователя
Dunkan
 
Сообщения: 33
Зарегистрирован: 02 май 2007, 20:33
Откуда: Hamburg, Германия

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

Сообщение Chip15 » 01 ноя 2007, 03:17

А есть чтонить подобное книги Pardue J.C programming for microcontrollers.2005 только на русском? А то я в англиском не силен.
Аватара пользователя
Chip15
 
Сообщения: 19
Зарегистрирован: 14 июн 2007, 09:39
Откуда: Благовещенск

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

Сообщение Master » 01 ноя 2007, 08:25

Есть вот такое
Шпак Ю.А. Программирование на языке С для AVR и PIC микроконтроллеров. МК-Пресс, Киев, 2006.djvu
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

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

Сообщение Myp » 01 ноя 2007, 10:39

Master писал(а):Есть вот такое
Шпак Ю.А. Программирование на языке С для AVR и PIC микроконтроллеров. МК-Пресс, Киев, 2006.djvu

лежит на фтп робофорума
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

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

Сообщение Co$s » 05 дек 2007, 00:29

Приветствую всех, господа!) Я смотрю в последнее время в этой части форума активность не бьет рекорды)), может быть мы это поправим, а заодно поможем мне советом)?

Господа прошу вас помочь в таком плане. Думаю, многим это будет также интересно. Дело в том, что многие из нас при более или менее сносном знании основ языка программирования на первых же порах сталкиваются с проблемой такого понятия как алгоритм... Знать, как работают операторы ветвления и циклов, дело одно, совершенно другое - это понять, как с помощью ограниченного количества команд воплотить все не дюжие амбиции начинающего “емббедера”... Теперь непосредственно задача: С помощью языка C (для мк AVR) реализовать программу опрашивающую некоторое количество кнопок и в зависимости от них соответствующе действовать. Программа разделена на несколько функций-подпрограмм (например: АЦП и его вывод на ЖКИ, измерение температуры и вывод ее на тот же ЖКИ) выполнение между которыми переключается последовательным нажатием одной из кнопок (MODE). Начавшись однажды, выбранная функция должна работать незавершаясь до следующего нажатия MODE. Что бы не загромождать пост лишним кодом, приведу только каркас одной из программ (компилятор CodeVision AVR 1.25.5):

Код: Выделить всёРазвернуть
#define BUTTON_PLUS     PINx.x
#define BUTTON_MINUS  PINx.x
#define BUTTON_MODE   PINx.x

char mode = 1;


interrupt [TIM0_OVF] void timer0_ovf_isr(void)  //Переполнение по timer_0 (3906Khz)
{
     if(!BUTTON_MODE)  //Если нажата клавиша MODE
    {
         mode ^= 1;    //При каждом нажатии клавиши, менять режим
    }
   
    if(mode == 0)
    {
        func_x();
    }   
       else     
      {
          func_y();
      }
}


void func_x(void)
{
     #asm("cli") //прерывания: выкл.

     while(BUTTON_MODE) //Делать пока не нажата клавиша смены режима
    { 
       ..... //Тело func_x
    }
   
    #asm("sei") //прерывания: вкл.
}


void func_y(void)
{
     #asm("cli") //прерывания: выкл.

     while(BUTTON_MODE) //Делать пока не нажата клавиша смены режима
    { 
       ..... //Тело func_y
    }

    #asm("sei") //прерывания: вкл.
}


Пример я это привел из-за сомнения в его оптимальности... У меня есть определенные сомнения насчет момента нажатия клавиши MODE – получится, что при нажатии функция должна закончить свое выполнение и в тот же момент перейти в тело функции timer0_ovf_isr, насколько оптимален такой подход? Может у кого-то есть свои идеи, которыми он может поделиться?
Второй момент который меня подтолкнул на написание этого поста – тот факт что приведенный выше пример являет собой наверное самый простой метод в работе с клавишами и их опросом. Но существуют ведь и различные вариации на эту тему, в одном из случаев у меня возник вот такой момент:
Имеется абсолютно такого же принципа программка, что и приведенная выше, за исключением работы одной из функций – в ней происходит управление работой ШИ-регулятора МК (реализуется попросту простейший “реобас”) и функция должна соответственным образом уметь изменять величину заполнения (не знаю насколько справедлив такой термин, но в известном всем курсе avr123.nm.ru это называется “величина ШИМ”) в зависимости от состояния присутствующих на внешних входах МК, кнопок “ПЛЮС” и “МИНУС”, то есть по сути цель функции инкрементировать \ декрементировать регистр OCR1xx. Так вот если применить выше представленный пример то работать это конечно же не будет – пока не нажата клавиша смены режима, ни на какие действия в отношении других кнопок, программа реагировать не будет... Естественно возникает желание сделать логическое “И” между клавишей MODE и двумя оставшимися... К сожалению все усугубляется отсутствием работающего девайса, на котором можно провести эксперименты и отладку, мною используется все известный симулятор ISIS из пакета Proteus (7.1 SP2) в котором подобная затея успехом не венчалась, имеются проблемы. Не вдаваясь в их суть, хочу опять таки спросить, если у кого-то свои идеи по этому поводу? (Я имею виду реализацию таких функций). Неужели придется вешать кнопку MODE на внешнее прерывание?
Тем, кто хотел бы мне помочь прилагаю ссылку на архив с проектом (схема в ISIS, проект в CVAVR) где собственно у меня и возникают сомнения насчет оптимальности используемого алгоритма (отмечаю сразу в ISIS все работает, причем “на глаз” даже вполне нормально, просто хочется узнать мнение по поводу рациональности того “бардака” что пришлось организовать...)
http://cp.people.overclockers.ru/cgi-bin/dl.pl?id=26068&filename=Device_X.rar
Co$s
 
Сообщения: 11
Зарегистрирован: 02 дек 2007, 16:28

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

Сообщение Strijar » 10 дек 2007, 13:06

Я бы советовал быть в обработчике прерывания как можно меньше времени.

1) Опрашивать кнопки из таймера - это как то не очень...
2) ...лучше уж аппаратные прерывания на них повесить.
3) Что-б не занимать прерывния долго, по его приходу взводите переменую "флаг", а потом в основном цикле обрабатываете и сбрасываете флаг.
Аватара пользователя
Strijar
 
Сообщения: 664
Зарегистрирован: 28 авг 2006, 17:09
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов

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

Сообщение shemmer » 23 дек 2007, 12:45

Добрый день.
Столкнулся с проблемой. разабатываю блок питания на МК atmega8.
Не могу реализовать режим стабилизации по току.
Пробовал вот так ток скачет даже на стабильной нагрузке +-200мА
да еще и скорость реакции медленная
Код: Выделить всёРазвернуть
 //Режим стабилизации по току
       /* if (Vdec>ZNACH_STAB) {   //если измеренное больше установленного
            if (OCR2!=0) {         //ограничение по границам байта
           
                 delay_ms(10);
                 OCR2--; };};    //уменьшить значение ШИМ
                             
         if (Vdec<ZNACH_STAB) {  //если измеренное меньше установленног
            if (OCR2!=255) {       //ограничение по границам байта
                   delay_ms(10);
                  OCR2++;}; };     //увеличить значение ШИМ 

Пробовал увеличить разрядность для более тонкой настройки, ток скачет вообще в пределах 1А
Код: Выделить всёРазвернуть
//использование для регулирования ШИМ значения меньше 1
//(увеличение разрядности
unsigned int reaction;

if (Vdec > ZNACH_STAB & reaction!=0)


reaction--;
else if (Vdec < ZNACH_STAB & reaction!=0xFFFF)

  reaction++;
   
OCR2 = reaction >> 2 ;};

Помогите пожалуйста.
Может кто-нибудь подскажет алгоритм ПИД регулирования на конкретном примере или применительно к моему случаю?
Последний раз редактировалось Vooon 23 дек 2007, 12:51, всего редактировалось 1 раз.
Причина: CODE
shemmer
 
Сообщения: 3
Зарегистрирован: 23 дек 2007, 11:09

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

Сообщение avr123.nm.ru » 23 дек 2007, 13:07

Вот посмотри:

http://model.exponenta.ru/z_tf_pid.html

http://avr123.nm.ru/07.htm внизу список апноутов - по ПИД номер на 200 и в апноутах по электроприводу применяется - это на 49х.

Простейший пид в AN532 у микрочип, посложней в AN699 - они на картинке на ПЕРВОЙ странице этого топика.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение shemmer » 23 дек 2007, 14:02

Ну а вприведенном мною коде можно ли как-нибудь добиться стабильности? Или только использование ПИД?
Я просто никогда не сталкивался с ПИД регулированием. И не очень понимаю как его программно реализовать
shemmer
 
Сообщения: 3
Зарегистрирован: 23 дек 2007, 11:09

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

Сообщение Vooon » 23 дек 2007, 14:11

посмотрите appnote AVR221
там и реализация алгоритма на Си (и несложно переписать в класс С++)
под IAR но легко переписывается под другие компиляторы, почти все стандартный си.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Пред.След.

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

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

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

cron