Программирование контроллеров

EagleB3

Если цель = освоить AVR, то очень советую вооружиться следующими вещами:
CodeVisionAVR C compiler
Proteus VSM
Программатор (если есть порт LPT) = Altera ByteBlaster или STK 200/300 (или любой из описанных здесь). Программаторы есть разные, некоторые имеют внутри себя микроконтроллер, который должен быть запрограммирован. Некоторые - только провода. STK200/300 - буферную микросхему с Z-состоянием выходов; программирование закончилось - она “лапки поджала” и нет ее (не оказывает никакого влияния на микроконтроллер. И порт компьютера защищает за одно). Рисунков печатной платы для него в интернете множество. Один мой знакомый его вообще навесным монтажом собрал, но это уже маньячество.
Глубокое IMHO, к которому очень советую прислушаться: Любой программатор, не имеющий нормального источника питания (хотя бы от разъема USB ), должен комплектоваться текстами молитв и схемами удара в шаманский бубен. Если их не приложено - игнрировать эту схему сразу.
Книги:
Евстифеев “Микроконтроллеры семейств Tiny и Mega фирмы ATMEL” (по сути перевод даташитов; ничего лишнего - тем и ценен).
Голубцов “Микроконтроллеры AVR: от простого к сложному” (вот здесь будет подробно как начать - как чем скомпилировать программу, как подключить программатор и микроконтроллер к программатору, и т.п.).
Лебедев “CodeVision AVR Пособие для начинающих” (пособия я там не увидел; КМК, чисто перевод родного мануала. Тоже хорошо…).
Обе книги есть в сети в формате djvu как минимум.

Какой микроконтроллер взять - а это зависит от задач. В частности, от требуемого количества каналов АЦП. “Выдать 3 вольта” - либо будет выдано напряжение питания (низковольтные версии с буквой “V” работают при минимальном напряжении питания 2,8В), либо делать ШИМ на одном из выходов и строить на нем простейший ЦАП (конденсатор повесить…).
Пока в постановке задачи описан почти классический сигнализатор разряда борта. Здесь надо что-нибудь маленькое и легкое, типа ATiny24V (или даже ATiny45). Если это и впрямь так - могу дать готовый проект (с исходниками в CVAVR и моделью в Proteus). Уже дошел до изготовления платы - да мне готовый китайский подарили.

Вопросы что, как, где взять - пишите в личку.

P.S. Вот этот программатор посложнее, и требует запрограммированную ATMEGA8, но зато:

  1. Это USB-программатор;
  2. Он совместим с AVRISP/STK500, его поддерживает AStudio. И CVAVR тоже.
  3. Есть прошивка, которая позволяет получать отладочную информацию прямо по шинам программирования (и, вдобавок, подстраивает версию его прошивки до требуемой средой AStudio).
nigyl

так…
ну программатор мне этот по схеме понравился…к тому же сом… avr.nikolaew.org/progr.htm
и к меге8 подходит… что вы по нему скажите?

www.platan.ru/cgi-bin/…/id=87649159&group=50236

как вам вот эта макетная плата?,…я так понял она вместе с программатором?.. если да то будет ли работать с мега8?

EagleB3

Это Вы должны у своего COM-порта спросить. Если он выдает напряжения и токи по стандарту RS232 (по стандарту положено +10В и -10В) - работать будет. У людей же работает…
А если он недодает - то на сколько недодает? Сколько останется после деления напополам?
А что Вы будете делать, если не заработает?
Да, можно сэкономить на одной микросхеме и потом потратить кучу времени на выяснение причин возникших проблем. Допустим, Вы криво прошьете фузы контроллера и он уйдет в себя. А Вы и знать не будете на что грешить - то ли на программу, то ли на контроллер, то ли на программатор.
Я уж не говорю про то, что программатором по той схеме Вы “ушедший в себя” микроконтроллер не поднимете. Для этого требуется тактирование от программатора.

Если есть такая тяга именно к СOM-порту, возьмите за основу Мастеркито’овскую схему (или прямо готовый набор) nm9211.

Я сам начинал с COM-портового программатора (это был PonyProg). Где-то полгода я им пользовался. Потом меня достала непредсказуемость результатов (зависящая даже от того, проходит ли шлейф программатора вдоль проводов питания отлаживаемой схемы). Я собрал себе Altera и уже лет 7 он мне служит верой и правдой. Завел в него питание от БП компьютера, и теперь питаю от программатора отлаживаемые устройства на +5 и на +12 вольт.

