| Автор | Сообщение |
pavel-pervomaysk monitor.net.ru  Сообщения: 3040
|
Начинаем тему по микроконтроллерам !
Все кто имеет желание позитивно общатся в теме или делится наработками приглашаем сюда .
Начну с самого простого и необходимого для разработки и обучения .
1) Ссылка на первоисточник www.atmel.com от сюда качаем даташиты , программы , подпрограммы и все самое необходимое , есть еще ссылка , правда не обновляется давненько www.atmel.ru , на ней есть кое что интерестное на русском языке .
2) По ссылке http://www.atmel.com/dyn/general/advanced_search_results.asp?device=1& ... качаем бесплатный компилятор-отладчик Avr Studio 4.13 (для тех кто пишет на асме) .
3) На сайте www.lancos.com качаем схему переходника stk300 для LPT порта и делаем ее . (схема и печати с фото приложены в архиве ) .
Данная работа будет вступлением в изучение микроконтроллеров атмел .
По данной тропе их начинал учить я сам , и учу еще .
Atmel _ monitor.rar 150,76 КБ Скачано: 488 раз(а)
|
|
lee monitor.net.ru  Сообщения: 672
|
| pavel-pervomaysk писал: | | для тех кто пишет на асме |
Это язык программирования? А где можно про него почитать? |
|
ILYAUL Мастер Сообщения: 407
|
pavel-pervomaysk, Ты про отладчик не забыл ? Хотя бы Dragon- дешево и сердито и отлично работает с AVR Studio. Оно и попроще будет. Кстати не плохо и книжек подкупить. Для начала хотя бы Джон Мортон " Микроконтроллеры AVR"
Добавлено 25-02-2008 12:30
lee,Assembler- в просторечье асм - язык для прямого общения с процессорами и не важно какими - наиболее короткий путь. В нём конечно есть свои правила , но об этом я думаю Павел ещё расскажет более подробно. |
|
lee monitor.net.ru  Сообщения: 672
|
ILYAUL, так можно ведь на си в студио писать. |
|
Алексей78 Участник Сообщения: 96
|
Тоже занялся данными контролерами , пробую писать на С в CodevisionAvr, понемногу получается, программатор собрал вот этот http://pinokio3000.narod.ru/my_designs/AVR910_USB_Programmer.htm
Чудесно работает,если кому нужно могу выложить печатную плату . А ещё есть отличный сайт по обучению программирования микроконтролеров AVR http://www.avr123.nm.ru/ , очень советую. А вообще хорошую тему подняли, будет очень интересно пообщаться на эту тему. |
|
ILYAUL Мастер Сообщения: 407
|
lee, Можно , конечно , но мне приятние "дедовский" способ , ну и понятливее что ли. Думал конечно о CИ, но с чего начать ? Столько литературы ..... И ещё больше мнений об авторах всяких учебников , от восхитительных -до полный ....к |
|
Алексей78 Участник Сообщения: 96
|
| Цитата: | | Думал конечно о CИ, но с чего начать ? Столько литературы ..... |
Я облазил кучу форумов посвященных этой теме и все , вернее большинство, в один голос утверждают что лучше писать на С , а если только начинаешь этим заниматься ,как я, то одназначно только С , да к тому же я остановился на С ещё по той причине что на сайте, о котором я писал в предыдущем посте, все уроки именно на С.Есть хорошая книга на эту тему Шпак Ю.А. - Программирование на языке С для AVR и PIC микроконтроллеров |
|
kumbrov Участник Сообщения: 209
|
www.fastavr.com - прикольный basic to asm транслятор для AVR. сам пользуюсь - очень доволен. |
|
pavel-pervomaysk monitor.net.ru  Сообщения: 3040
|
| ILYAUL писал: |
lee,Assembler- в просторечье асм - язык для прямого общения с процессорами и не важно какими - наиболее короткий путь. В нём конечно есть свои правила , но об этом я думаю Павел ещё расскажет более подробно. |
Говорю как есть и без вые@@нов . Сам я не имею ценных и сильных знаний в асемблере , и сам очень часто на форумах задаю вопросы !
Только недавно начал учить язык , и пробую на разных примерах простых .
Тему создал для общения и деления знаниями с конференцией .
Сам читаю такие книги:
1) Применение микроконтроллеров AVR : схемы , алгоритмы , программы . Автор В. Н. Баранов
2) Микроконтроллеры AVR семейства Tiny & MEga фирмы ATMEL
Автор А. В. Евстифеев
Сам не против пообщатся со спецами насчет прерываний для начала  |
|
ILYAUL Мастер Сообщения: 407
|
|
pavel-pervomaysk monitor.net.ru  Сообщения: 3040
|
О реализации прерывания для атмела на асме к примеру  |
|
Александр777tv Участник Сообщения: 23
|
|
Александр777tv Участник Сообщения: 23
|
| Цитата: | | О реализации прерывания для атмела на асме к примеру |
Привожу текст простейшей программы реализующую прерывание по срезу сигнала на выводе INT0 для контроллера ATtiny26.
На языке Си:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#define F_CPU 8000000UL // 8 MHz
INTERRUPT (SIG_INTERRUPT0)
{
PORTA ^= 0xff;
}
int main(void)
{
DDRA = 0xff;
GIMSK = 0x40;
MCUCR = 0x02;
sei();
while(1);
}
Фрагмент той же программы на Assembler:
00000000 <__vectors>:
0: 0b c0 rjmp .+22 ; 0x18 <__ctors_end>
2: 23 c0 rjmp .+70 ; 0x4a <__bad_interrupt>
4: 22 c0 rjmp .+68 ; 0x4a <__bad_interrupt>
6: 21 c0 rjmp .+66 ; 0x4a <__bad_interrupt>
8: 20 c0 rjmp .+64 ; 0x4a <__bad_interrupt>
a: 1f c0 rjmp .+62 ; 0x4a <__bad_interrupt>
c: 1e c0 rjmp .+60 ; 0x4a <__bad_interrupt>
e: 1d c0 rjmp .+58 ; 0x4a <__bad_interrupt>
10: 1c c0 rjmp .+56 ; 0x4a <__bad_interrupt>
12: 1b c0 rjmp .+54 ; 0x4a <__bad_interrupt>
14: 1a c0 rjmp .+52 ; 0x4a <__bad_interrupt>
16: 19 c0 rjmp .+50 ; 0x4a <__bad_interrupt>
00000018 <__ctors_end>:
18: 11 24 eor r1, r1
1a: 1f be out 0x3f, r1 ; 63
1c: cf ed ldi r28, 0xDF ; 223
1e: cd bf out 0x3d, r28 ; 61
00000020 <__do_copy_data>:
20: 10 e0 ldi r17, 0x00 ; 0
22: a0 e6 ldi r26, 0x60 ; 96
24: b0 e0 ldi r27, 0x00 ; 0
26: ec e6 ldi r30, 0x6C ; 108
28: f0 e0 ldi r31, 0x00 ; 0
2a: 03 c0 rjmp .+6 ; 0x32 <.do_copy_data_start>
0000002c <.do_copy_data_loop>:
2c: c8 95 lpm
2e: 31 96 adiw r30, 0x01 ; 1
30: 0d 92 st X+, r0
00000032 <.do_copy_data_start>:
32: a0 36 cpi r26, 0x60 ; 96
34: b1 07 cpc r27, r17
36: d1 f7 brne .-12 ; 0x2c <.do_copy_data_loop>
00000038 <__do_clear_bss>:
38: 10 e0 ldi r17, 0x00 ; 0
3a: a0 e6 ldi r26, 0x60 ; 96
3c: b0 e0 ldi r27, 0x00 ; 0
3e: 01 c0 rjmp .+2 ; 0x42 <.do_clear_bss_start>
00000040 <.do_clear_bss_loop>:
40: 1d 92 st X+, r1
00000042 <.do_clear_bss_start>:
42: a0 36 cpi r26, 0x60 ; 96
44: b1 07 cpc r27, r17
46: e1 f7 brne .-8 ; 0x40 <.do_clear_bss_loop>
48: 05 c0 rjmp .+10 ; 0x54 <main>
0000004a <__bad_interrupt>:
4a: da cf rjmp .-76 ; 0x0 <__vectors>
0000004c <INTERRUPT>:
#define F_CPU 8000000UL // 8 MHz
INTERRUPT (SIG_INTERRUPT0)
{
PORTA ^= 0xff;
4c: 8b b3 in r24, 0x1b ; 27
4e: 80 95 com r24
50: 8b bb out 0x1b, r24 ; 27
52: 08 95 ret
00000054 <main>:
}
int main(void) // начало основой программы
{
После метки <__vectors> перечисляются векторы прерываний. По адресу 0 записан вектор прерывания по срезу сигнала на выводе INT0. Все остальные возможные прерывания не используются <__bad_interrupt>.
После метки <__ctors_end> идет обнуление регистра SREG, а следовательно запрет прерывания.
Фрагмент программы начиная с адреса 18 до адреса 48 - это копирование данных в стек и восстановление из стека. |
|
ILYAUL Мастер Сообщения: 407
|
| pavel-pervomaysk писал: | О реализации прерывания для атмела на асме к примеру  |
Давай попробуем понять о чём пойдёт речь.
1.Прерывание можно инициировать большим числом факторов.
а) Условно разделив на аппаратные ( внешние прерывания ) и программные , которые могут возникнуть в любой точке основной программмы , - при установке определённого флага в SREG + прерывание от каждого встроенного устройства в твоей модели + при арифметических операциях , в данном случае условие ты задаёшь сам и они меняются в зависимости от твоих вычислений + по опросу входов портов .
Если прерывание возникло по установке какого-то флага , то легче всего обратится к встроенной к таблице векторов прерывания для твоей модели AVR (обычно это младшие ячейки памяти прграммы куда ты можешь записать команду RJMP LABEL например RJMP INT0
Если в это прерывание разрешено и в SREG установлен флаг глобального разрешения прерывания , то при его возникновении ты автоматически " попадаешь" на метку INT0 , флаг глобального разрешения в SREG сброшен . AVR так устроен , что это он делает автоматом и пока ты в программе обработки данного прерывания - другие тебе не "страшны" , если конечно ты не инициируешь сам в этой подпрограмме разрешение - 7 bit SREG=1
Прервусь - Команда RCALL LABEL используется когда ты хочешь вызвать обработку по какому-то одному ведомому тебе условию ( например при опросе портов или арифметики) - она хоть и не явная , но всё таки команда обработки прерывания . И ей обычно всегда предшествует команда JMP LABEL, где LABEL метка напротив команды RCALL.
Сразу после перехода не забудь сохранить те регистры , которые тебе будут нужны в неизменном виде после выхода из подпрограммы
PUSH REG затолкнуть регисто в стек
................
...............
POP REG вынуть регистр из стека
RETI вернутся в MAIN установив 7bit SREG в 1
Так , какое прерывание ты хочешь использовать ? Определись. |
|
pavel-pervomaysk monitor.net.ru  Сообщения: 3040
|
ILYAUL, немного понял ,
в моем варианте есть энкодер типа PEC-16 который выдает импульсы сдвинутые по фазе на 45 градусов , насколько я понял его ногу данных нужно вешать на ногу проца INT0 или другую , от которой можно брать прерывание внешнее . Далее пишем подпрограмму обслуживания энкодера и т д .
ЗЫ . Если у кого то есть готовая прога на энкодер , буду рад увидеть ее . |
|
Murka Профессор Сообщения: 1007
|
Ещё один программатор ака "avr910" но переделан под USB (не не всех нотиках есть com или lpt) собираюсь сделать
http://prottoss.com/projects/AVR910.usb.prog/AVR910_USB_Programmer.htm
А пользуюсь вот этим на LPT просто, без единой детали!
http://avr.nikolaew.org/progr.htm
А вот здесь переведённая на русский документация на некоторые процессоры и переведённые семплы
http://www.gaw.ru/html.cgi/txt/ic/Atmel/micros/avr/start.htm
Добавлено 03.03.2008 00:48
pavel-pervomaysk, а привязка к атмел обязательна? сушествуют процессоры со встроенными таймерами готовыми работать в режиме энкодера, мы (у меня на работе) использовали Renesas H8/2612 в нём два таких энкодера тестировали на 10 мгц test:OK
Добавлено 03.03.2008 00:49
да там встроенная защита от дребезга!!!
Добавлено 03.03.2008 00:51
и ещё не 45 градусов а 90!! Или я ошибаюсь бывают и такие?
Добавлено 03.03.2008 00:56
Алексей78, Си нужен для громадных проектов содержащих кучу динамических (для экономии ОЗУ) массивов, а если проект не велик то лучший выбор ассемблер!! |
|
pavel-pervomaysk monitor.net.ru  Сообщения: 3040
|
|
Vasil_ Забанен  Сообщения: 242
|
По поводу:
http://prottoss.com/projects/AVR910.usb.prog/AVR910_USB_Programmer.htm
вот здоровенная ветка с участием автора:
http://electronix.ru/forum/index.php?showtopic=18676&st=630
Собирал его, но работает неустойчиво, особенно в условиях сильных помех. Благо, в ноуте есть еще СОМ, AVR910 работает на 115к без проблем.
ЗЫ
И вот, читал новости, попалась свежая ветка:
http://electronix.ru/forum/index.php?showtopic=44170&st=30
А вобще то Асм, Си, или еще что то, не так важно. Нужно приучить себя правильно составлять алгоритмы. Один из з-нов Мэрфи гласит:
компьютер( микроконтроллер) сделает только то, что вы сказали ему сделать, а не то, что бы вы хотели что б он сделал.
Вот статья из "Радио" о подходе к программированию МК в общем случае на конкретном примере. Иначе в начале получается как у Баха, а потом даже и на кан-кан не похоже 
prog_MC.rar 149,31 КБ Скачано: 255 раз(а)
|
|
pavel-pervomaysk monitor.net.ru  Сообщения: 3040
|
Кстати протестировал AVR910.usb на CodeVision 1.24 и на AVR Studio 4.13 SP2 . AVR prog 1.40 работает с данным девайсом гараздо быстрее чем CodeVision 1.24 . |
|
Алексей78 Участник Сообщения: 96
|
| Цитата: | | Кстати протестировал AVR910.usb на CodeVision 1.24 и на AVR Studio 4.13 SP2 . AVR prog 1.40 работает с данным девайсом гараздо быстрее чем CodeVision 1.24 . |
Дело в том что AvrProg передаёт данные блоками в отличии от CodeVision, потому и быстрее. Лично я пишу и компилирую программу в CodeVision ,а контролер шъю с помощью AvrProg.
Если Вы внимательно читали ветку которую упоминаете в своем посте , то наверное заметили что у большинства этот программатор работает отлично, да есть люди у которых возникли проблемы с этим программатором,но их меньшенство,лично у меня этот программатор работает отлично , да конечно медленее чем STK 200-300
, но LPT порт отмирает ,а удобство пользования этим программатором,я считаю, с лихвой компенсирует потерю в скорости программирования.Да,кстати насколько я знаю автор этого программатора пишет программу для него ,с помощью которой можно будет прошивать контролеры передавая информацию блоками ,как делает это AvrProg. |
|
Vasil_ Забанен  Сообщения: 242
|
Алексей78,возможно, у меня он тоже на столе работал отлично, но когда его подносишь к промоборудованию, где туева хуча помех, например от инверторов, УСБ тут же начинает отваливаться. А если воткнуть в ноут блок питания, то девайс вообще не находится. Скорей всего это проблема длинных проводов, ведь не секрет, что на плохих и длинных(без фильтров) шнурках даже принтеры вешаются, и даже на УСБ 1.1
Добавлено 08-03-2008 08:06
ЗЫ, не нашелся бы ноут с СОМ, долбался бы дальше с УСБ, а так проблема решилась(благо, и других хватает ) AVR910 + AVR Osp II ( By Mike Henning ) работает шустро, и не сбоит( правда, провода на ферритовые кольца все же накрутил):
http://www.qrz.ru/shareware/detail/583
Добавлено 08-03-2008 08:42
ЗЫЗЫ, для начала можно попробовать программировать и отлаживать в симуляторах, например Протеус,
Proteus VSM - программа-симулятор микропроцессорных устройств.
Поддерживает МК: PIC, 8051, AVR, HC11, ARM7/LPC2000 и другие распространенные процессоры. Более 6000 аналоговых и цифровых моделей устройств. Работает с большинством компилятором и ассемблерами.
PROTEUS VSM позволяет очень достоверно моделировать и отлаживать достаточно сложные устройства в которых может содержаться несколько МК одновременно и даже разных семейств в одном устройстве!
Программа PROTEUS VSM идеально подходит для новичков, решивших начать изучение микроконтроллеров: Массачусетский технологический университет приобрел более 340 лицензий на пакет PROTEUS - надеюсь, это убедит вас в его полезности для работы и обучения.
!Вы должны ясно понимать, что: Моделирование электронной схемы не абсолютно точно повторяет работу реального устройства!
подборка ссылок на него:
http://adsh.ukrweb.net/radiohobby/viewtopic.php?id=1450&p=6 |
|
AlexM Участник Сообщения: 462
|
|
OleghkA Участник Сообщения: 187
|
посоветуйте Avr с 12 разрядным AЦП. в порядке "навороченности". |
|
Vasil_ Забанен  Сообщения: 242
|
Все таки АЦП,- это периферия, а не сам МК. Если уж нужна повышенная точность измерений,то лучше взять что нибудь от AD , например. А то боюсь, про ПИКи речь зайдет щас, и начнется религиозная война или что то в этом духе.
Добавлено 14-03-2008 21:26
ЗЫ, в победоносный исход которой, никто не верит. |
|
Murka Профессор Сообщения: 1007
|
|
Vasil_ Забанен  Сообщения: 242
|
Согласен, АД фирма не дешевая, например AD676 покупали в прошлом годе за 430грн.(~$86), но и TI тоже, -экзотика, а экзотика трошки денег стоит, и ждать приходится. |
|
Murka Профессор Сообщения: 1007
|
Не по ADC я не спец только по DAC (управление высокоточными приводами) так шо звиняйте
Добавлено 16.03.2008 00:01
мы купили за 30 грн от TI то что у AD стоит 30$ |
|
Vasil_ Забанен  Сообщения: 242
|
Да вобщем то АД покупали потому, что в оборудовании навернулся, а не потому, что понравился(АЦП). А у кого брали TI ?, это как бы, на заметку. Хотя в основном (и не очень часто надо) хватает и бортовых 10ти бит, это как бы, к посту OleghkA. |
|
Murka Профессор Сообщения: 1007
|
|
Vasil_ Забанен  Сообщения: 242
|
Murka, спасибо, не нужно искать.У VDmais как раз АД и покупали. Вот:
http://www.biakom.com/ , может пригодится, вроде бы нормальные пацаны. |
|
Vitaly Великий Нехочуха Сообщения: 2802
|
Господа, сильно не кидайте тухлыми яйцами, хочу спросить: существует ли в природе эмулятор тех же самых Атмелей, работающий програмно, без железа, т.е. рисует схему, показывает состояние на портах, состояние регистров, стека, векторов прерываний и прочую лабуду, пишет сколько тактов занимает определенная операция и работа только с асмом?
Если да, то как обзывается, где почитать о ней и, пардон за наглость, краем глаза взглянуть на нее.  |
|
Vasil_ Забанен  Сообщения: 242
|
Ну дык, прямиком на www.atmel.com и качаем AVR Studio(божья коровка, вроде сама по себе баг, но поедает вредных багов ) , или Протеус, см. ссылку выше, правда только вчера сказали мне друзья, что обнаружили в нем баги...Сам предпочитаю отлаживать прямо в железе.
ЗЫ, "эмулятор... работающий программно", это все же- симулятор.
ЗЫЗЫ смотрю, ты на Гарденов "подсел"  |
|
Реклама Показывается для незарегистрированных пользователей |
|
|