Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
18.11.2011, 23:16
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от roma9112
|
Орфография к данному моменту - к черту, каналья! Так все свои...
|
К орфографии здесь цепляются, когда других аргументов нету, впрочем, как и везде.
Портачить можно, если есть желание, только бэкап нужно сделать. Чтоб потом не было мучительно больно.
С тяпницей!
|
|
|
|
18.11.2011, 23:17
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2008
Адрес: Волгоград
Сообщений: 507
Сказал спасибо: 42
Сказали Спасибо 49 раз(а) в 46 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
СПС за поддержку
Днем пытался принтскрин своего"мастерства"прикрепить - не получилось, бо форум или наши админы выкручивались, - и ИХ С ПЯТНИЦЕЙ!!!
Последний раз редактировалось roma9112; 18.11.2011 в 23:19.
|
|
|
|
19.11.2011, 14:26
|
|
Гражданин KAZUS.RU
Регистрация: 04.04.2007
Сообщений: 941
Сказал спасибо: 571
Сказали Спасибо 113 раз(а) в 85 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от roma9112
|
Только дошел к средству намылизации, попробовал открыть созданный проект в окне GCC понял, что тяжело быть дураком,когда посмотрел менюшки, но не рискнул портачить ....... думаю попробовать работающий проект и из него выделить функцию, чтобы 99 проц работало...
|
За все это время на простом асме давно бы написал , и "99 проц" работало бы , и без всяких там библиотек и танцев с бубном по переделке файлов среды программирования .
P.S. Для Вашего случая на асме , просто , безо всяких обьявлений , основную программу пишем в виде цикла ожидания в котором при выполнении соответственных Ваших условий должны выполняться действия А , В или С , например как у Вас , оформляете их как подпрограммы вызываемые через rcall xxx , или call xxx (для старщих моделей Мег) , где xxx -имена этих кусков прог делающих Ваши действия А , В , С , и помещаете их текст в конце общего текста основной проги за пределами ее цикла , и все . И никаких дополнительных манипуляций с библиотеками самой среды , хейдерами и прочим хозяйством , все по простому ясно и четко .
__________________
Короче асма кода нет !
Последний раз редактировалось pinco; 19.11.2011 в 14:56.
|
|
|
|
21.11.2011, 08:06
|
|
Прописка
Регистрация: 18.10.2010
Адрес: Planet Earth )
Сообщений: 120
Сказал спасибо: 14
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Народ есть вопрос, помогите разобраться! Программы пытаюсь писать на Ассемблере.
Рассматривал спецификацию этого контроллера и наткнулся на регистр GICR. Опять эти прерывания Меня интересуют два младших бита IVSEL (1-й бит) и IVCE (0-й бит). Я понял существуют четыре типа написания программы, например если прерывания в работе МК не предусматриваются, то на месте таблиц векторов прерывания может быть размещена часть основной программы. И там пошли рассматриваться четыре варианта! Я недопонимаю до конца зачем это надо, или например тогда в какой части программы их устанавливать,или использовать эти биты?
Заранее спасибо.
Пример программы который я привык писать
Цитата:
|
; ************************************************** **********************
.device ATmega8515 ; Используется МК ATmega8515
.nolist ; Отключенна генерация листинга
.include "m8515def.inc" ; Вложенные файлы не будут отображены в листинге
.list ; Включена генерация листинга
;************************************************* ************************
;************************************************* ************************
.def temp=r16
.def Rab2=r17 ;формирования рабочих интервалов задержки
.def Rab3=r18
.def Rab4=r19
.def Rab5=r20
.def counter1=r21
.def Period=r22 ;Регистр,определяющий период смены комбинаций
;при выполнении программы эффектов
.def CombinacionC=r24 ; для порт C
.def Universal=r25 ;Регистр для разных установок во время выполнения программы
.def NumberProgram=r26 ;Регистр,определяющий номер выполняемой программы
;эффекта
.def Priznak_sostoainia=r1 ;Регистр, определяющий в какой фазе в момент
;прерыв TIM0 находяться порты: 0 - вывод комбинации
;1- вывод ff
;================================================= =======================
.cseg ; Начало кодового сегмента
.org 0x0000
rjmp RESET ; Обработка сброса
.org 0x0001
rjmp EXT_INT0 ; внешнее прерывание IRQ0
.org 0x0002 ; rjmp EXT_INT1 ; внешнее прерывание IRQ1
reti
.org 0x0003 ; rjmp TIM1_CAPT ; Обработка захвата таймера/счетчика T1
reti
.org 0x0004 ; rjmp TIM1_COMPA ; Совпадение А таймера/счетчика T1
reti
.org 0x0005 ; rjmp TIM1_COMPB ; Совпадение В таймера/счетчика T1
reti
.org 0x0006 ; rjmp TIM1_OVF ; Обработка переполнения таймера/счетчика T1
reti
.org 0x0007
rjmp TIM0_OVF ; Обработка переполнения таймера/счетчика T0
.org 0x0008 ; rjmp SPI_STC ; Передача по SPI завершена
reti
.org 0x0009 ; rjmp USART_RXC ; USART RX прием завершен
reti
.org 0x000A ; rjmp USART_UDRE ; Регистр данных USART пуст
reti
.org 0x000B ; rjmp USART_TXC ; USART TX Передача завершена
reti
.org 0x000C ; rjmp ANA_COMP ; Обработка прерывания аналогового компаратора
reti
.org 0x000D ; rjmp EXT_INT2 ; Обработка внешнего прерывания IRQ2
reti
.org 0x000E ; rjmp TIM0_COMP ; Обработка совпадения таймера/счетчика T0
reti
.org 0x000f ; rjmp EE_RDY ; EEPROM готово
reti
.org 0x0010 ; rjmp SPM_RDY ; Store Program memory - готово
;=======================================
RESET:
;инициализация стека
ldi R16,high(RAMEND)
out SPH,temp
ldi R16,low(RAMEND)
out SPL,temp
|
__________________
Мозги кипят, ядрить твою валентность!!! Пойду закладывать остальные ингредиенты...
Последний раз редактировалось DAVE_ELEKTRIK; 21.11.2011 в 08:24.
|
|
|
|
21.11.2011, 10:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Если Вы не собираетесь использовать прерывания, то можете не обращать на IVSEL и IVCE внимание. Вместо таблицы векторов может располагаться любой кусок кода программы, но все прерывания должны быть отключены иначе при возникновении прерывания переход будет на команду, которая расположилась по адресу вектора прерывания.
Перемещение таблицы векторов было актуально, когда были однократно программируемые кристаллы. При необходимости можно было написать новую (или изменить старую) программу и дописать ее по новым адресам и изменить при этом размещение таблицы векторов.
Еще перемещение таблицы векторов может пригодиться, если собираетесь в одной программе по-разному реагировать на одно и то же прерывание.
|
|
|
|
21.11.2011, 10:14
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Если IVSEL сброшен - прерывания находятся в области основной программы, если установлен - в области бутлодыря. Это нужно для того, чтобы бутлодырь мог переписывать ВСЮ память основной программы, включая области занятые прерываниями, и чтобы при этом в бутлодыре работали прерывания. То есть фактически ПЗУ делится на две совершенно независимые области - программа и бутлодырь, и каждый из них может работать полностью автономно. Если бутлодырь не нужен - просто никогда не устанавливайте IVSEL
|
|
|
|
21.11.2011, 10:34
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2008
Адрес: Волгоград
Сообщений: 507
Сказал спасибо: 42
Сказали Спасибо 49 раз(а) в 46 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Если пишете на Асме обязательно учитывайте адреса векторов прерываний...
Блин проглядел, все уже есть
Последний раз редактировалось roma9112; 21.11.2011 в 10:40.
|
|
|
|
21.11.2011, 10:37
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2008
Адрес: Волгоград
Сообщений: 507
Сказал спасибо: 42
Сказали Спасибо 49 раз(а) в 46 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от pinco
|
За все это время на простом асме давно бы написал , и "99 проц" работало бы , и без всяких там библиотек и танцев с бубном по переделке файлов среды программирования .
|
На Асме что-то у меня уже получилось, хочется на Си поработать...
|
|
|
|
21.11.2011, 10:48
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2008
Адрес: Волгоград
Сообщений: 507
Сказал спасибо: 42
Сказали Спасибо 49 раз(а) в 46 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от DAVE_ELEKTRIK
|
Народ есть вопрос, помогите разобраться! Программы пытаюсь писать на Ассемблере.
Рассматривал спецификацию этого контроллера и наткнулся на регистр GICR. Опять эти прерывания Меня интересуют два младших бита IVSEL (1-й бит) и IVCE (0-й бит). Я понял существуют четыре типа написания программы, например если прерывания в работе МК не предусматриваются, то на месте таблиц векторов прерывания может быть размещена часть основной программы.
|
Может я не прав, но обычно область с адресами прерываний не особенно пользуют когда прерывания не нужны, наверное, что бы если МК попадет туда, то не ушел бы в неведомыю даль.
|
|
|
|
21.11.2011, 11:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,983
Сказал спасибо: 0
Сказали Спасибо 4,941 раз(а) в 2,370 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
область прерываний заполнял всегда RETI или RJMP reset, RJMP vector применял только для используемых прерываний
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:17.
|
|