Программирование контроллеров
Flowcode тоже интересная прога и по мне гораздо удобнее Algoritm Bilder принципы програмирования такиеже
так… у нас куча прог… которые мне как таковые нафиг не нужны… т.к. 2 датчика я и на С++ с небольшой помощью подключу…
нельзя ли все таки по железу мне подсказать?что брать, что паять, что прошивать?
З.Ы. не забывайте…контроллер АТмега…или тини…но как тини работает незнаю…
А может проще будет чисто аналоговую схему сделать, без микроконтроллера?
а про это еще не расскажите подробнее?
всего 2-4 датчика …и столько же выходов…в зависимости от датчиков…
как будет фса выглядеть? кто подскажет?
что брать, что паять, что прошивать?
брать Мега48, на макетке предусмотреть выводы от чипа на программатор MOSI MISO SCK RESET GND
паять элементарнейший ISP программатор Uniprof через СОМ-порт avr.nikolaew.org/progr.htm
прошивать полученный из Codevision или чего угодно другого, путем компиляции, HEX-файл.
спс… очень точно и коротко…
брать Мега48, на макетке предусмотреть выводы от чипа на программатор MOSI MISO SCK RESET GND
а можно поподробнее про это?
Если цель = освоить 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, но зато:
- Это USB-программатор;
- Он совместим с AVRISP/STK500, его поддерживает AStudio. И CVAVR тоже.
- Есть прошивка, которая позволяет получать отладочную информацию прямо по шинам программирования (и, вдобавок, подстраивает версию его прошивки до требуемой средой AStudio).
так…
ну программатор мне этот по схеме понравился…к тому же сом… avr.nikolaew.org/progr.htm…
и к меге8 подходит… что вы по нему скажите?
www.platan.ru/cgi-bin/…/id=87649159&group=50236
как вам вот эта макетная плата?,…я так понял она вместе с программатором?.. если да то будет ли работать с мега8?
Это Вы должны у своего 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 могут и потеряться.
так… теперь я вообще запутался…
1…Мастеркито’овскую схему (или прямо готовый набор) nm9211. - сайт не открывается.
2. Макетница мне понравилась…
3. “Правда, на фото не USBшный программатор, а его “старший брат” - STK200/300. USBшный практически такой же - и по размерам, и по функционалу.” - вы писали…
Если можно дайте схему вашего usbшного программатора…и побольше фото… и будет то что я просил по железу… . И если дадите …скажите на каком языке программируете…Codevision пользуетесь?
www.platan.ru/cgi-bin/…/id=8746&group=52604 на платане макетница вроде таже… цена вдвое дешевле
так… теперь я вообще запутался…
Ничего, разберемся…
1…Мастеркито’овскую схему (или прямо готовый набор) nm9211. - сайт не открывается.
Либо зайдите на сайт мастеркит и найдите в ихнем каталоге, либо прямо поиском “nm9211” в Гугле.
- Макетница мне понравилась…
www.platan.ru/cgi-bin/…/id=8746&group=52604 на платане макетница вроде таже… цена вдвое дешевле
Она и есть. С набором перемычек. И цена примерно нормальная. Усиленно рекомендую. У тех, что использую я (и они же на фото “Платана” - пластмасса с отливом в желтизну, и прорисованы синие-красные линии шин. Есть похожие - но не такие: у них пластик цвета разведенного молока, белый, “прозрачноватый”. Про них ничего сказать не могу.
Такие макетницы можно стыковать между собой - на торцах сделаны “ласточкины хвосты”.
На той же странице есть описание и других макетниц (в том числе состыкованных и собранных на общем алюминиевом основании). Но это уже сами решайте - что нужно, какой площади. Мне всегда хватало двух моих макетниц.
Если можно дайте схему вашего usbшного программатора…и побольше фото…
Я ссылку на конструкцию в своем первом посте давал. “Хитрую прошивку” пришлю, если соберетесь делать. Есть у меня и проект (схема, плата) в том же Proteus VSM. Даже Gerber’овские файлы, кажется, где-то были - один знакомый из Киева делал себе по ним программатор; все получилось. Корпус Gainta 738, насколько я помню. Есть еще точно такой же по размерам, но не с алюминиевыми, а с пластмассовыми панелями. Не принципиально при эксплуатации, но дешевле и проще в изготовлении.
А фото… Мне не жалко; где-то они у меня валялись. Но не вижу в них особого смысла.
И помните: этот дивайс требует прошитого контроллера.
и будет то что я просил по железу.
Вот это - не понял…
Скажите на каком языке программируете…Codevision пользуетесь?
Да.
Ваша задача (если отвлечься от требования выдавать 3-х вольтовый управляющий сигнал) решается в нем:
- Созданием нового проекта = вводом конфигурации контроллера (тип контроллера, требуемая тактовая частота, назначение портов на ввод-вывод, назначение использования каналов АЦП) с последующей автоматической генерацией текста на Си;
- Написанием трех строк программы
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 + модель в Протесе.
Flowcode тоже интересная прога и по мне гораздо удобнее Algoritm Bilder принципы програмирования такиеже
что эти проги делают, преобразуют код в hex файлы? и в чем тогда отличие от Code vision?..
стоп…получается, некоторые программаторы требуют встроенного(прошитого) контроллера… а некоторым он вообще не нужен?..
естественно прошитого у меня нет…и врят ли найду чем прошить… что в таком случае делать? можно ли собрать простейший прогромматор что бы прошить контроллер в другой программатор? 😵
)) спасибо… за разъяснение…
что эти проги делают, преобразуют код в hex файлы?
Любой компиллятор делает машинный код из языка высокого уровня.
И в чем тогда отличие от Code vision?..
Algorythm Builder создает код из графически нарисованного алгоритма. Очень близок к ассемблеру.
Подробнее может рассказать его любитель/ценитель.
Я с ассемблером как собака: все понимаю, а сказать не могу.
Мое дао = паскаль, си, маненько VB.
стоп…получается, некоторые программаторы требуют встроенного(прошитого) контроллера… а некоторым он вообще не нужен?..
естественно прошитого у меня нет…и врят ли найду чем прошить… что в таком случае делать? можно ли собрать простейший прогромматор что бы прошить контроллер в другой программатор? 😵
Да. Я же ровно так и написал.
Мегу для своего USB-шного программатора я шил своим старым добрым STK.
А насчет “не найду” - с чего вдруг такой пессимизм?
Особенно если “Москва” в вашем профиле это не та Москва, которая в Канаде… 😎
Мегу для своего USB-шного программатора я шил своим старым добрым STK.
так в той же статье написанно :Это программист USB имеет, в отличие от других программистов, не “проблема курицы и яйца”. То есть: вы можете создать его с нуля, без необходимости другого программиста для загрузки первоначальный микропрограммы.
перевод от промта)) сорри
Похоже, что это хитрости с его BitBang программированием.
Никогда этим не пользовался - не было нужды.
так как мне то поступить?
Решая проблему курицы и яйца… вот глава из той статьи…
Другими словами avrusb500 состоит на самом деле из двух программистов: Один внутренний для первоначальной загрузки микропрограммы и фактической avrusb500 программист, который является быстрым и STK500 V2 основанные программист для повседневного использования .
CD, который продается с shop.tuxgraphics.org вместе с частями для этого программист может также использоваться для первоначальной загрузки микропрограммы. Это дополнительное преимущество, что вы можете сделать это с CD без прав администратора.
нет ли у вас этого сд?
кстати… из москвы уехал…ща город поменяю…так что может и не найду…
И да …обнаружил что вышло поновее… v2…
shop.tuxgraphics.org/…/detail_avrusb500.html
www.tuxgraphics.org/…/article07052.shtml
на макетке предусмотреть выводы от чипа на программатор MOSI MISO SCK RESET GND
а можно поподробнее про это?
так называются выводы этой микросхемы для программирования. Их вывести на разъем и для заливания ПО подключать к ним программатор, который я привел в качестве примера (названия проводов такие же).
И не надо взрывать себе моск с различными СТК500 и проч. На первых шагах это сложно.
З.Ы. и не трогайте FUSE-bits! Хотя бы на первых порах. А то RCDesign превратится в _kasus.ru 😆
вот блин… но мне www.tuxgraphics.org/…/article07052.shtml
вот эта штука понравилась…
ее бы сделать…
суть в том…ято мне все равно детали постой из платана заказывать… так почему бы не заказать и не спаять сразу хорошую вещь которой я еще не раз воспользуюсь…
я вот думаю… может сделать этот дешевый avr.nikolaew.org/progr.htm… чтобы прошить контроллер… в USB-шный… если никто информации не накопает, тогда так буду делать…
но мне www.tuxgraphics.org/…/article07052.shtml вот эта штука понравилась…
Поясняю: я собирал себе этот программатор потому, что в ветке “Микроконтроллеры” на форуме телесистем нашлась прошивка, позволяющая получать отладочную информацию по линиям SPI и позволяющая “подкручивать” версию фирмвари до совместимости с AStudio.
Будет ли эта фича поддерживаться для следующей версии или нет - не знаю.
Человек, написавший прошивку, по-прежнему появляется в той ветке форума; можно с ним списаться и спросить.
А можно поисследовать USB-программаторы, ссылки на которые даны на странице Редчука. Глубокое IMHO - Редчук не станет поддерживать в AVReAl всякое гуано.
Если среди них найдется программатор, совместимый с CVAVR, AStudio и AVReAl - его и надо делать.
так почему бы не заказать и не спаять сразу хорошую вещь которой я еще не раз воспользуюсь…
я вот думаю… может сделать этот дешевый 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 поддерживают очень многие программаторы. Наверняка можно кого-то найти и договориться.
И не надо взрывать себе моск с различными СТК500 и проч. На первых шагах это сложно
Сложно работать с программатором, который не поддерживается твоей штатной средой программирования. Сложно делать и использовать несколько устройств там, где можно обойтись одним.
А по части сложности устройств понятия у каждого свои. Схемы везде есть, платы почти везде есть. Сам решит…
позволяющая получать отладочную информацию по линиям SPI
А как это он делает? Мож по JTAG-гу? Но там линии другие.
Делал JTAG - программатор отсюда. Возможность отладки кода прям в железе и прочие прелести.
icd2clone.narod.ru
А как это он делает? Мож по 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 должна быть отдельной функцией с уникальным именем, а не переопределять стандартную.
Полезная фишка для камней без джитега. Возьмем на заметку. Но джитег конечно рулит.
Поясняю: я собирал себе этот программатор потому, что в ветке “Микроконтроллеры” на форуме телесистем нашлась прошивка, позволяющая получать отладочную информацию по линиям SPI и позволяющая “подкручивать” версию фирмвари до совместимости с AStudio.
обьясните теперь обычным смертным…о чем вы?