avatar_Бандерівець

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

Автор Бандерівець, 20-08-2011, 21:51:48

Попередня тема - Наступна тема

0 Користувачі і 2 Гостей дивляться цю тему.

m16

и потом частота программирования о которой я писал выше
[attach=1]

БандерівецьTopic starter

m16, Ну да перебирал, причем CodeVisionAVR видит LPT1-LPT3, хотя реально у меня только LPT3. Побывал LPT3 выставлять как LPT1, тоже не работает,  номер порта поменялся, но адрес порта остался старый. 
А ponyprog выставляет LPT2, и изменить нельзя, окно не активно.

m16

Цитата: vovanxp від 30-08-2011, 11:53:53сейчас попробую перейти на внешний кварц
не торописа , случайно прошьёшь на внешнее тактирования и аля-улю - лишний гемор . что тебе кварц , пусть лежит жрать не просит.


БандерівецьTopic starter

#93
Вот почему не работало.
[attach=1]
Адреса портов разные. 

Можно так попробовать, в  файле cvavr.ini прописать вручную свой порт, параметр LptPort. Дома попробую

БандерівецьTopic starter

#94
m16,
Для того чтоб выставить частоту камня 16 MHz, схема http://microsin.ru/images/stories/hard/avr-usb-mega16-sch.jpg, нужно выставить FUSE так как у меня на скриншоте?
[attach=1]
SKSEL0..3 = 1 External Crystal, SUT не меняем, по умолчанию задержка 65ms, CKOPT = 0, выставляем повышенное напряжение. Правильно?
По даташит так нужно выставлять, а некоторые стати пишут что это настройка не внешний тактовый генератор.

Borbos

#95
Кстати о простейших программаторах.
Цитата
Безмозглые программаторы, как правило, дешевые, очень простые в изготовлении и наладке. Но при этом обычно работают исключительно через архаичные COM или LPT порты. Которые найти в современном компьютере целая проблема. А еще требуют прямого доступа к портам, что уже в Windows XP может быть проблемой. Плюс бывает зависимость от тактовой частоты процессора компьютера.

Так что твой 3ГГЦ-овый десятиядерный монстр может пролететь, как фанера над Парижем.

Идеальный компьютер для работы с такими программаторами это какой-нибудь PIII-800Mhz с Windows98...XP.
# Программатор Громова.
Простейшая схема, работает через оболочку UniProf(удобнейшая вещь!!!), но имеет ряд проблем. В частности тут COM порт используется нетрадиционно и на некоторых материнках может не заработать. А еще на быстрых компах часто не работает.
   
Цитата: vovanxp

Если честно я считаю что это бред.  Спрошу еще m-16 что он думает поэтому поводу. Интересно стало самому. Если это не бред то тогда почему глючит.
Подскажите кто соображает в этом!
ɐwʎ ɔ vǝmоɔ dиw

Borbos

 Пытаюсь научиться писать программы сначала на Ассемблере.Многие книжки и авторы в инете считает примерно так.
ЦитатаЕсли ты впервые столкнулся с микроконтроллерами, то наверняка у тебя стал выбор на чем писать.

На Си или на Ассемблере. Выбор не прост, не зря программисты однокристальщики раскололись на два непримиримых лагеря. Одни с пеной у рта доказывают, что те кто пишут на Си лохи изнеженные, а настоящий брутальный кодер должен воспринимать только ассемблер. Другие же, усераясь, доказывают, что на ассемблере разве что лампочками помигать можно, а какой либо серьезный проект делать на низком уровне невозможно.

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

Assembler+
Парадоксально, но под микроконтроллеры писать на ассемблере ничуть не сложней чем на Си. В самом деле, программирование контроллера неотделимо от его железа. А когда пишешь на ассемблере, то обращаешься со всей периферией контроллера напрямую, видишь что происходит и как это происходит. Главное, что при этом ты четко понимаешь что, как и зачем ты делаешь. Очень легко отлаживать и работа программы как на ладони.
Да и сам ассемблер изучается очень быстро, за считанные дни. Достаточно постоянно иметь перед глазами систему команд и навык программирования алгоритмов. А соответствующее состояние мозга, когда начинаешь мыслить ассемблерными конструкциями наступает очень быстро.

