Atmega162
-
Archangel089
- Родился
- Сообщения: 12
- Зарегистрирован: Ср июл 21, 2010 23:04:18
- Откуда: Петропавловск-Камчатский
Atmega162
Доброго времяни суток!
Года 2 назад программировал на 90s2313. Недавно купил себе Atmega162. И не могу написать даже самой простой программы-моргание диода. Подскажите пожалуйста исходный код на ассемблере!
Зы- для компиляции использую avr studio 4 и для прошивки avreal
Года 2 назад программировал на 90s2313. Недавно купил себе Atmega162. И не могу написать даже самой простой программы-моргание диода. Подскажите пожалуйста исходный код на ассемблере!
Зы- для компиляции использую avr studio 4 и для прошивки avreal
Приветствую прямые ссылки. Ибо Internet на камчатке не из дешевых....
- Реклама
-
SII
- Вымогатель припоя
- Сообщения: 635
- Зарегистрирован: Пт янв 30, 2009 14:50:35
- Откуда: Солнечногорск
Re: Atmega162
Код Вам не напишут хотя бы потому, что неизвестно, к какой ноге прицеплен светодиод, а значит, непонятно, какой ногой нужно дрыгать, чтобы он мигал (а номер ноги зависит ещё и от вида корпуса микросхемы -- вроде 2 варианта существуют). И вообще, в чём проблема-то? Программа ж элементарнее некуда...
-
Archangel089
- Родился
- Сообщения: 12
- Зарегистрирован: Ср июл 21, 2010 23:04:18
- Откуда: Петропавловск-Камчатский
Re: Atmega162
Atmega162-16pu.
Ну пускай будет на первой ножке-pb0.
Знаю что элементарно. Но что то не могу сделать даже этого. Хотя поднимал все старые записи. Может быть все из за того, что другой контролер...
Ну пускай будет на первой ножке-pb0.
Знаю что элементарно. Но что то не могу сделать даже этого. Хотя поднимал все старые записи. Может быть все из за того, что другой контролер...
Приветствую прямые ссылки. Ибо Internet на камчатке не из дешевых....
-
SII
- Вымогатель припоя
- Сообщения: 635
- Зарегистрирован: Пт янв 30, 2009 14:50:35
- Откуда: Солнечногорск
Re: Atmega162
Что-нибудь в этом роде:
Код: Выделить всё
.CSEG
.ORG 0
; =======================
;
; Таблица векторов прерываний
;
; =======================
jmp Reset ; Сброс, включение питания, сторожевой таймер
jmp _IRQ ; Внешнее прерывание INT0
jmp _IRQ ; Внешнее прерывание INT1
jmp _IRQ ; Внешнее прерывание INT2
jmp _IRQ ; Pin Change Interrupt Request 0
jmp _IRQ ; Pin Change Interrupt Request 1
jmp _IRQ ; Timer/Counter3 Capture Event
jmp _IRQ ; Timer/Counter3 Compare Match A
jmp _IRQ ; Timer/Counter3 Compare Match B
jmp _IRQ ; Timer/Counter3 Overflow
jmp _IRQ ; Timer/Counter2 Compare Match
jmp _IRQ ; Timer/Counter2 Overflow
jmp _IRQ ; Timer/Counter1 Capture Event
jmp _IRQ ; Timer/Counter1 Compare Match A
jmp _IRQ ; Timer/Counter1 Compare Match B
jmp _IRQ ; Timer/Counter1 Overflow
jmp _IRQ ; Timer/Counter0 Compare Match
jmp _IRQ ; Timer/Counter0 Overflow
jmp _IRQ ; Serial Transfer Complete
jmp _IRQ ; USART0, Rx Complete
jmp _IRQ ; USART1, Rx Complete
jmp _IRQ ; USART0 Data Register Empty
jmp _IRQ ; USART1 Data Register Empty
jmp _IRQ ; USART0, Tx Complete
jmp _IRQ ; USART1, Tx Complete
jmp _IRQ ; EEPROM Ready
jmp _IRQ ; Analog Comparator
jmp _IRQ ; Store Program Memory Ready
_IRQ: reti
; =======================
;
; Точка входа по сбросу/включению питания
;
; =======================
Reset:
; Инициализация указателя стека: вершина по адресу 4FF (конец ОЗУ)
ldi R16, 4
out SPH, R16
ldi R16, 0xFF
out SPL, R16
; Инициализация порта B (линия 0 работает на выход)
ldi R16, 0x01
out DDRB, R16
Loop:
; Выдача на PB0 единицы
ldi R16, 0x01
out PORTB, R16
; Задержка
ldi R31, 0xFF
ldi R30, 0xFF
L1: sbiw R31:R30, 1
brne L1
; Выдача на PB0 нуля
ldi R16, 0x00
out PORTB, R16
; Задержка
ldi R31, 0xFF
ldi R30, 0xFF
L2: sbiw R31:R30, 1
brne L2
rjmp Loop
-
Archangel089
- Родился
- Сообщения: 12
- Зарегистрирован: Ср июл 21, 2010 23:04:18
- Откуда: Петропавловск-Камчатский
Re: Atmega162
Большое спасибо!
Ещё буду очень признателен за ссылки на учебники по данному способу программирования, ибо первый раз вижу такое исполнение...
Ещё буду очень признателен за ссылки на учебники по данному способу программирования, ибо первый раз вижу такое исполнение...
Приветствую прямые ссылки. Ибо Internet на камчатке не из дешевых....
- Реклама
-
SII
- Вымогатель припоя
- Сообщения: 635
- Зарегистрирован: Пт янв 30, 2009 14:50:35
- Откуда: Солнечногорск
Re: Atmega162
Ссылки уж точно не ко мне, я программированию учился четверть века назад. Ну а документацию по контроллеру можно (и нужно) найти на сайте Атмел.
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Atmega162
SII писал(а):Что-нибудь в этом роде:
Код: Выделить всё
.CSEG .ORG 0 ; ======================= ; ; Таблица векторов прерываний ; ; ======================= jmp Reset ; Сброс, включение питания, сторожевой таймер jmp _IRQ ; Внешнее прерывание INT0 jmp _IRQ ; Внешнее прерывание INT1 jmp _IRQ ; Внешнее прерывание INT2 jmp _IRQ ; Pin Change Interrupt Request 0 jmp _IRQ ; Pin Change Interrupt Request 1 jmp _IRQ ; Timer/Counter3 Capture Event jmp _IRQ ; Timer/Counter3 Compare Match A jmp _IRQ ; Timer/Counter3 Compare Match B jmp _IRQ ; Timer/Counter3 Overflow jmp _IRQ ; Timer/Counter2 Compare Match jmp _IRQ ; Timer/Counter2 Overflow jmp _IRQ ; Timer/Counter1 Capture Event jmp _IRQ ; Timer/Counter1 Compare Match A jmp _IRQ ; Timer/Counter1 Compare Match B jmp _IRQ ; Timer/Counter1 Overflow jmp _IRQ ; Timer/Counter0 Compare Match jmp _IRQ ; Timer/Counter0 Overflow jmp _IRQ ; Serial Transfer Complete jmp _IRQ ; USART0, Rx Complete jmp _IRQ ; USART1, Rx Complete jmp _IRQ ; USART0 Data Register Empty jmp _IRQ ; USART1 Data Register Empty jmp _IRQ ; USART0, Tx Complete jmp _IRQ ; USART1, Tx Complete jmp _IRQ ; EEPROM Ready jmp _IRQ ; Analog Comparator jmp _IRQ ; Store Program Memory Ready _IRQ: reti
Сколько раз уже повторялось, оформление таблицы векторов в ТАКОМ ВИДЕ
по теме:
мне как-то попадалась именно мега162 которая напрочь отказывалась работать пока не подключил на свободных ногах пуллапы.
-
SII
- Вымогатель припоя
- Сообщения: 635
- Зарегистрирован: Пт янв 30, 2009 14:50:35
- Откуда: Солнечногорск
Re: Atmega162
Не знаю, какие у Вас возникали проблемы с таким оформлением, а у меня проблем никаких никогда не возникало.
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Atmega162
У меня проблем не возникало, так как я никогда не писал, но на форуме не реже 1 раза в месяц, просто сейчас мало кого асм-ом заинтересуешь, появляются темы типа:
"HELP! Ничего не работает", при разборе которых оказывается, что вся проблема в таблице векторов прерываний.
"HELP! Ничего не работает", при разборе которых оказывается, что вся проблема в таблице векторов прерываний.
-
SII
- Вымогатель припоя
- Сообщения: 635
- Зарегистрирован: Пт янв 30, 2009 14:50:35
- Откуда: Солнечногорск
Re: Atmega162
Ну так надо правильно определять эту самую таблицу, что я и сделал. Вот и хотелось бы узнать, какие проблемы при её оформлении в ТАКОМ ВИДЕ могут возникнуть? Где здесь путь к "ошибкам и гемору при отладке программы"? И какой способ оформления таблицы прерываний Вы предпочитаете?
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Atmega162
я предпочитаю такой стиль написания:
http://radiokot.ru/forum/viewtopic.php?p=543675#p543675
и чуть выше у того же автора есть пара постов с объяснениями, просто я не умею так излагать свои мысли, мне бы чего по-проще, асм например.
http://radiokot.ru/forum/viewtopic.php?p=543675#p543675
и чуть выше у того же автора есть пара постов с объяснениями, просто я не умею так излагать свои мысли, мне бы чего по-проще, асм например.
-
SII
- Вымогатель припоя
- Сообщения: 635
- Зарегистрирован: Пт янв 30, 2009 14:50:35
- Откуда: Солнечногорск
Re: Atmega162
Ну, такой подход имеет право на жизнь, но лично мне он не нравится. Мне кажется куда более простым и, главное, надёжным один раз написать таблицу переходов с командами jmp (именно ими -- rjmp имеет меньший размер) и возвращаться к ней только в том случае, если надо указать имя обработчика того или иного прерывания, что у меня, собсно, и сделано. Конечно, можно допустить какую-нибудь ошибку, но точно так же её можно допустить и в альтернативном подходе (указал случайно, например, неверное имя вектора -- ведь некоторые из них имеют почти одинаковые имена, отличающиеся лишь, например, номерами таймеров). Проблем с отладкой тоже никаких: ставишь брякпоинт на нужный вектор, да и всё. Правда, мой подход требует обязательного комментирования, какой jmp к какому вектору относится, поскольку их названия отсутствуют, но лично я не ленюсь снабжать свои программы комментариями.
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Atmega162
Один раз не получится полюбомуSII писал(а): один раз написать таблицу переходов с командами jmp (именно ими -- rjmp имеет меньший размер)
1. у tiny нет команды jmp
2. а у младших mega вектора переходов однословные, а jmp занимает 2 слова
так что вот как-то так, плавно перетекаем к правилам написания векторов, описанных в предыдущем посте
как можно указать неправильное имя вектора при копи-пастном методе, необходимые имена тупо копируются из def* файла.указал случайно, например, неверное имя вектора
-
Archangel089
- Родился
- Сообщения: 12
- Зарегистрирован: Ср июл 21, 2010 23:04:18
- Откуда: Петропавловск-Камчатский
Re: Atmega162
А вот подскажите вот такой вот вопрос-решил попробывать пропатчить AVRStudio на C++. скачал патч.... и ничего что то не пропатчилось... патч-WinAVR-20100110-install.exe. установился как отдельна прога. и при меню опен открывает кучу экзешников. но ни один выбрать нельзя. качал отседа-http://cdnetworks-kr-2.dl.sourceforge.net/project/winavr/WinAVR/20100110/WinAVR-20100110-install.exe.
Приветствую прямые ссылки. Ибо Internet на камчатке не из дешевых....
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18657
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Atmega162
вы что-то ересь какую-то пишите... скачали WinAVR - но называете это патчем... какой патч? AVR Studio не значет про С++ ничего (не поддерживает подсветку синтаксиса, не умеет показывать в отладчике и т.п.) - и патча, как я понимаю, нет для лечения этой проблемы. а вот Си прекрасно понимает, и WinAVR в том числе. можно писать в студии и на С++ и компилировать при помощи WinAVR (при соблюдении минимума условий) - однако отлаживать в симуляторе не выйдет.Archangel089 писал(а):А вот подскажите вот такой вот вопрос-решил попробывать пропатчить AVRStudio на C++. скачал патч.... и ничего что то не пропатчилось... патч-WinAVR-20100110-install.exe. установился как отдельна прога. и при меню опен открывает кучу экзешников. но ни один выбрать нельзя. качал отседа-http://cdnetworks-kr-2.dl.sourceforge.net/project/winavr/WinAVR/20100110/WinAVR-20100110-install.exe.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
Archangel089
- Родился
- Сообщения: 12
- Зарегистрирован: Ср июл 21, 2010 23:04:18
- Откуда: Петропавловск-Камчатский
Re: Atmega162
А можно поинтересоваться-что это собственно за минимумы???ARV писал(а):[вы что-то ересь какую-то пишите... скачали WinAVR - но называете это патчем... какой патч? AVR Studio не значет про С++ ничего (не поддерживает подсветку синтаксиса, не умеет показывать в отладчике и т.п.) - и патча, как я понимаю, нет для лечения этой проблемы. а вот Си прекрасно понимает, и WinAVR в том числе. можно писать в студии и на С++ и компилировать при помощи WinAVR (при соблюдении минимума условий) - однако отлаживать в симуляторе не выйдет.
Приветствую прямые ссылки. Ибо Internet на камчатке не из дешевых....
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18657
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Atmega162
минимумы? ну, как минимум, использовать правильные расширения файлов, чтобы avr-gcc правильно компилировал С++ исходники. может быть придется отказаться от настроек параметров компиляции в мастере - придется использовать вручную сделанный makefile... ну и в чем тогда польза студии, скажите мне? 
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
Archangel089
- Родился
- Сообщения: 12
- Зарегистрирован: Ср июл 21, 2010 23:04:18
- Откуда: Петропавловск-Камчатский
Re: Atmega162
Что то я в этой жизни определённо не понимаю...
Нашел вот такой код:
Programmer's Notepad,создал новый проэкт C/C++, встывил и выбрал Tools-> Make All. Вылазит окно "сохранить как"...
как я понял-надо сохранить под каким либо именем и расширением .HEX? или я опять что то не так понял?
Нашел вот такой код:
Код: Выделить всё
#include <avr/io.h>
#include <avr/interrupt.h>
int N=0;
ISR(TIMER0_COMP_vect)
{
N=TCNT1;
TCNT0=0;
N=0;
}
int main(void)
{
DDRA=0xFF;
PORTA=0xFF;
TCCR0=0x01;//Set timer0
OCR0=0x5F;
TIMSK=0x01;
sei();
while(1)
{
asm volatile ("nop");
volatile N=N+1;
asm volatile ("nop");
asm volatile ("nop");
}
}как я понял-надо сохранить под каким либо именем и расширением .HEX? или я опять что то не так понял?
Приветствую прямые ссылки. Ибо Internet на камчатке не из дешевых....
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18657
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Atmega162
во-первых, ща придет злобный дядя-модератор (или красивая тетя-модератор) и прикроет ваши (и мои) словоизлияния, как не имеющие к atmega162 никакого отношения...
во-вторых, такие "примеры" я бы выбрасывал сразу, не пытаясь скомпилировать
в-третьих, где в вашем примере С++ ??? им и не пахнет. А Сишные проекты собираются без всякого нотепада - прямиком в студии.
с нотепадами не работал, ничего не скажу...
во-вторых, такие "примеры" я бы выбрасывал сразу, не пытаясь скомпилировать
в-третьих, где в вашем примере С++ ??? им и не пахнет. А Сишные проекты собираются без всякого нотепада - прямиком в студии.
с нотепадами не работал, ничего не скажу...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
Archangel089
- Родился
- Сообщения: 12
- Зарегистрирован: Ср июл 21, 2010 23:04:18
- Откуда: Петропавловск-Камчатский
Re: Atmega162
Ну надеюсь не прикроют пока....
Так в том то и дело-в какой именно студии??? Можно по пунктам что и как делать?!
Так в том то и дело-в какой именно студии??? Можно по пунктам что и как делать?!
Приветствую прямые ссылки. Ибо Internet на камчатке не из дешевых....



