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

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.

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

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

ubd

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

Там всё ровно нужно знать архитектуру проца. Конечно если просто светодиодом помигать, то архитектуру знать не нужно, а если что то серьёзнее то нужно.

В этом отношении проще всего PIC-Basic, там архитектуру знать не нужно. Всё просто и очень стабильно работает. Я на этом языке уже наделал кучу полезных схем, из них есть регулятор хода с реверсом, и многое другое.

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

Книг по Протону на русском языке нет в природе. Это так и есть. Я искал и узнавал, оказывается нет. На английском что то есть вроди бы. Но скажу что Протон сильно не отличается от PIC BASIC PRO, так что разницы нет. В протоне есть только какие то дополнительные команды, без которых можно обойтись.
На русском много есть только по PIC Basic PRO.
Вот среда программирования: www.picbasic.ru/load/…/3-1-0-133
Вот компилятор: www.picbasic.ru/load/…/3-1-0-135
Вот полезные книги: www.picbasic.ru/load/3-1-0-50
www.picbasic.ru/load/10-1-0-83
Там же есть и Протеус и много много другого: www.picbasic.ru/load/

УДАЧИ в изучении!

Vitec

Я видел этот сайт, скачать с него нельзя, ссылки зациклены - сказка про белого бычка. 😦

Что образуется на выходе Pic-Basic? Как это зашить в контроллер?

Algorithm Builder. Но - для Atmel’ов.

Когда хорошо знаешь контроллеры, легко работать с разными типами, брать программы для одного, зашивать в другой… Но я пока только осваиваю, выбрал для освоения PIC - вот и буду с ним работать. Изучу - возьмусь за Atmel и прочие.

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

ubd

Я видел этот сайт, скачать с него нельзя, ссылки зациклены - сказка про белого бычка.

Причём тут бычёк, зарегистрироваться нужно и всё.

Что образуется на выходе Pic-Basic? Как это зашить в контроллер?

Как всегда, любой компилятор любого языка программирования, для микроконтроллеров, генерит файл с расширением .hex Вот его то и прошивают в контроллер.

Для прошивки контроллера, нужен программатор. Зашивается просто, нажимаешь кнопку и зашивается, hex файл. Ещё биты конфигурации нужно установить. Для разных типов процов, разные программаторы и программы. Для PIC есть хороший и не сложный программатор ExtraPIC. Если будешь делать дам схему. Для Atmel программатор проще, называется STK-200, есть ещё STK-300 и 500. Но достаточно STK-200. Выше о нём писали.

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

Так ты ассемблер изучать собрался или что? Определись.

Vitec

Вообще хочу изучить ассемблер, но рассмотрю и другие варианты, такие, как Pic-Basic.

ubd:

Для прошивки контроллера, нужен программатор

Есть программатор, называется PICPROG. Осталось только научиться писать программы.
Есть несколько задач, которые я хотел бы возложить на контроллер, одна из них - перед вами.
Есть пару контроллеров, чтобы потренироваться, один из них PIC12F629. К нему есть перевод заводской микрочиповской документации. В нём по отдельности всё понятно, но когда нужно написать программу, мозг вскипает и как писать - непонятно. Поэтому я и спрашиваю, может кто поможет? Кроме того, всё дело тормозит отсутствие информации о правилах самого ассемблера, его дерективах. Во всех источниках это преподносится как само собой разумеющееся, но я-то этого не знаю.

ubd

Я так понял PICBаsic вы проигнорировали. Почему?

Нужно вам искать книгу по ассемблеру с нуля. Или зайдите на www.microchip.su Там на форуме очень много обсуждают ассемблер.

А почему именно ассемблер? Что бы на нём написать вашу простую задачу, нужно много знать.

Vitec

Да не-е-ет, не проигнорировал, просто ещё не скачал PIC-Bаsic. Идея программировать на Бэйсике мне очень нравится. Я помню в университете, в ещё раньше в техникуме, когда изучали Бэйсик, у меня получалось круче всех в группе писать на нём программы, может потому, что впервые я начал на нём писать ещё в детстве на ZX Spectrum. Но идею освоить ассемблер я тоже не оставил, поэтому заданные мной вопросы остаются открытыми. Я считаю, что чем ближе язык программирования к машинным кодам, тем копмактнее получается программа и тем точнее программа отвечает заданным требованиям. Кроме того, многие готовые программы написаны на ассемблере и в них можно будет разобраться, владея этим языком.
За ссылку на микрочип спасибо, обязательно почитаю.
Вот когда скачаю PIC-Bаsic, если сам не разберусь - тогда и буду спрашивать про него, чтобы было более предметно.

ubd

у меня получалось круче всех в группе писать на нём программы, может потому, что впервые я начал на нём писать ещё в детстве на ZX Spectrum.

Вот кстати по этой же причине и у меня получалось круче всех. То же начинал с Spektrum`a.

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

Да это так, компактнее на много.

и тем точнее программа отвечает заданным требованиям.

Не факт, на других языках так же может точно отвечать требованиям. Только есть разница, что бы написать то же самое на ассме, трубется асм знать от и до, и время на написание программы может уйти раз в 5 больше. В отличии от языков высогого уровня. Поэтоум сейчас очень распространён СИ. Прога пишеться быстро и работает быстро, а времени уходит меньше на написание и отладку.

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

Но если есть исходник, а не hex файл.