Страница 1 из 1
ATmega48 : как запустить таймер?
Добавлено: Вс май 06, 2007 21:58:22
tss
подскажите как запустить таймер в ATmega48
ldi Temp,0
out TCNT0,Temp
ldi Temp,1
out TIMSK0,Temp
ругается VMLAB на TIMSK0 (illegal argument type or count)
Добавлено: Вс май 06, 2007 23:34:46
Tohey
КАКЫЙ таймер? Там их аж 4! В обучалке довольно понятно всё расписано...
А ругается на "TIMSK0", потому в inc-файле наверно не прописан регистр TIMSK0...

Добавлено: Вс май 06, 2007 23:47:09
tych
А библиотека ATmega48 подключена в исходнике ?
Добавлено: Вс май 06, 2007 23:48:15
tych
Tohey писал(а):КАКЫЙ таймер? Там их аж 4!
По тексту АСМа таймер 0 очевидно.
Добавлено: Пн май 07, 2007 17:08:49
Tohey
Я не встречал TIMSK0 ни где, этот регистр всего один, и обычно прописан в inc-файле как - TIMSK.
Добавлено: Пн май 07, 2007 17:19:47
Tohey
А насраевается он просто, в TCCR задается тактовый сигнал, TCNT - счетчик, в OCR записывается число для сравнения, компаратор. А TIMSK - регистр маски прерываний (кажись так он называется), им включаются прерывания компараторов, таймеров и пр. СМ. обучалку "Таймеры и каунтеры. Бегущий огонек"
Добавлено: Пн май 07, 2007 23:54:13
tss
решения нет, вопрос остаётся в силе,
не принципиально какой таймер, c ATmega8 нет проблем, а вот с М48 непонятно, вроде как в даташит но он на ненашинском к сожалению!
.include "C:\VMLAB\include\m48def.inc"
.def temp =r16
.cseg
.org 0
rjmp RESET ; Reset Handler
rjmp EXT_INT0 ; IRQ0 Handler
rjmp EXT_INT1 ; IRQ1 Handler
rjmp PCINT0
rjmp PCINT1
rjmp PCINT2
rjmp WDT
rjmp TIM2_COMPA; Timer2 Compare Handler
rjmp TIM2_COMPB
rjmp TIM2_OVF ; Timer2 Overflow Handler
rjmp TIM1_CAPT ; Timer1 Capture Handler
rjmp TIM1_COMPA ; Timer1 CompareA Handler
rjmp TIM1_COMPB ; Timer1 CompareB Handler
rjmp TIM1_OVF ; Timer1 Overflow Handler
rjmp TIM0_COMPA ; Timer1 CompareA Handler
rjmp TIM0_COMPB ; Timer1 CompareB Handler
rjmp TIM0_OVF ; Timer0 Overflow Handler
rjmp SPI_STC ; SPI Transfer Complete Handler
rjmp USART_RXC ; USART RX Complete Handler
rjmp USART_UDRE ; UDR Empty Handler
rjmp USART_TXC ; USART TX Complete Handler
rjmp ADC ; ADC Conversion Complete Handler
rjmp EE_RDY ; EEPROM Ready Handler
rjmp ANA_COMP ; Analog Comparator Handler
rjmp TWI ; Two-wire Serial Interface
rjmp SPM_RDY ; Store Program Memory Ready
EXT_INT0:
EXT_INT1:;INT_1:
WDT:
TIM2_COMPA:
TIM2_COMPB:
TIM2_COMP:
TIM2_OVF:
TIM1_CAPT:
Tim1_compA:
TIM1_COMPB:
;TIM1_OVF:
TIM0_COMPA:
TIM0_COMPB:
;TIM0_OVF:
SPI_STC:
USART_RXC:
USART_UDRE:
USART_TXC:
ADC:
EE_RDY:
ANA_COMP:
TWI:
SPM_RDY:
RETI
RESET:
;*****************************************************
ldi Temp,LOW(RamEnd)
out SPL,Temp ;
ldi Temp,HIGH(RamEnd)
out SPH,Temp ;
;*****************************************************
;*****************************************************
ldi Temp,0
out TCNT0,Temp
ldi Temp,0b00000001
out TCCR0B,Temp
ldi Temp,1;0b00000001
ldi Temp,0b00000001
out TIMSK0,Temp
sei
TIM0_OVF:
reti
;*********************************************************
TIM1_OVF:
reti
;*********************************************************
Re: таймер в Mega48
Добавлено: Вт май 08, 2007 05:19:15
tych
tss писал(а):подскажите как запустить таймер в Mega48
В каком режиме ?
Запустите и настройте мастером CVAVR или ICC скомпильте и посмотрите АСМ листинг.
Добавлено: Вт июн 12, 2007 11:22:28
tss
Решение вопроса очень простое:
ldi Temp,11
out TCNT0,Temp
ldi Temp,0b00000001
out TCCR0B,Temp
out TCCR0A,Temp
sts TIMSK0,Temp
sei
Вопрос закрыт.

Добавлено: Вт июн 12, 2007 12:51:55
tych
Теперь всем все ясно.
Добавлено: Вт июн 12, 2007 16:25:12
Мышонок
tss и все остальные! Длинные тексты программ и т.п. оформляйте вложенным файлом - иначе подобные сообщения будут удалятся. 
Добавлено: Чт июн 14, 2007 02:47:56
Агроном
tych писал(а):Теперь всем все ясно.
Для большей ясности цитата из ДШ
===============
The ATmega48/88/168 is a complex microcontroller with more peripheral units than can be supported within the 64 locations reserved in the Opcode for the IN and OUT instructions. For the Extended I/O space from 0x60 - 0xFF in SRAM, only the ST/STS/STD and LD/LDS/LDD instructions can be used.
===============