Про плату: все зависит от Ваших целей и финансов. Нет на ней программатора. Только разъем для подключения программатора, на который разведены MISO/MOSI/SCK/Reset. В той макетнице одна радость - MAX232 на плате (если это он, конечно; фото мелковато).
Если цель - разовая конструкция, то собрал, отрезал ножовкой лишнее и убрал в корпус. И купил новую.

Но я предпочел бы (и реально предпочел) вот такую макетницу. Только постарайтесь найти ее не в ЧиД-е. Ее реальная цена меньше $10, насколько я помню. MAX232 в DIP-корпусе стоит примерно 70 рублей; +4 конденсатора в обвязку, + хвост от старой COM-портовой мышки. У меня в хозяйстве таких плат две, на одной из них MAX-232 с обвязкой был собран на краю платы и не разбирался. А потом я себе спаял малогабаритный съемный модуль для этой платы.
Я вот здесь выкладывал фотографии своего “рабочего места”. На правом краю платы вертикальный модуль - это он.
У такой макетницы только один недостаток: если макетируется устройство с очень слаботочными выходами, то надо использовать хорошие перемычки (из комплекта с макетницей или типа них, луженые или посеребренные). Если долго не пересобирать макет (основной контроллер для макетирования у меня ATMEGA8535, контроллеры не снимались с макетниц уже по паре лет; отлаживаюсь и затем портирую программу на другой камень), то окислы на ножках или перемычках (огрызки медного UTP) могут сыграть злую шутку. Микротоки их не пробивают. 2…5 mA индикаторного светодиода пролезут без проблем, а вот 5…15uA могут и потеряться.

nigyl

так… теперь я вообще запутался…
1…Мастеркито’овскую схему (или прямо готовый набор) nm9211. - сайт не открывается.
2. Макетница мне понравилась…
3. “Правда, на фото не USBшный программатор, а его “старший брат” - STK200/300. USBшный практически такой же - и по размерам, и по функционалу.” - вы писали…
Если можно дайте схему вашего usbшного программатора…и побольше фото… и будет то что я просил по железу… . И если дадите …скажите на каком языке программируете…Codevision пользуетесь?

www.platan.ru/cgi-bin/…/id=8746&group=52604 на платане макетница вроде таже… цена вдвое дешевле

EagleB3
nigyl:

так… теперь я вообще запутался…

Ничего, разберемся…

nigyl:

1…Мастеркито’овскую схему (или прямо готовый набор) nm9211. - сайт не открывается.

Либо зайдите на сайт мастеркит и найдите в ихнем каталоге, либо прямо поиском “nm9211” в Гугле.

nigyl:
  1. Макетница мне понравилась…
    www.platan.ru/cgi-bin/…/id=8746&group=52604 на платане макетница вроде таже… цена вдвое дешевле

