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

nigyl

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

перерыл интернет…нашел много интересных книг…но к сожалению большинство уже устарело… а остальные для Асемблера…

Правильно ли я вообще понимаю суть: покупаем контроллер (хотелось бы атмел мега (какой незнаю… наверное 8 подойдет?)), затем паяем программатор(поо одной из кучи схем)… и затем подключаем к компу и пишем программу в контроллер… так?

и кстати… если мы паяем программатор…для него тоже нужжен контроллер? или программаторы есть и без них? а если нужен …то как его запрограммировать?..

подскажите что не так?
и посоветуйте статью или книгу, где расписана реализация похожей на мою схему вместе с программатором и на С++…

ukkr

Программатором у вас является компьютер. Вариантов подключения море, от самого примитивного “5 проводов” в LPT порт, заканчивая USBишными. По поводу С++ – советую начать изучать чем отличается С от С++. Ну и смотреть на конкретные Сшные компиляторы под АТМЕЛ. 😃
Для начала покурить сайты типа avr123.nm.ru и easyelectronics.ru
Дальше тратите пару часов и имеете свой результат.

nigyl

ну мне хорошо бы ком или usb…

в чем разница знаю… я С++ учил…и писал на нем софт…только вот не для АРМ…

Можно поподробнее на счет программаторов…сосхемами…
и на счет остального тоже… сайты щас буду крутить…

leprud

А может проще будет чисто аналоговую схему сделать, без микроконтроллера?

mikki

Кстати да… на компараторах можно собрать такой девайс)))

nigyl

нет…мне пока надо для этой задачи…но потом еще понадобиться… так что надо научится… чем можете помогите…

МаркАнтоний

Предлогаю почитать вот этот форум Algoritm Bilder for AVR. Там рассказывается и обсуждается замечательная среда програмирования на атмелах. Мне очень нравится эта среда, понятна на интуитивном уровне! Очень советую.

nigyl

ок… программно это принемаем…
теперь по железу… подскажите…что надо…? можно ли купить программатор…или его просто спаять? какая схем?..

(для моей задачи мега 8 подойдет?)если да…то какой для него програматор брать или паять? нужен ли отладчик?

МаркАнтоний
nigyl:

ок… программно это принемаем…
теперь по железу… подскажите…что надо…? можно ли купить программатор…или его просто спаять? какая схем?..

(для моей задачи мега 8 подойдет?)если да…то какой для него програматор брать или паять? нужен ли отладчик?

В той программе что описывается по ссылке что я выложил выше. Используется прогамматор из пяти резисторов и диодов подключённых к ком порту. Про это можно почитать в мануале к программе Algoritm Bilder.

Я считаю что мега 8 это перебор можно взять из из семейства Тини любой.

nigyl

просто с мегой я немного знаком… и лучше на ней остановиться…

leprud

Если не жалко немного переплатить - можно взять любой Arduino, прошивка заливается по юсб, вся обвязка уже есть…

Enigm

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

nigyl

так… у нас куча прог… которые мне как таковые нафиг не нужны… т.к. 2 датчика я и на С++ с небольшой помощью подключу…

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

leprud:

А может проще будет чисто аналоговую схему сделать, без микроконтроллера?

а про это еще не расскажите подробнее?

всего 2-4 датчика …и столько же выходов…в зависимости от датчиков…

как будет фса выглядеть? кто подскажет?

Syberian
nigyl:

что брать, что паять, что прошивать?

брать Мега48, на макетке предусмотреть выводы от чипа на программатор MOSI MISO SCK RESET GND
паять элементарнейший ISP программатор Uniprof через СОМ-порт avr.nikolaew.org/progr.htm
прошивать полученный из Codevision или чего угодно другого, путем компиляции, HEX-файл.

nigyl

спс… очень точно и коротко…

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

а можно поподробнее про это?

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 программированием.
Никогда этим не пользовался - не было нужды.