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

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

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

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

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

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

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

 
Опции темы

TM0 в ATtiny2313

Непрочитано 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.RUN
 
Регистрация: 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.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 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.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 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.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 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.RUN
 
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 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.RUN
 
Регистрация: 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, время: 10:08.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.