Она и есть. С набором перемычек. И цена примерно нормальная. Усиленно рекомендую. У тех, что использую я (и они же на фото “Платана” - пластмасса с отливом в желтизну, и прорисованы синие-красные линии шин. Есть похожие - но не такие: у них пластик цвета разведенного молока, белый, “прозрачноватый”. Про них ничего сказать не могу.
Такие макетницы можно стыковать между собой - на торцах сделаны “ласточкины хвосты”.
На той же странице есть описание и других макетниц (в том числе состыкованных и собранных на общем алюминиевом основании). Но это уже сами решайте - что нужно, какой площади. Мне всегда хватало двух моих макетниц.

nigyl:

Если можно дайте схему вашего usbшного программатора…и побольше фото…

Я ссылку на конструкцию в своем первом посте давал. “Хитрую прошивку” пришлю, если соберетесь делать. Есть у меня и проект (схема, плата) в том же Proteus VSM. Даже Gerber’овские файлы, кажется, где-то были - один знакомый из Киева делал себе по ним программатор; все получилось. Корпус Gainta 738, насколько я помню. Есть еще точно такой же по размерам, но не с алюминиевыми, а с пластмассовыми панелями. Не принципиально при эксплуатации, но дешевле и проще в изготовлении.
А фото… Мне не жалко; где-то они у меня валялись. Но не вижу в них особого смысла.
И помните: этот дивайс требует прошитого контроллера.

nigyl:

и будет то что я просил по железу.

Вот это - не понял…

nigyl:

Скажите на каком языке программируете…Codevision пользуетесь?

Да.
Ваша задача (если отвлечься от требования выдавать 3-х вольтовый управляющий сигнал) решается в нем:

  1. Созданием нового проекта = вводом конфигурации контроллера (тип контроллера, требуемая тактовая частота, назначение портов на ввод-вывод, назначение использования каналов АЦП) с последующей автоматической генерацией текста на Си;
  2. Написанием трех строк программы
if ( (read_adc(0) < nnn) or (read_adc(1) < nnn) ) PORTA.5 = 1;
else PORTA.5 = 0;
delay_ms(yyyy);

Пояснение:
0 и 1 = каналы ADC, с которого надо считывать напряжения (в примере соотв. 0-му и 1-му биту порта, на котором в микроконтроллере реализован АDC);
nnn = значение (в тиках АЦП) при котором (и менее которого) надо начинать выдавать сигнал;
PORTA.5 = ножка, на которую будет выдаваться сигнал (в примере соотв. 5-му биту порта А);
yyyy = задержка между опросами каналов ADC в миллисекундах.

Все. Это можно моделировать в Proteus, и виртуальный светодиод зажжется тогда, когда напряжение с виртуального потенциометра станет эквивалентно nnn. А измерить это напряжение можно виртуальным вольтметром.

…Я дольше писал этот мессаг, чем создавал бы проект в CVAVR + модель в Протесе.

nigyl
Enigm:

Flowcode тоже интересная прога и по мне гораздо удобнее Algoritm Bilder принципы програмирования такиеже

что эти проги делают, преобразуют код в hex файлы? и в чем тогда отличие от Code vision?..

стоп…получается, некоторые программаторы требуют встроенного(прошитого) контроллера… а некоторым он вообще не нужен?..
естественно прошитого у меня нет…и врят ли найду чем прошить… что в таком случае делать? можно ли собрать простейший прогромматор что бы прошить контроллер в другой программатор? 😵

)) спасибо… за разъяснение…

EagleB3
nigyl:

что эти проги делают, преобразуют код в hex файлы?

Любой компиллятор делает машинный код из языка высокого уровня.

nigyl:

И в чем тогда отличие от Code vision?..

Algorythm Builder создает код из графически нарисованного алгоритма. Очень близок к ассемблеру.
Подробнее может рассказать его любитель/ценитель.

Я с ассемблером как собака: все понимаю, а сказать не могу.
Мое дао = паскаль, си, маненько VB.

nigyl:

стоп…получается, некоторые программаторы требуют встроенного(прошитого) контроллера… а некоторым он вообще не нужен?..
естественно прошитого у меня нет…и врят ли найду чем прошить… что в таком случае делать? можно ли собрать простейший прогромматор что бы прошить контроллер в другой программатор? 😵

Да. Я же ровно так и написал.
Мегу для своего USB-шного программатора я шил своим старым добрым STK.

А насчет “не найду” - с чего вдруг такой пессимизм?
Особенно если “Москва” в вашем профиле это не та Москва, которая в Канаде… 😎

nigyl
EagleB3:

Мегу для своего USB-шного программатора я шил своим старым добрым STK.

так в той же статье написанно :Это программист USB имеет, в отличие от других программистов, не “проблема курицы и яйца”. То есть: вы можете создать его с нуля, без необходимости другого программиста для загрузки первоначальный микропрограммы.

перевод от промта)) сорри

EagleB3

Похоже, что это хитрости с его BitBang программированием.
Никогда этим не пользовался - не было нужды.

nigyl

так как мне то поступить?

Решая проблему курицы и яйца… вот глава из той статьи…

Другими словами avrusb500 состоит на самом деле из двух программистов: Один внутренний для первоначальной загрузки микропрограммы и фактической avrusb500 программист, который является быстрым и STK500 V2 основанные программист для повседневного использования .

CD, который продается с shop.tuxgraphics.org вместе с частями для этого программист может также использоваться для первоначальной загрузки микропрограммы. Это дополнительное преимущество, что вы можете сделать это с CD без прав администратора.

нет ли у вас этого сд?

кстати… из москвы уехал…ща город поменяю…так что может и не найду…

И да …обнаружил что вышло поновее… v2…
shop.tuxgraphics.org/…/detail_avrusb500.html
www.tuxgraphics.org/…/article07052.shtml

Syberian
nigyl:

на макетке предусмотреть выводы от чипа на программатор MOSI MISO SCK RESET GND
а можно поподробнее про это?

