Программирование контроллеров
так как мне то поступить?
Решая проблему курицы и яйца… вот глава из той статьи…
Другими словами 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.
обьясните теперь обычным смертным…о чем вы?
о чем вы?
О том, что Вам еще учиться и учиться.
Господа эмбеддеры! если человек с трудом отличает MOSI от SCK, какие могут быть JTAG и USB? Тема из разряда: “Футаба хамно, я спаяю круче. Как прошить контроллер?”
Я удаляюсь.
Теперь расскажите, что такое эмбеддер… 😃 То, что человек просит нарисовать схему, написать прогу, прошить, расстолковать на пальцах даташит итп. было понятно с первого поста… 😃 2nigyl не обижайтесь, но ваших вопросах пока нет вопроса, а что-то типа ‘научите меня жить…’.
Когда-то давно я сделал несколько проект-примеров для желающих разобраться в азах AVR. Именно по комплексу CVAVR+Протеус.
Я уже не помню порядок следования что за чем, сорри. Примерно в таком порядке:
Пошаговая отладка. Вывод [отладочной] информации в RS232
Программатор Altera/STK
Опрос кнопок и вывод на HD44780-совместимый LCD-дисплей
Работа с ADC и внешней памятью (интерфейс I2C)
Еще есть небольшой мануал по созданию/редактированию футпринтов Протеуса, но после этого Halex07 написал свой прекрасный FAQ и, думаю, что этот мануальчик уже можно и прибить.
P.S. Посмотрел - на архивах стоит ноябрь 2004 года… Как давно это было… ☕
Добрый день!
я в этом деле новичок… но знаю основы электроники и С++…
Цель такая к АЦП контроллера подвести датчики и при уровне сигнала ниже необходимого нужно подать 3В на выход…
Всё что Вы спрашиваете описано очень хорошо в цикле статей.
Микроконтроллеры AVR, 10 ступеней. С. М. Рюмик просто и занимательно вводит читателя в мир AVR.
mirknig.com/…/1181195209-mikrokontrollery-avr-10-s…
Здесь можно посмотреть USB программатор не требующий предварительной прошивки. (правда сам пока делать его не пробовал)
этот вариант мне понравился…
eagle, интересно услышать ваше мнение о нем…
Мне не нравится вот это (первый же вопрос в разделе FAQ):
В: Из CVAVR он работает ? Какой прогер в настройках ставить - stk500 ?
О: Пока работает только с ПРОПАТЧЕННЫМ Avrdude - www.reddylab.eu/rclab/#7
И еще доводилось слышать про дуду, что она отказывается работать с некоторыми типами контроллеров.
Нравится - сделайте. Попробуйте.
Если не уверены до конца, то делайте его двухмодульным. На одном модуле соберите FT232 со входными цепями и индикацией RX-TX, и сделайте на ней нормальные удобные выходы TTL (желательно полный набор).
На второй - соберите кусок с буфером.
Если не понравится, кусок с буфером легким движением руки превратится в Altera/STK (можете даже заранее соответствующие цепи на плате развести, но компоненты и/или перемычки не ставить), а кусок с FT232 станет половиной тугсграфикса или кого угодно, кто начинается с FT232. Или просто можете его использовать как конвертер TTL<=>RS232_over_USB для общения своих будущих конструкций с компьютером. Наверняка где-нибудь пригодится.
P.S.
reddylab.eu/rclab/
этот вариант мне понравился…
Это уже тритий (или даже можно считать, что четвертый) вариант, который Вам понравился за последние три дня. 😒
Я советую для начала сделать то, что проще и не трудозатратно. Но не примитивно и надежно. Наиболее подходящей для этого я по-прежнему считаю Altera/STK. Если, конечно, есть порт LPT.
P.P.S. Заметьте, при всем богатстве выбора все варианты сводятся к набору из трех микросхем: FT232, буфера и ATMEGA8 в разных комбинациях (кстати, ATMEGA8 уже становится раритетом… Меняется на ATMEGA88). Это я к чему? К тому, что как вы эту детскую коляску не собирайте, а получится все равно автомат Калашникова. Пргорамматор ISP - он и в Африке программатор ISP.
Это уже тритий (или даже можно считать, что четвертый) вариант, который Вам понравился за последние три дня.
вы конечно правы…
но я так и не выбрал что паять…а заказывать все необходимое… буду в понедельник…
мне понравился этот программатор тем что его ненадо прошивать… но что он не поддерживает CVAVR это конечно громадный минус…
LPT у меня нет…я конечно могу купить переходник…но не вижу смысла собирать то …что мне надо будет чтобы собрать программатор с usb))
пока я еще в поисках… может кому то на глаза попался usb программатор,который работает с CVAVR … и который не надо прошивать?..
STK500
У меня он есть на базе AVR Butterfly и на базе Bus Pirate
Я 100 лет назад собрал “протоса”. С прошивкой STK-500 имел глюки в виде необходимости практически при каждом действии с программатором “перетыкать” его в усб ноута (может ноут у меня кривой какой?). С прошивкой “протоса” - AVR910 проблем нет. Но есть несколько “но”. Из под кодевижин не поддерживается страничный режим, т.е. контроллер прошивается, но медленнее, чем мог бы. Поэтому я использую аврпрог от аврстудии. Подпихнул его в кодевижин в свойствах проекта на запуск после компиляции. Вполне удобно. Все хочу, но ленюсь попробовать STK-500 v2, т.е. с аппаратным, а не софтовым усб. Думаю, глюк описанный выше - в кривой реализации софтового усб.
кстати …только вспомнил… у меня есть ЦАП\АЦП… работающее от усб… имеюще и аналоговые и цифровые входы выходы…
а может есть смысл на базе него сделать программатор?
Честно скажу, всю ветку я не прочитал, но к первому сообщению, хочу посоветовать проект arduino (и его клоны - freeduino, boarduino), поглядите - уверен, что заинтересует.
Я тоже хочу освоить программирование микроконтроллеров, но что-то не за что зацепиться. Может кто-нибудь показать как это делается на конкретном примере.
Вот, например, для начала у меня есть такая минимальная задачка.
Нужно сделать контроллер, который будет управлять проходным светофором железнодорожной автоблокировки. Светофор имеет 3 огня (кто угадает, какие?). Логика его работы такая:
- Если ограждаемый светофором блок участок занят (на первом входе 0), то горит красный. При этом состояние других входов можно и не проверять.
- Если этот блок участок свободен (на первом входе 1), то проверяется состояние следующего светофора, от которого тянется отдельный провод, подходит ко второму входу.
- Если следующий светофор зактыт (на втором входе 0), то горит жёлтый огонь.
- Если сдедующий светофор открыт (на втором входе 1), то проверяется положение стрелок с помощью третьего входа.
- Если на третьем входе 1 (стрелки прямо), то горит зелёный огонь.
- Если на третьем входе 0 (стрелки на боковой путь), то включается жёлтый мигающий огонь.
Жёлтый огонь должен мигать с частотой около 1 Гц, причём 2/3 периода он включен, а 1/3 - выключен.
Вот так выглядит схема, реализующая этот алгоритм, на логических элементах.
Здесь первый вход назван 11, второй - 12, третий - 13
А вот как я хочу сделать на контроллере. Контроллер PIC12F629
На вход 17 не обращайте внимания, просто с помощью цепи питания я хочу сделать смену направления автоблокировки.
Если найдётся специалист, напишите ассемблеровский файл, если можно, с комментариями. И потом я буду осваивать, что с ним делать дальше.
ИМХО, слишком сложные задачи ставите для начала. Или надежда на то, что кто-то за Вас напишет программу? Начинать нужно хотя-бы с одного светодитода типа помигать, кнопки на входе, типа поуправлять. И почитать что-то вроде вот этого avr123.nm.ru, аналогов в сети полно, и по ПИКАм тоже.
Виктор, такую простую задачу можно решить на PIC конроллере, а программу написать на PIC-Basic. Если ты знаком с языком Basic, который в школах преподавали раньше, то проще пареной репы! А на ассемблере писать, это нужно его знать, точнее знать архитекруту проца, на изучение у тебя уйдёт год или больше, и только потом ты сможешь написать такую прогу. А на PIС-Basic такая прога пишеться на 15 мин, и работает сразу!
Ну вот типа такой пример:
'****************************************************************
'* Name : TEST LED *
'* Author : *
'* Notice : Copyright (c) 2010 *
'* : *
'* Date : *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
' Описание портов
IN_0 VAR GPIO.0
LED VAR GPIO.1
PORT_2 VAr GPIO.2
PORT_3 VAR GPIO.3
PORT_4 var GPIO.4
PORT_5 VAR GPIO.5
' 76543210
TRISIO = %00000001 ' 1 - Вход
' 0 - Выход
CMCON = %00000111 ' Отключение компаратора битами 0,1,2
CLEAR ' Отчистка RAM
main:
IF IN_0 = 1 THEN GOSUB LED_BL ' Если на входе IN_0 лог. 1 тогда переход на процедуру LED_BL
GOTO main ' Зацикливание процедуры main
LED_BL:
LED = 1 ' Включить светодиод
PAUSE 666 ' Пауза 666 мс (2/3 от секунды)
LED = 0 ' Выключить светодиод
PAUSE 333 ' Пауза 333 мс (1/3 от секунды)
RETURN ' Возврат к оператору GOSUB LED_BL
END
Эта программа мигает светодиодом если на порт GPIO.0 приходит лог. 1 если лог. 0 значит не мигает. Светодиод висит на порте GPIO.1. Кстати я сделал что бы он мигал, как светофор.
Вот это пример. Всё остальное, ещё проще.
По PIC-Basic есть книга: Чак Хелибайк “Программирование PIC-микроконтроллеров на PIC-Basic”, там описаны все комманды.
Есть сайт, там эта книга есть в электронном виде: www.picbasic.ru
Виктор, такую простую задачу можно решить на PIC конроллере, а программу написать на PIC-Basic.
…И смоделировать работу всей конструкции (не прикасаясь к железу) на Proteus VSM. С миганием светодиодов и переключением сигналов на входе.
И смоделировать работу всей конструкции (не прикасаясь к железу) на Proteus VSM
Нет ну это само собой, для отладки программы.
Я думал, сейчас начнутся реплики типа “Это слишком просто, делай на дискретных элементах”, а оказывается это что-то сложное. Не ожидал.
Однако, мне понравилось, что появились компиляторы на основе Бэйсика, я пытался несколько лет назад что-то такое найти, но у меня ничего не получилось. Наверное, это новые компиляторы.
Мне удалось скачать компилятор Proton и книжку про PIC-Basic, подскажите, где можно скачать сам PIC-Basic и книжку про Proton.
Я сначала хотел избежать использования компиляторов высокого уровня, я думал будут проблемы при сопряжении с программатором, поэтому и спрашивал про ассемблер. Да я и сейчас думаю, что неплохо бы его освоить.
А может кто-нибудь знает программы, которые компилируют код из графического алгоритма? Ну, знаете, в ромбиках - условия, в прямоугольничках - присвоение, в параллелограммах - ввод/вывод?