Важно! Програматоры , отладчики и софт для AVR

  • Автор темы
P

pavel-pervomaysk

Команда форума
Регист
4 Апр 2006
Сообщения
8.086
AVR микроконтроллеры , и все связаное с ними .

Начинаем тему по микроконтроллерам !
Все кто имеет желание позитивно общатся в теме или делится наработками приглашаем сюда .
Начну с самого простого и необходимого для разработки и обучения .
1) Ссылка на первоисточник www.atmel.com от сюда качаем даташиты , программы , подпрограммы и все самое необходимое , есть еще ссылка , правда не обновляется давненько www.atmel.ru , на ней есть кое что интерестное на русском языке .

2) По ссылке  ссылка скрыта от гостей  качаем бесплатный компилятор-отладчик Avr Studio 4.13 (для тех кто пишет на асме) .

3) На сайте www.lancos.com качаем схему переходника stk300 для LPT порта и делаем ее . (схема и печати с фото приложены в архиве ) .

Данная работа будет вступлением в изучение микроконтроллеров атмел .
По данной тропе их начинал учить я сам , и учу еще :mrgreen: .

4) Софт для программирования АВР на все случаи жизни
 ссылка скрыта от гостей /

Atmel _ monitor.rar
 
L

lee

Участник
Регист
16 Мар 2004
Сообщения
1.089
pavel-pervomaysk сказал(а):
для тех кто пишет на асме
Это язык программирования? А где можно про него почитать?
 
I

ILYAUL

Участник
Регист
15 Окт 2005
Сообщения
423
pavel-pervomaysk, Ты про отладчик не забыл ? Хотя бы Dragon- дешево и сердито и отлично работает с AVR Studio. Оно и попроще будет. Кстати не плохо и книжек подкупить. Для начала хотя бы Джон Мортон " Микроконтроллеры AVR"

Добавлено 25-02-2008 12:30

lee,Assembler- в просторечье асм - язык для прямого общения с процессорами и не важно какими - наиболее короткий путь. В нём конечно есть свои правила , но об этом я думаю Павел ещё расскажет более подробно.
 
L

lee

Участник
Регист
16 Мар 2004
Сообщения
1.089
ILYAUL, так можно ведь на си в студио писать.
 
А

Алексей78

Участник
Регист
16 Дек 2005
Сообщения
219
Тоже занялся данными контролерами , пробую писать на С в CodevisionAvr, понемногу получается, программатор собрал вот этот  ссылка скрыта от гостей 
Чудесно работает,если кому нужно могу выложить печатную плату . А ещё есть отличный сайт по обучению программирования микроконтролеров AVR  ссылка скрыта от гостей / , очень советую. А вообще хорошую тему подняли, будет очень интересно пообщаться на эту тему.
 
I

ILYAUL

Участник
Регист
15 Окт 2005
Сообщения
423
lee, Можно , конечно , но мне приятние "дедовский" способ , ну и понятливее что ли. Думал конечно о CИ, но с чего начать ? Столько литературы ..... И ещё больше мнений об авторах всяких учебников , от восхитительных -до полный ....к
 
А

Алексей78

Участник
Регист
16 Дек 2005
Сообщения
219
Думал конечно о CИ, но с чего начать ? Столько литературы .....
Я облазил кучу форумов посвященных этой теме и все , вернее большинство, в один голос утверждают что лучше писать на С , а если только начинаешь этим заниматься ,как я, то одназначно только С , да к тому же я остановился на С ещё по той причине что на сайте, о котором я писал в предыдущем посте, все уроки именно на С.Есть хорошая книга на эту тему Шпак Ю.А. - Программирование на языке С для AVR и PIC микроконтроллеров
 
K

kumbrov

Участник
Регист
5 Июл 2005
Сообщения
363
www.fastavr.com - прикольный basic to asm транслятор для AVR. сам пользуюсь - очень доволен.
 
P

pavel-pervomaysk

Команда форума
Регист
4 Апр 2006
Сообщения
8.086
ILYAUL сказал(а):
lee,Assembler- в просторечье асм - язык для прямого общения с процессорами и не важно какими - наиболее короткий путь. В нём конечно есть свои правила , но об этом я думаю Павел ещё расскажет более подробно.
Говорю как есть и без вые@@нов . Сам я не имею ценных и сильных знаний в асемблере , и сам очень часто на форумах задаю вопросы !
Только недавно начал учить язык , и пробую на разных примерах простых .
Тему создал для общения и деления знаниями с конференцией .
Сам читаю такие книги:
1) Применение микроконтроллеров AVR : схемы , алгоритмы , программы . Автор В. Н. Баранов