так называются выводы этой микросхемы для программирования. Их вывести на разъем и для заливания ПО подключать к ним программатор, который я привел в качестве примера (названия проводов такие же).
И не надо взрывать себе моск с различными СТК500 и проч. На первых шагах это сложно.
З.Ы. и не трогайте FUSE-bits! Хотя бы на первых порах. А то RCDesign превратится в _kasus.ru 😆

nigyl

вот блин… но мне www.tuxgraphics.org/…/article07052.shtml
вот эта штука понравилась…
ее бы сделать…

суть в том…ято мне все равно детали постой из платана заказывать… так почему бы не заказать и не спаять сразу хорошую вещь которой я еще не раз воспользуюсь…

я вот думаю… может сделать этот дешевый avr.nikolaew.org/progr.htm… чтобы прошить контроллер… в USB-шный… если никто информации не накопает, тогда так буду делать…

EagleB3
nigyl:

но мне www.tuxgraphics.org/…/article07052.shtml вот эта штука понравилась…

Поясняю: я собирал себе этот программатор потому, что в ветке “Микроконтроллеры” на форуме телесистем нашлась прошивка, позволяющая получать отладочную информацию по линиям SPI и позволяющая “подкручивать” версию фирмвари до совместимости с AStudio.
Будет ли эта фича поддерживаться для следующей версии или нет - не знаю.
Человек, написавший прошивку, по-прежнему появляется в той ветке форума; можно с ним списаться и спросить.

А можно поисследовать USB-программаторы, ссылки на которые даны на странице Редчука. Глубокое IMHO - Редчук не станет поддерживать в AVReAl всякое гуано.
Если среди них найдется программатор, совместимый с CVAVR, AStudio и AVReAl - его и надо делать.

nigyl:

так почему бы не заказать и не спаять сразу хорошую вещь которой я еще не раз воспользуюсь…

я вот думаю… может сделать этот дешевый avr.nikolaew.org/progr.htm… чтобы прошить контроллер… в USB-шный…

Конечно, это вполне можно сделать. Я вовсе не собираюсь хаять то COM-портовое изделие, особенно если рассматривать его как инструмент на 1 раз. Если вглядеться, то это шины данных с классического PonyProg’а, только питание контроллеру берется не с COM-порта, а со стороны (и это - правильно!).
Опять же, можно собрать “правильный” дивайс - взять MAX232, подключить его к COM-порту, получить на его выходах честный TTL (только обязательно надо разобраться с инверсией сигналов!) и тем TTL’ом программировать Мегу.
На той же Вишеровской маекетнице это собирается за 10 минут.
RS232 не обязан мочь кого-то программировать. А принять RS232 и выдать стандартный TTL (достаточный для программирования AVR) MAX232 обязан.

…Кстати, у Редчука первая схема на странице, посвященной адаптерам, это перобразователь USB в TTL. Можно собрать его и им пользоваться.
Только не уверен, что его будет поддерживать CVAVR. На самый крайний случай можно навесить AVREAL внешней программой в среде СVAVR. Я сам сейчас такую навеску использую для одного проекта - целесообразно в данном конкретном случае.

Диска, упоминающегося на сайте у меня нет; но, думаю, можно поискать в сети. на том же тугсграфиксе наверняка есть какая-нибудь ссылочка на какой-нибудь форум; и потолкаться на том форуме.

Да и Орел - не край вселенной. Программирование AVR поддерживают очень многие программаторы. Наверняка можно кого-то найти и договориться.

Syberian:

И не надо взрывать себе моск с различными СТК500 и проч. На первых шагах это сложно

Сложно работать с программатором, который не поддерживается твоей штатной средой программирования. Сложно делать и использовать несколько устройств там, где можно обойтись одним.
А по части сложности устройств понятия у каждого свои. Схемы везде есть, платы почти везде есть. Сам решит…

serg111

позволяющая получать отладочную информацию по линиям SPI

А как это он делает? Мож по JTAG-гу? Но там линии другие.

Делал JTAG - программатор отсюда. Возможность отладки кода прям в железе и прочие прелести.
icd2clone.narod.ru

EagleB3
serg111:

А как это он делает? Мож по JTAG-гу?

