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

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/

nigyl

reddylab.eu/rclab/

этот вариант мне понравился…
eagle, интересно услышать ваше мнение о нем…

EagleB3

Мне не нравится вот это (первый же вопрос в разделе FAQ):

В: Из CVAVR он работает ? Какой прогер в настройках ставить - stk500 ?
О: Пока работает только с ПРОПАТЧЕННЫМ Avrdude - www.reddylab.eu/rclab/#7

И еще доводилось слышать про дуду, что она отказывается работать с некоторыми типами контроллеров.

Нравится - сделайте. Попробуйте.
Если не уверены до конца, то делайте его двухмодульным. На одном модуле соберите FT232 со входными цепями и индикацией RX-TX, и сделайте на ней нормальные удобные выходы TTL (желательно полный набор).
На второй - соберите кусок с буфером.
Если не понравится, кусок с буфером легким движением руки превратится в Altera/STK (можете даже заранее соответствующие цепи на плате развести, но компоненты и/или перемычки не ставить), а кусок с FT232 станет половиной тугсграфикса или кого угодно, кто начинается с FT232. Или просто можете его использовать как конвертер TTL<=>RS232_over_USB для общения своих будущих конструкций с компьютером. Наверняка где-нибудь пригодится.

P.S.

nigyl:

reddylab.eu/rclab/
этот вариант мне понравился…

Это уже тритий (или даже можно считать, что четвертый) вариант, который Вам понравился за последние три дня. 😒
Я советую для начала сделать то, что проще и не трудозатратно. Но не примитивно и надежно. Наиболее подходящей для этого я по-прежнему считаю Altera/STK. Если, конечно, есть порт LPT.

P.P.S. Заметьте, при всем богатстве выбора все варианты сводятся к набору из трех микросхем: FT232, буфера и ATMEGA8 в разных комбинациях (кстати, ATMEGA8 уже становится раритетом… Меняется на ATMEGA88). Это я к чему? К тому, что как вы эту детскую коляску не собирайте, а получится все равно автомат Калашникова. Пргорамматор ISP - он и в Африке программатор ISP.

nigyl
EagleB3:

Это уже тритий (или даже можно считать, что четвертый) вариант, который Вам понравился за последние три дня.

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

мне понравился этот программатор тем что его ненадо прошивать… но что он не поддерживает CVAVR это конечно громадный минус…
LPT у меня нет…я конечно могу купить переходник…но не вижу смысла собирать то …что мне надо будет чтобы собрать программатор с usb))

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

leprud

STK500
У меня он есть на базе AVR Butterfly и на базе Bus Pirate

Aleksey_Gorelikov

Я 100 лет назад собрал “протоса”. С прошивкой STK-500 имел глюки в виде необходимости практически при каждом действии с программатором “перетыкать” его в усб ноута (может ноут у меня кривой какой?). С прошивкой “протоса” - AVR910 проблем нет. Но есть несколько “но”. Из под кодевижин не поддерживается страничный режим, т.е. контроллер прошивается, но медленнее, чем мог бы. Поэтому я использую аврпрог от аврстудии. Подпихнул его в кодевижин в свойствах проекта на запуск после компиляции. Вполне удобно. Все хочу, но ленюсь попробовать STK-500 v2, т.е. с аппаратным, а не софтовым усб. Думаю, глюк описанный выше - в кривой реализации софтового усб.

nigyl

кстати …только вспомнил… у меня есть ЦАП\АЦП… работающее от усб… имеюще и аналоговые и цифровые входы выходы…
а может есть смысл на базе него сделать программатор?

ostin

Честно скажу, всю ветку я не прочитал, но к первому сообщению, хочу посоветовать проект arduino (и его клоны - freeduino, boarduino), поглядите - уверен, что заинтересует.

1 month later
Vitec

Я тоже хочу освоить программирование микроконтроллеров, но что-то не за что зацепиться. Может кто-нибудь показать как это делается на конкретном примере.

Вот, например, для начала у меня есть такая минимальная задачка.
Нужно сделать контроллер, который будет управлять проходным светофором железнодорожной автоблокировки. Светофор имеет 3 огня (кто угадает, какие?). Логика его работы такая:

  • Если ограждаемый светофором блок участок занят (на первом входе 0), то горит красный. При этом состояние других входов можно и не проверять.
  • Если этот блок участок свободен (на первом входе 1), то проверяется состояние следующего светофора, от которого тянется отдельный провод, подходит ко второму входу.
  • Если следующий светофор зактыт (на втором входе 0), то горит жёлтый огонь.
  • Если сдедующий светофор открыт (на втором входе 1), то проверяется положение стрелок с помощью третьего входа.
  • Если на третьем входе 1 (стрелки прямо), то горит зелёный огонь.
  • Если на третьем входе 0 (стрелки на боковой путь), то включается жёлтый мигающий огонь.
    Жёлтый огонь должен мигать с частотой около 1 Гц, причём 2/3 периода он включен, а 1/3 - выключен.

Вот так выглядит схема, реализующая этот алгоритм, на логических элементах.

Здесь первый вход назван 11, второй - 12, третий - 13

А вот как я хочу сделать на контроллере. Контроллер PIC12F629

На вход 17 не обращайте внимания, просто с помощью цепи питания я хочу сделать смену направления автоблокировки.

Если найдётся специалист, напишите ассемблеровский файл, если можно, с комментариями. И потом я буду осваивать, что с ним делать дальше.

PARSEK

ИМХО, слишком сложные задачи ставите для начала. Или надежда на то, что кто-то за Вас напишет программу? Начинать нужно хотя-бы с одного светодитода типа помигать, кнопки на входе, типа поуправлять. И почитать что-то вроде вот этого avr123.nm.ru, аналогов в сети полно, и по ПИКАм тоже.

ubd

Виктор, такую простую задачу можно решить на 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

EagleB3
ubd:

Виктор, такую простую задачу можно решить на PIC конроллере, а программу написать на PIC-Basic.

…И смоделировать работу всей конструкции (не прикасаясь к железу) на Proteus VSM. С миганием светодиодов и переключением сигналов на входе.

ubd

И смоделировать работу всей конструкции (не прикасаясь к железу) на Proteus VSM

Нет ну это само собой, для отладки программы.

Vitec

Я думал, сейчас начнутся реплики типа “Это слишком просто, делай на дискретных элементах”, а оказывается это что-то сложное. Не ожидал.
Однако, мне понравилось, что появились компиляторы на основе Бэйсика, я пытался несколько лет назад что-то такое найти, но у меня ничего не получилось. Наверное, это новые компиляторы.

Мне удалось скачать компилятор Proton и книжку про PIC-Basic, подскажите, где можно скачать сам PIC-Basic и книжку про Proton.

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

А может кто-нибудь знает программы, которые компилируют код из графического алгоритма? Ну, знаете, в ромбиках - условия, в прямоугольничках - присвоение, в параллелограммах - ввод/вывод?