2) Микроконтроллеры AVR семейства Tiny & MEga фирмы ATMEL
Автор А. В. Евстифеев

Сам не против пообщатся со спецами насчет прерываний для начала :)
 
I

ILYAUL

Участник
Регист
15 Окт 2005
Сообщения
423
Я заказываю книги здесь  ссылка скрыта от гостей  по Москве , конечно быстро , но у них есть и доставка почтой.

"Сам не против пообщатся со спецами насчет прерываний для начала" о чём именно?
 
P

pavel-pervomaysk

Команда форума
Регист
4 Апр 2006
Сообщения
8.086
О реализации прерывания для атмела на асме к примеру :)
 
А

Александр777tv

Участник
Регист
25 Дек 2007
Сообщения
26
Ссылки на сайты по микроконтроллерам AVR:
 ссылка скрыта от гостей 
 ссылка скрыта от гостей 
 ссылка скрыта от гостей 
 ссылка скрыта от гостей 

Программирование AVR для начинающих + программа WINAVR:
 ссылка скрыта от гостей 


Книги по AVR:
 ссылка скрыта от гостей 
 ссылка скрыта от гостей 
 
А

Александр777tv

Участник
Регист
25 Дек 2007
Сообщения
26
О реализации прерывания для атмела на асме к примеру

Привожу текст простейшей программы реализующую прерывание по срезу сигнала на выводе 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 - это копирование данных в стек и восстановление из стека.
 
I

ILYAUL

Участник
Регист
15 Окт 2005
Сообщения
423
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

Так , какое прерывание ты хочешь использовать ? Определись.
 
P

pavel-pervomaysk

Команда форума
Регист
4 Апр 2006
Сообщения
8.086
ILYAUL, немного понял :) ,
в моем варианте есть энкодер типа PEC-16 который выдает импульсы сдвинутые по фазе на 45 градусов , насколько я понял его ногу данных нужно вешать на ногу проца INT0 или другую , от которой можно брать прерывание внешнее . Далее пишем подпрограмму обслуживания энкодера и т д .
ЗЫ . Если у кого то есть готовая прога на энкодер , буду рад увидеть ее .
 
M

Murka

Профессор
Регист
16 Мар 2004
Сообщения
2.584
Ещё один программатор ака "avr910" но переделан под USB (не не всех нотиках есть com или lpt) собираюсь сделать
 ссылка скрыта от гостей 
А пользуюсь вот этим на LPT просто, без единой детали!
 ссылка скрыта от гостей 

А вот здесь переведённая на русский документация на некоторые процессоры и переведённые семплы
 ссылка скрыта от гостей 

Добавлено 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, Си нужен для громадных проектов содержащих кучу динамических (для экономии ОЗУ) массивов, а если проект не велик то лучший выбор ассемблер!!
 
P

pavel-pervomaysk

Команда форума
Регист
4 Апр 2006
Сообщения
8.086
 ссылка скрыта от гостей 
Эту штуку сейчас уже травлю , фото устройства скину по готовности .
Все сделал , работает ! Фотки готовняка в архиве 910 .

AVR910USB_2.rar
910.rar
 
V

Vasil_

Забанен
Регист
22 Июл 2007
Сообщения
203
По поводу:
 ссылка скрыта от гостей 
вот здоровенная ветка с участием автора:
 ссылка скрыта от гостей 
Собирал его, но работает неустойчиво, особенно в условиях сильных помех. Благо, в ноуте есть еще СОМ, AVR910 работает на 115к без проблем.
ЗЫ
И вот, читал новости, попалась свежая ветка:
 ссылка скрыта от гостей 