C-
А вот с высокими языками, например с Си, ситуация уже куда хуже. Да, повторить какой нибудь пример из обучалки, вроде вывода строки на дисплей, Сях куда проще, подключил нужную библиотеку, набрал стандартную команду и вот тебе результат. Но это только так кажется. На самом деле, стоит чуть вильнуть в сторону, как начинается темный лес. Особенно когда дело начинает касаться адресации разных видов памяти, работе на прерываниях, использованию многопоточных процессов, использующих одни и те же ресурсы.

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

В таких случаях обычно открывают листинг и смотрят что там происходит в коде на уровне команд процессора, но вот засада — без знания ассемблера там делать нечего! Зато если понимаешь то как работает программа на уровне команд, то найти багу вроде срыва стека или нарушения атомарного доступа проще простого.
И я в принципе согласен с этим.Хотя изучение мне даётся с бо'льшим трудом чем я ожидал.Вова думает по другому.
Цитата: vovanxp
Стоп
Какой ассемблер? Ты будешь несколько лет делать автоматизацию на нем.
Пока не поздно переходи на си.

В наш век когда растет мощность процессоров и контролеров писать на ассемблере это как извращение.

Я понимаю м16 который пишет на ассемблере с 1980 года, у него опыта огооо не только опыта а и много готовых решений которые но просто копирует и подправляет.
IMXO.
Кто реально пишет программы скажите как быть?
ɐwʎ ɔ vǝmоɔ dиw

БандерівецьTopic starter

#97
Начну с начало.

Ассеемблер - это язык программирования низкого уровня, машинный язык. Всегда языки низкого уровня были тяжелыми для написания программ, плюс в том что программы написанные на ассемблере быстро работают и занимают мало памяти.
Склоняю голову перед теми людьми которые хорошо пишут на ассемблере. В свое время я тоже учил ассеемблер и неоднократно к нему возвращался, но его учил не для того чтоб писать программы, а чтоб лучше изучить структуру, работу, процессоров... почувствовать их. На ассеемблере  пишут когда предъявляются требования к быстроте и памяти и пишут дядьки которым я гожусь в сыновья, у которых опыта горы и мне до них не дотянутся, другое время пришло .

С, С++, язык высокого уровня(отличие С от С++ в том что в последнем есть классы), написание и отладка программ написаных на языке С не занимает сравнительно много рутинной роботы(в сравнении С# тогда занимают ;) ) , вид программ наглядный, писать удобно. Но все компиляторы программ которые написаны на языке высокого уровня компилируют не оптимально по сравнении с языками низкого уровня.

Пришло время когда современные технологи скачком рванули вперед, можно пожертвовать оптимальным скомпилированным кодом ради удобства создания программы, программы которые написаны на языках высокого уровня пишутся намного быстрее чем на языках низкого уровня. Цена ATMEG16 отличается от ATMEG32 в 0,5 доллара.
Теперешнии микропроцессоры могут работать на частота и до 400-600 Мгц(при чем оптимизированная структура, например MIPS  или MIPSEL), у меня роутер работает на 250 Мгц, на нем стоит линукс который написанный на С, прошивка собранная мною, а теперь представьте сколько бы времени ушло на создание такой прошивки на написанной на ассемблере. Многие годы.
Тенденция к увеличения памяти и мощности увеличивается, то есть перспектива за языками высокого уровня, тогда вопрос зачем учить ассемблер для программирования(не для себя)? Если через 5-10-15 лет ассемблер уйдет как такие языка как ада, PL1, Fortran. А если через 2-3-5 лет выйдет супер устройство которое легко модно программировать на языках высокого уровня, можно будет написать хорошую программу за короткое время. Та что вы для себя выберете, на перспективу.

Borbos Давай так, напиши программу для снятия температуры с датчиков и вывод ее на LCD-экран. На С это занимает несколько строчек кода(около 10-ти, не считал). Пока ты будешь учить ассемблер охота пропадет програмить ;) :D


IMXO

Borbos

#98
Цитата: vovanxp від 30-08-2011, 19:57:18его учил не для того чтоб писать программы, а чтоб лучше изучить структуру, работу, процессоров... почувствовать их
Вот поэтому мне придётся изучать Ассемблер. Если начинаю с С как в обучалках все равно возникают вопросы и приходится лезть в основы то есть в  Ассемблер.
Я уже несколько лет отмахивался от микроконтроллеров обходясь по старинке аналогом,ТТЛ и КМОП. Теперь всё чаще сталкиваюсь с необходимость применения МК. Так что придётся учить.

ɐwʎ ɔ vǝmоɔ dиw

Borbos

