Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 03.12.2011, 16:40  
ABrej
Частый гость
 
Регистрация: 15.07.2008
Сообщений: 12
Сказал спасибо: 58
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
ABrej на пути к лучшему
По умолчанию TM0 в ATtiny2313

Добрый день.

Как сгенерирывать прерывание ТМ0 по совпадению?
Вот код:

.cseg
.org 0
rjmp start
reti ;INT0addr = 0x0001 ; External Interrupt Request 0
reti ; INT1addr = 0x0002 ; External Interrupt Request 1
reti ; ICP1addr = 0x0003 ; Timer/Counter1 Capture Event
reti ; OC1Aaddr = 0x0004 ; Timer/Counter1 Compare Match A
reti ; OC1addr = 0x0004 ; For compatibility
reti ; OVF1addr = 0x0005 ; Timer/Counter1 Overflow
reti ;rjmp OVFO ; OVF0addr = 0x0006 ; Timer/Counter0 Overflow
reti ; URXCaddr = 0x0007 ; USART, Rx Complete
reti ; URXC0addr = 0x0007 ; For compatibility
reti ; UDREaddr = 0x0008 ; USART Data Register Empty
reti ; UDRE0addr = 0x0008 ; For compatibility
reti ; UTXCaddr = 0x0009 ; USART, Tx Complete
reti ; UTXC0addr = 0x0009 ; For compatibility
reti ; ACIaddr = 0x000a ; Analog Comparator
reti ; PCIaddr = 0x000b ;
reti ; OC1Baddr = 0x000c ;
rjmp OC0A ; = 0x000d ;
reti ;rjmp OC0B ; OC0Baddr = 0x000e ;
reti ; USI_STARTaddr = 0x000f ; USI Start Condition
reti ; USI_OVFaddr = 0x0010 ; USI Overflow
reti ; ERDYaddr = 0x0011 ;
reti ; WDTaddr = 0x0012 ; Watchdog Timer Overflow
start:
ldi tmp, low(RAMEND)
out SPL, tmp
cli
;----Настройка таймера WDT--
out WDTCR, tmp ;запрещяем
;----Выставляем прерывания--
clr tmp
out GIMSK, tmp
ldi tmp, 0x0F
out TIMSK, tmp
ldi temp_red, 0x2F
ldi tmp, 0x0F
out PORTD, tmp
out PORTB, tmp
sei
;----Настраиваем таймерTM0---
ldi tmp, 0x0D ;0x7d
out OCR0A, tmp
ldi tmp, 0x02
out TCCR0A,tmp
ldi tmp, 0x02
out TCCR0B, tmp
klav:
nop
nop
rjmp klav


OC0A: ; само прерывние
dec temp_red
breq ee1
reti
ee1:
ldi temp_red, 0x2F
swap tmp
out PORTD, tmp
out PORTB, tmp
reti

Вроде все по учебнику, пробую в протеусе, не выходит.
Если переписывать для ТМ1 то все окей.
В чем проблема и где ошибка?
Реклама:
ABrej вне форума  
Сказали "Спасибо" ABrej
warel (28.06.2019)
Непрочитано 03.12.2011, 17:30  
kittec
Гражданин KAZUS.RU
 
Регистрация: 14.11.2008
Сообщений: 701
Сказал спасибо: 298
Сказали Спасибо 283 раз(а) в 193 сообщении(ях)
kittec на пути к лучшему
По умолчанию Re: TM0 в ATtiny2313

Проверьте таблицу векторов. Какая-то она странная.
kittec вне форума  
Сказали "Спасибо" kittec
warel (28.06.2019)
Непрочитано 03.12.2011, 17:45  
ABrej
Частый гость
 
Регистрация: 15.07.2008
Сообщений: 12
Сказал спасибо: 58
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
ABrej на пути к лучшему
По умолчанию Re: TM0 в ATtiny2313

Сообщение от kittec Посмотреть сообщение
Проверьте таблицу векторов. Какая-то она странная.
Таблица взята из tn2313def.inc

Последний раз редактировалось ABrej; 03.12.2011 в 17:48.
ABrej вне форума  
Сказали "Спасибо" ABrej
warel (28.06.2019)
Непрочитано 03.12.2011, 18:10  
nonamedov
Почётный гражданин KAZUS.RU
 
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: TM0 в ATtiny2313

Не неправильно установлен
Цитата:
ldi tmp, 0x0D ;0x7d
out OCR0A, tmp
Вам ндао установить таймер в режим CTC.
nonamedov вне форума  
Сказали "Спасибо" nonamedov
warel (28.06.2019)
Непрочитано 03.12.2011, 18:46  
nonamedov
Почётный гражданин KAZUS.RU
 
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: TM0 в ATtiny2313

надо убрать в TIMSK неиспользуемые
прерывание, у Вас одновременно происходит несколько прерываний и в рельтате обрабатывается только прерывание с большим приоритетом, т.е. TIMER0 OVF , у таймера1 все наоборот сперва обрабатывается TIMER1 COMPA, а после TIMER1 OVF.
nonamedov вне форума  
Сказали "Спасибо" nonamedov
warel (28.06.2019)
Непрочитано 03.12.2011, 18:53  
ABrej
Частый гость
 
