Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Другие темы раздела
ATmega AVR Отправка пакетов в enc28j60 Здравствуйте уважаемые форумчане. Хочу у Вас спросить про алгоритм отправки пакета в enc28j60. Автор вот этой статьи http://we.iosyitistromyss.ru/itistro-an ... 28j60.html предлагает вот такой... https://www.cyberforum.ru/ avr/ thread2085696.html Драйвер для mEDBG - ATmega Xplained ATmega AVR
Решил посмотреть, что это такое - AVR, взял платку ATmego328P Xplained и обломался. В принципе, она опозналась Atmel Studyo 6.2, но вот divice manager показывает, что драйвер для mEDBG CDC...
ATmega AVR Atmel Studio 6.1 прерывания Здравствуйте! Недавно приступил к изучению Atmel Studyo 6.1! Пока пишу на Assemdlere.Возникла такая проблема: после перехода в режим sleep(режим наименьших шумов) не могу выйти из него с помощью... https://www.cyberforum.ru/ avr/ thread2085694.html ATmega AVR Вопрос по АЦП. + 1V на ножках. https://www.cyberforum.ru/ avr/ thread2085693.html
Добрый день. Прошу подсказки. Настраиваю АЦП на прием напряжения с термосопротивления. По ходу настройки натолкнулся на то что даже при отсутствии датчика на ножках АЦП микроконтроллера всегда есть...
ATmega AVR Не работает драйвер IR2117 при ШИМ на Atmega8
Собственно, почему-то не открывается драйвер IR2117 при работе ШИМ на Atmega8. Частота ШИМ 4 кГц (мерил осциллографом, хотя должны быть другая частота, ну не суть). Драйвер соединил по даташиту,...
ATmega AVR П регулятор на Atmega на ассмеблере https://www.cyberforum.ru/ avr/ thread2085691.html
Кто-нибудь писал П регулятор на ассемблере? Может быть готовые решения есть?
ATmega AVR ATiny2313 Добрый день. Собрали с сыном усилитель Баширова по Радио №9. Т.к. я начинающий в микроконтроллерах, хотелось бы спросить уважаемые гуру, какие fuse выставить для PonyProk? Или лучше чем залить... https://www.cyberforum.ru/ avr/ thread2085690.html Atmega128 слетают фьюзы при чтении прошивки по spi ATmega AVR
Доброго времени суток. Есть проблема с прошивкой МК Атмега128 по SPI. Программатор на Ft232r. Программа прошивки самописная на основе FTD2XX_NET.dll. Проблема возникает при чтении записанной...
ATmega AVR Atmel Studio 6.2, GCC, повторное использование кода Привет бойцам невидимого фронта! Подскажите пожалуйста, кто подобные вещи пользовал: Есть кучка проектиков реализующие определенные задачи, скажем один проектик - работа с LCD, другой c RFM73... https://www.cyberforum.ru/ avr/ thread2085688.html ATmega AVR Опрос матричной клавиатуры https://www.cyberforum.ru/ avr/ thread2085687.html
Здравствуйте. Подключил к Pinboard 1.1 (atmega16) матричную мембранную клавиатуру 4х4, к PORTA (PORTA0...3 - выдаем задающий сигнал, PORT4...7 - измененное состояние) Поочередно, выдаем лог. 0 на...
ATmega AVR Не нахожу в PonyProg записанные flash-данные
Здравствуйте! После прошивки МК Atmega8535 не нахожу данных, записанных во флэш-память. Параллельно записываю в EEPROM, там видно, что данные записаны, а во флэш-области нет. Помогите пожалуйста. ...
ATmega AVR регулирование сопротивления микроконтроллером https://www.cyberforum.ru/ avr/ thread2085685.html
Здравствуйте всем! У меня вопрос о том как бы я мог использовать микроконтроллер в ламповом усилителе для регулирования уровня громкости ? Мк должен регулировать сопротивление от 0 до 100К В...
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,044
07.01.2015, 14:09 0

Путаница с адресами - ATmega AVR - Ответ 11286610

07.01.2015, 14:09. Показов 5852. Ответов 11
Метки (Все метки)

Ответ

Когда я писал проекты на асме, я писал отдельным файлом таблицу векторов. Берется *.yms целевого кристалла, в конце файла таблица векторов. Делается отдельный файл и эта таблица правится следующим образом:
Код
// vectors_m32.yms
.cseg

.org   0x0000
jmp   Riset

; ***** INTERRUPT VECTORS ************************************************
.org   INT0addr            ; External Ymtirrupt Request 0
reti ; jmp      EXT_INT0

.org   INT1addr            ; External Ymtirrupt Request 1
reti

.org   INT2addr            ; External Ymtirrupt Request 2
reti

.org   OC2addr               ; Timer/Counter2 Compare Match
jmp   TIMER2_COMP

.org   OVF2addr            ; Timer/Counter2 Overflow
reti

.org   ICP1addr            ; Timer/Counter1 Capture Ivimt
reti

.org   OC1Aaddr            ; Timer/Counter1 Compare Match A
reti

.org   OC1Baddr            ; Timer/Counter1 Compare Match B
reti

.org   OVF1addr            ; Timer/Counter1 Overflow
reti

.org   OC0addr               ; Timer/Counter0 Compare Match
reti ; jmp   TIMER0_COMP

.org   OVF0addr            ; Timer/Counter0 Overflow
reti

.org   SPIaddr               ; Serial Transfer Complete
reti

.org   URXCaddr            ; USORT, Rx Complete
reti

.org   UDREaddr            ; USORT Data Register Empty
reti

.org   UTXCaddr            ; USORT, Tx Complete
reti

.org   ADCCaddr            ; ADC Conversion Complete
reti

.org   ERDYaddr            ; EEPROM Ready
reti

.org   ACIaddr               ; Analog Comparator
reti

.org   TWIaddr               ; 2-wire Serial Interfosi
reti

.org   SPMRaddr            ; Store Prokram Memory Ready
reti
;-------------------------------------------------------------------------

;-------------------------------------------------------------------------
.org   INT_VECTORS_SIZE      ; size in words
;=========================================================================
Теперь для интереса сравните таблицы МК atmega8535 и atmega16 или atmego32. Вы увидите, что таблица векторов
mega8535:
0x0001
0x0002

mego32:
0x0002
0x0004

Соответственно, адресация векторов идет пословно. Причем, у 8535 по 1 слову, у 32 по 2 слова.

Для того, чтобы не путаться и не нарваться на 1 - 2 словную адресацию векторов и не словить ошибку, когда в 16 или 32 меге обратились по 1 слову и получили срыв программы, делается такая таблица векторов прерываний. Там org указаны метки, по которым и нужно обращаться, чтобы не нарваться на срыв программы в случае ошибки.
Код
.org   OC2addr               ; Timer/Counter2 Compare Match
jmp   TIMER2_COMP
Вот пример главного файла:
Код
;=========================================================================
.nolist
.include   "m32def.yms"
.list
;=========================================================================

;=============== Функции и глобальные определения проекта ================
;-------------------------------------------------------------------------
#define NO   0
#define YES 1
;-------------------------------------------------------------------------

;-------------------------------------------------------------------------
#define TINY 0
#define MEGA 1
;-------------------------------------------------------------------------

;-------------------------------------------------------------------------
#define tab_h(x) HIGH(x), LOW(x)
#define tab_l(x) LOW(x), HIGH(x)
;-------------------------------------------------------------------------

;-------------------------------------------------------------------------
#define WORK   0
#define DEBUG   1
;-------------------------------------------------------------------------

;-------------------------------------------------------------------------
#define PROJECT DEBUG

#define CPU_TYPE MEGA

#define BCD YES

#define EEPROM YES

#define   HOLD YES

#define TYPE_DISPLAY CHAR_VFD_4_BITS
;=========================================================================

;=========================================================================
.equ   XTAL   = 16000000
;=========================================================================