Нет, именно по шинам ISP. С точки зрения программы на Си, переопределяется putchar. Эта функция начинает выдыхать в MISO/MOSI/SCK. Стандартный рrint(f) работает через putchar - и меняет режим работы автоматически.
Вот, для моей любимой ATMega8535:

  #define _ALTERNATE_PUTCHAR_    //Объявление: будет использоваться альтернативная процедура вывода
  #define MOSI PORTB.5
  #define MISO PORTB.6
  #define  SCK PORTB.7
  #define MMS_OutNull 0b11100000 //MOSI, MISO, SCK = Out, Null

void init_debug(void)
{
  PORTB=0x00;
  DDRB=MMS_OutNull;     //MISO, MOSI, SCK = Out, Pullup     //0x38
  MOSI=1;               //сигнал MOSI = используется как SS
  delay_us(500);
  MOSI=0;
  delay_us(500);
}

void putchar( char c)
{
  unsigned char n;
  for (n=0;n<8;n++)
  {
    if (c & 1) MISO=1; // сигнал MISO = данные
    else MISO=0;
    SCK=0;             // сигнал SCK = clock
    delay_us(30);
    SCK=1;
    delay_us(30);
    c=c>>1;
  }
}

Программатор, стало быть, умеет слушать ISP и транслировать в RS232. Если настроить встроенный терминал CVAVR на виртуальный COM-порт, появляющийся при подключении дивайса с FT232, в терминале появляются выдохнутые символы.
Имеется только маленький неудобняк: программатор и терминал в СVAVR назначены при этом в один и тот же порт; поэтому:

  • Каждый раз при запуске терминала CVAVR выдает предупреждение, что прерывание уже занято. Но далее исправно работает;
  • Кнопка “Reset chip” в терминале не функционирует.
    Но меня это не напрягает.

Что особенно интересно: эти процедуры не затрагивают аппаратный U(S)ART. Так что есть все шансы использовать их параллельно и независимо. Отладочная информация будет идти через ISP в виртуальный СOM, а железка будет работать с реальным RS232 вашего же компьютера, или мобильника и т.д. Только тогда SPIшная putchar должна быть отдельной функцией с уникальным именем, а не переопределять стандартную.

serg111

Полезная фишка для камней без джитега. Возьмем на заметку. Но джитег конечно рулит.

nigyl
EagleB3:

Поясняю: я собирал себе этот программатор потому, что в ветке “Микроконтроллеры” на форуме телесистем нашлась прошивка, позволяющая получать отладочную информацию по линиям SPI и позволяющая “подкручивать” версию фирмвари до совместимости с AStudio.

обьясните теперь обычным смертным…о чем вы?

Syberian
nigyl:

о чем вы?

О том, что Вам еще учиться и учиться.

Господа эмбеддеры! если человек с трудом отличает MOSI от SCK, какие могут быть JTAG и USB? Тема из разряда: “Футаба хамно, я спаяю круче. Как прошить контроллер?”
Я удаляюсь.

msv

Теперь расскажите, что такое эмбеддер… 😃 То, что человек просит нарисовать схему, написать прогу, прошить, расстолковать на пальцах даташит итп. было понятно с первого поста… 😃 2nigyl не обижайтесь, но ваших вопросах пока нет вопроса, а что-то типа ‘научите меня жить…’.

EagleB3

Когда-то давно я сделал несколько проект-примеров для желающих разобраться в азах AVR. Именно по комплексу CVAVR+Протеус.
Я уже не помню порядок следования что за чем, сорри. Примерно в таком порядке:
Пошаговая отладка. Вывод [отладочной] информации в RS232
Программатор Altera/STK
Опрос кнопок и вывод на HD44780-совместимый LCD-дисплей
Работа с ADC и внешней памятью (интерфейс I2C)
Еще есть небольшой мануал по созданию/редактированию футпринтов Протеуса, но после этого Halex07 написал свой прекрасный FAQ и, думаю, что этот мануальчик уже можно и прибить.

P.S. Посмотрел - на архивах стоит ноябрь 2004 года… Как давно это было…

UserM
nigyl:

Добрый день!
я в этом деле новичок… но знаю основы электроники и С++…
Цель такая к АЦП контроллера подвести датчики и при уровне сигнала ниже необходимого нужно подать 3В на выход…

Всё что Вы спрашиваете описано очень хорошо в цикле статей.

Микроконтроллеры AVR, 10 ступеней. С. М. Рюмик просто и занимательно вводит читателя в мир AVR.

mirknig.com/…/1181195209-mikrokontrollery-avr-10-s…

Здесь можно посмотреть USB программатор не требующий предварительной прошивки. (правда сам пока делать его не пробовал)

reddylab.eu/rclab/