А вобще то Асм, Си, или еще что то, не так важно. Нужно приучить себя правильно составлять алгоритмы. Один из з-нов Мэрфи гласит:
компьютер( микроконтроллер) сделает только то, что вы сказали ему сделать, а не то, что бы вы хотели что б он сделал.
Вот статья из "Радио" о подходе к программированию МК в общем случае на конкретном примере. Иначе в начале получается как у Баха, а потом даже и на кан-кан не похоже :(

prog_MC.rar
 
P

pavel-pervomaysk

Команда форума
Регист
4 Апр 2006
Сообщения
8.086
Кстати протестировал AVR910.usb на CodeVision 1.24 и на AVR Studio 4.13 SP2 . AVR prog 1.40 работает с данным девайсом гараздо быстрее чем CodeVision 1.24 .
 
А

Алексей78

Участник
Регист
16 Дек 2005
Сообщения
219
Кстати протестировал AVR910.usb на CodeVision 1.24 и на AVR Studio 4.13 SP2 . AVR prog 1.40 работает с данным девайсом гараздо быстрее чем CodeVision 1.24 .

Дело в том что AvrProg передаёт данные блоками в отличии от CodeVision, потому и быстрее. Лично я пишу и компилирую программу в CodeVision ,а контролер шъю с помощью AvrProg.

18676 сказал(а):
По поводу:
 ссылка скрыта от гостей 
вот здоровенная ветка с участием автора:
 ссылка скрыта от гостей 
Собирал его, но работает неустойчиво, особенно в условиях сильных помех. Благо, в ноуте есть еще СОМ, AVR910 работает на 115к без проблем.
ЗЫ
Если Вы внимательно читали ветку которую упоминаете в своем посте , то наверное заметили что у большинства этот программатор работает отлично, да есть люди у которых возникли проблемы с этим программатором,но их меньшенство,лично у меня этот программатор работает отлично , да конечно медленее чем STK 200-300
, но LPT порт отмирает ,а удобство пользования этим программатором,я считаю, с лихвой компенсирует потерю в скорости программирования.Да,кстати насколько я знаю автор этого программатора пишет программу для него ,с помощью которой можно будет прошивать контролеры передавая информацию блоками ,как делает это AvrProg.
 
V

Vasil_

Забанен
Регист
22 Июл 2007
Сообщения
203
Алексей78,возможно, у меня он тоже на столе работал отлично, но когда его подносишь к промоборудованию, где туева хуча помех, например от инверторов, УСБ тут же начинает отваливаться. А если воткнуть в ноут блок питания, то девайс вообще не находится. Скорей всего это проблема длинных проводов, ведь не секрет, что на плохих и длинных(без фильтров) шнурках даже принтеры вешаются, и даже на УСБ 1.1

Добавлено 08-03-2008 08:06

ЗЫ, не нашелся бы ноут с СОМ, долбался бы дальше с УСБ, а так проблема решилась(благо, и других хватает :( ) AVR910 + AVR Osp II ( By Mike Henning ) работает шустро, и не сбоит( правда, провода на ферритовые кольца все же накрутил):
 ссылка скрыта от гостей 

Добавлено 08-03-2008 08:42

ЗЫЗЫ, для начала можно попробовать программировать и отлаживать в симуляторах, например Протеус,
Proteus VSM - программа-симулятор микропроцессорных устройств.
Поддерживает МК: PIC, 8051, AVR, HC11, ARM7/LPC2000 и другие распространенные процессоры. Более 6000 аналоговых и цифровых моделей устройств. Работает с большинством компилятором и ассемблерами.
PROTEUS VSM позволяет очень достоверно моделировать и отлаживать достаточно сложные устройства в которых может содержаться несколько МК одновременно и даже разных семейств в одном устройстве!
Программа PROTEUS VSM идеально подходит для новичков, решивших начать изучение микроконтроллеров: Массачусетский технологический университет приобрел более 340 лицензий на пакет PROTEUS - надеюсь, это убедит вас в его полезности для работы и обучения.

!Вы должны ясно понимать, что: Моделирование электронной схемы не абсолютно точно повторяет работу реального устройства!

подборка ссылок на него:
 ссылка скрыта от гостей 
 
A

AlexM

Участник
Регист
16 Мар 2004
Сообщения
885
Алексей78 сказал(а):
Если Вы внимательно читали ветку которую упоминаете в своем посте , то наверное заметили что у большинства этот программатор работает отлично,
Если б не было проблем, не было бы и той ветки. Работает медленно и у многих глючит. Зачем проблемы себе создавать мне не понятно. Возмите просто родной 910 и добавьте переходник USB-to-RS232 .
 ссылка скрыта от гостей 

Или так


 ссылка скрыта от гостей 
 
O

OleghkA

Участник
Регист
16 Мар 2004
Сообщения
601
посоветуйте Avr с 12 разрядным AЦП. в порядке "навороченности".
 
V

Vasil_

Забанен
Регист
22 Июл 2007
Сообщения
203
Все таки АЦП,- это периферия, а не сам МК. Если уж нужна повышенная точность измерений,то лучше взять что нибудь от AD , например. А то боюсь, про ПИКи речь зайдет щас, и начнется религиозная война или что то в этом духе.

Добавлено 14-03-2008 21:26

ЗЫ, в победоносный исход которой, никто не верит.
 
M

Murka

Профессор
Регист
16 Мар 2004
Сообщения
2.584
ADC от AD дорогие дешевле будет от Texas Instruments Incorporated  ссылка скрыта от гостей  Год назад весь инет облазил так шо совет проверенный
 
Верх