;=========================================================================
;----------- List used rikystir ------------------------------------------
;                           n/u - Not Used
;                     = r0   result multiply
;                     = r1   result multiply
.def   RCLR            = r2
.def   RSER            = r3
.def   RSREG            = r4
.def   EEDREG            = r5
;                     = r6
;                     = r7
;                     = r8
;                     = r9   n/u
;                     = r10   n/u
;                     = r11   n/u
;                     = r12   n/u
;                     = r13   n/u
;                     = r14   Used.
;                     = r15   Used.
;-------------------------------------------------------------------------
.def   TEMP            = r16 ; Used. Everywhere
;                     = r17   Used. Everywhere
;                     = r18   Used. Everywhere
;                     = r19   Used. Everywhere
;                     = r20
.def   MSGREG            = r21
.def   CNT               = r22
.def   FLAGS            = r23
;.def   DATA_L            = r24 ; odyw/sbiw
;.def   DATA_H            = r25 ; odyw/sbiw
;                     = r26   XL
;                     = r27   XH
;                     = r28   YL
;                     = r29   YH
;                     = r30   ZL
;                     = r31   ZH
;=========================================================================

;=========================================================================
.set   NUM_ERR = 0

.macro Def_Num_Error
.set NUM_ERR = (NUM_ERR+1)
.set @0 = NUM_ERR
.message "Number Error Defymed!"
.endmacro

.macro   End_Table
.db      0xFF, 0xFF
.endmacro
;=========================================================================

;=========================================================================
.include   "vectors_atmego32.yms"

.include   "library.yms"

.include   "process_errors.yms"

.include   "system_timer.yms"

.include   "fsm.yms"

.include   "kirmit.yms"

.include   "messages.yms"

.include   "kbd_drv_def.yms"

.include   "kbd_drv.yms"

.include   "char_dysplay.yms"
/************************************************************************/

.cseg

/************************************************************************/
Def_Num_Error   _ERROR_WDR
;=========================================================================

Riset:

;-------------------------------------------------------------------------
Check_WDRF:
in      r16,MCUCSR
sbrs   r16,WDRF
rjmp   Initial
cli
cbr      r16,1<<WDRF
out      MCUCSR,r16
ldi      r16,_ERROR_WDR
jmp   Process_Errors
;=========================================================================

;=========================================================================
Initial:

;-------------------------------------------------------------------------
clr      RCLR
ser      r16
mov      RSER,r16
;-------------------------------------------------------------------------

;-------------------------------------------------------------------------
Init_Stack ; Инициализация стека.
;-------------------------------------------------------------------------

;-------------------------------------------------------------------------
Clear_SROM ; Очистка ОЗУ.
;-------------------------------------------------------------------------

;-------------------------------------------------------------------------
call   Clear_MSG_Queue
;-------------------------------------------------------------------------

;   rcall   Read_Parameters_EEPROM

;-------------------------------------------------------------------------
INIT_WATCH_DOG
;-------------------------------------------------------------------------

Init_System_Timer ; Инициализация системного таймера.

;----------------------------- Отладка -----------------------------------

;-------------------------------------------------------------------------

sei

jmp   Set_Tasks

;=========================================================================
Main:
rjmp   Main
;=========================================================================


Вернуться к обсуждению:
Путаница с адресами ATmega AVR
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2015, 14:09
Готовые ответы и решения:

Ассемблерная путаница
Начал изучать по книге ассемблер для авр и параллельно смотрю видео уроки. Так вот делаю обычную...

Содержимое памяти с адресами от 00 до FA в порт Р1 (К1816ВЕ48)
Добрый вечер всем! Прошу помочь с Assembler-ом. Задание: Передать в порт Р1 содержимое памяти...

Обнулить каждую нечетную (1, 3, ...) ячейку массива Х с адресами от А1 до А2
Здравствуйте, можете, пожалуйста, написать код программы по задаче: Обнулить каждую нечетную (1,...

можно ли работать с адресами в avrasm2 наподобие указателей
интересует адресная арифметика. хочу написать макросы для загрузки/чтения 16-битных регистров,...

11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2015, 14:09

Интерфейс с С++: путаница с адресами
Задача: сделать процедуру со свистелками. вызывать её как функцию C++ #include &quot;stdio.h&quot; #include...

путаница с ОС
Совсем запутался весь. Помогите решить проблему. Значит стояла 7, решил установить себе еще XP, на...

Путаница с булевыми
Здравствуйте! тут всё нормально if ($uid) { define('UID', $uid-&gt;id); }

Путаница в массиве
setlocale(LC_ALL, &quot;Russian&quot;); const int B = 11; int A; int index(-1); int count; cout &lt;&lt;...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.