Класс у нас было два нерешаемых противоречия:
Ректификат или дистиллят.
Медь или нержавейка.

Теперь ещё будет Ассемблер или С. ;) :D :-\
ɐwʎ ɔ vǝmоɔ dиw

Borbos

Цитата: vovanxp від 30-08-2011, 19:57:18Borbos Давай так, напиши программу для снятия температуры с датчиков и вывод ее на LCD-экран. На С это занимает несколько строчек кода(около 10-ти, не считал). Пока ты будешь учить ассемблер охота пропадет програмить ;) :D
Очень надеюсь что нет. ;)

ɐwʎ ɔ vǝmоɔ dиw

m16

vovanxp, с фузами попрёт.

Дума о программаторе

Як би ви знали паничi як програмують у ночi.....

есть некоторый опыт , могу поделиться.
начинал я с простейшего сом программатора НО , все сигнальные линии буферизировал триггерами шмидта  555ТЛ2. в стк-200 ставил 74НС244. для чего нужен буфер.  шлейф , соединяющий  программатор с контроллером, должен быть минимальной длины 15-20см. на большой длине шлейф подвержен наводкам извне, паразитные ёмкости искажают форму программирующих импульсов  что может привести к ошибкам программирования кристалла. буфер позволяет эти факторы свести к минимуму. нужно ли делать стк-200 ? да нужно . если вас увлекло программирование МК  то вам нужен более серьёзный инструмент, а он как правило построен на атмелевском процике  а в него нужно чем-то залить прошивку. вот тут-то и сгодится стк-200.
программатор делаем на макетке , если есть желание - можно вытравить плату.

[attach=1]

выбираем программатор.
итак простенький у нас имеется.  дабы не было обидно за потраченное время и силы рекомендую повторять программаторы которые поддерживаются их авторами. т.е. устраняются глюки (программные) , добавляются новые камни . примеров масса . чтобы вас не утруждать выбором  рекомендую  делать клоны  программаторов  атмела это - stk-500 ,  avrisp mkII.




Borbos

Цитата: Сергей від 31-08-2011, 00:11:37
http://www.masterkit.ru/main/set.php?code_id=255327

http://easyelectronics.ru/programmator-stk200300-dlya-mikrokontrollerov-avr.html

http://master-kit.com/catalog/127/
Guests are not allowed to view images in posts, please Register or Login

Стоимость BM9009 11$,а микросхемы на которой он сделан  0,3$!!!
Guests are not allowed to view images in posts, please Register or Login

Сергей, не хочешь попробовать спаять какой?
В сети полно более приемлемых вариантов.
ɐwʎ ɔ vǝmоɔ dиw

Borbos

Цитата: Сергей від 31-08-2011, 00:54:56
Borbos, Ужо есть ::)
Ну и написал-бы что есть,как в работе.Что и чем шьёшь.А не переносил гугловские ссылки.
ɐwʎ ɔ vǝmоɔ dиw

Игорь

#104
Крутой кодер пишет нулями и единицами :) а не на си или ассемблере.

Господа кодеры, поясните сантехнику пжлст...

Как я понимаю, независимо от языка, на котором написана программа,  все равно переводчик (дефлегматор или компилятор - я не силен в теории) все равно переводит её в машинные коды. А раз так, теоретически могут существовать компиляторы, переводящие программы на процессорный язык с другого языка программирования - с VB, к примеру. Существуют ли они? Дело в том, что я что-то шкрябал на VBаsic, что-то даже работало. Вон - старт-стоп мой до сих пор живет на ХД, любители управления с компьютера пользуются, развивают прграмм, первые пару версий которой, её основу написал и запустил в работу я...
Поэтому мне для старта было бы проще делать шаги в неизвестном направлении контроллеров, опираясь на то, с чем уже знаком. Я понимаю, что хоть немного разбираясь в основах программирования на одном языке, освоить азы другого - не проблема. Сам увидел - с первого раза сразу что-то получилось и на HTML, и в РНР.
Подозреваю, что на свой вопрос я сам уже имею ответ...
Наверное удобные визуализаторы, отладчики и эмуляторы поддерживают си, и только си...
Асемблер, кстати, тоже не особо пугает. Свои первые шаги в программировании я делал в начале 80-х с калькуллятором МК-61  в руках, персональных компьютеров тогда еще не было. И программы для него приходилось писать на языке,который ближе к ассемблеру, чем к си :) Да и слово Фортран для меня - не пустой звук.
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

SMF spam blocked by CleanTalk