Регистрация: 15.07.2008
Сообщений: 12
Сказал спасибо: 58
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
ABrej на пути к лучшему
По умолчанию Re: TM0 в ATtiny2313

Сообщение от nonamedov Посмотреть сообщение
Вам надо установить таймер в режим CTC.
Регистр OCR0A предназначен для кода по которому происходит сравнение

Сообщение от nonamedov Посмотреть сообщение
надо убрать в TIMSK неиспользуемые
Для работы по сравнению в TIMSK нежно выставит 0 бит в 1 что будет соответствовать разрешению прерывания для ТМ0 канала А по совпадению.

Делал:

ldi tmp, 0x01
out TIMSK, tmp

не помогло.
ABrej вне форума  
Сказали "Спасибо" ABrej
warel (28.06.2019)
Непрочитано 03.12.2011, 19:14  
nonamedov
Почётный гражданин KAZUS.RU
 
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: TM0 в ATtiny2313

Сообщение от ABrej Посмотреть сообщение
reti ; OC1addr = 0x0004 ; For compatibility
Сообщение от ABrej Посмотреть сообщение
reti ; URXC0addr = 0x0007 ; For compatibility
А эти то для чего???
nonamedov вне форума  
Сказали "Спасибо" nonamedov
warel (28.06.2019)
Непрочитано 03.12.2011, 19:20  
nonamedov
Почётный гражданин KAZUS.RU
 
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
nonamedov на пути к лучшему
По умолчанию Re: TM0 в ATtiny2313

вот нормальная таблица векторов прерывания:
Цитата:
0x0000 rjmp RESET ; Reset Handler
0x0001 rjmp INT0 ; External Interrupt0 Handler
0x0002 rjmp INT1 ; External Interrupt1 Handler
0x0003 rjmp TIM1_CAPT ; Timer1 Capture Handler
0x0004 rjmp TIM1_COMPA ; Timer1 CompareA Handler
0x0005 rjmp TIM1_OVF ; Timer1 Overflow Handler
0x0006 rjmp TIM0_OVF ; Timer0 Overflow Handler
0x0007 rjmp USART0_RXC ; USART0 RX Complete Handler
0x0008 rjmp USART0_DRE ; USART0,UDR Empty Handler
0x0009 rjmp USART0_TXC ; USART0 TX Complete Handler
0x000A rjmp ANA_COMP ; Analog Comparator Handler
0x000B rjmp PCINT ; Pin Change Interrupt
0x000C rjmp TIMER1_COMPB ; Timer1 Compare B Handler
0x000D rjmp TIMER0_COMPA ; Timer0 Compare A Handler
0x000E rjmp TIMER0_COMPB ; Timer0 Compare B Handler
0x000F rjmp USI_START ; Usi Start Handler
0x0010 rjmp USI_OVERFLOW ; USI Overflow Handler
0x0011 rjmp EE_READY ; EEPROM Ready Handler
0x0012 rjmp WDT_OVERFLOW ; Watchdog Overflow Handler
nonamedov вне форума  
Сказали "Спасибо" nonamedov
warel (28.06.2019)
Непрочитано 03.12.2011, 19:44  
ABrej
Частый гость
 
Регистрация: 15.07.2008
Сообщений: 12
Сказал спасибо: 58
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
ABrej на пути к лучшему
По умолчанию Re: TM0 в ATtiny2313

Сообщение от nonamedov Посмотреть сообщение
вот нормальная таблица векторов прерывания:
К сожалению я не сильный специалист в аврах, только учусь.

Вот файл взятый из набора AVR000 но это по моему не особо влияет (как написано), главное чтобы прерывание отрабатывалось по адресу 0x000D.
Кстати смотрел hex, там в таблице прерываний правильно прописывается.
Вложения:
Тип файла: rar tn2313def.rar (5.3 Кб, 48 просмотров)
ABrej вне форума  
Сказали "Спасибо" ABrej
warel (28.06.2019)
Непрочитано 03.12.2011, 19:46  
kittec
Гражданин KAZUS.RU
 
Регистрация: 14.11.2008
Сообщений: 701
Сказал спасибо: 298
Сказали Спасибо 283 раз(а) в 193 сообщении(ях)
kittec на пути к лучшему
По умолчанию Re: TM0 в ATtiny2313

Сообщение от nonamedov Посмотреть сообщение
вот нормальная таблица векторов прерывания:
А оно ему надо. У него есть лучше.
kittec вне форума  
Сказали "Спасибо" kittec
warel (28.06.2019)
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер на ATtiny2313 Lockdog Микроконтроллеры, АЦП, память и т.д 1 19.07.2010 16:18
Микроконтроллер attiny2313 Kabzon Микроконтроллеры, АЦП, память и т.д 8 29.12.2009 15:56
ATtiny2313 и Proteus 7.1 rocky7 Микроконтроллеры, АЦП, память и т.д 1 23.03.2009 23:30
Проблема с ATtiny2313 kvark85 Микроконтроллеры, АЦП, память и т.д 28 26.02.2009 14:34
AT90S2313 vs Attiny2313-20 Edward_tlt Микроконтроллеры, АЦП, память и т.д 68 20.03.2008 23:11


Часовой пояс GMT +4, время: 23:52.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot