Forum: Mikrocontroller und Digitale Elektronik Timer2 mega8


von Jens123 (Gast)


Lesenswert?

Hallo, ich versuche den Timer2 ans laufen zu bekommen, leider
funktioniert die Simulation nichtmal.

Der Timer soll einen INT ausloesen, macht er nicht, er zaehlt das TCNT
hoch, aber loesst keinen int aus..


  ldi temp, 0x8
  out ASSR, temp

  ldi temp, 0x07
  out TCCR2, temp

  ldi temp, 0x00
  out TCNT2, temp

  ldi temp, 0x00
  out OCR2, temp

Das Init

.cseg
 rjmp RESET ; Reset Handler
 reti ;EXT_INT0 ; IRQ0 Handler
 reti ;EXT_INT1 ; IRQ1 Handler
 reti ;TIM2_COMP ; Timer2 Compare Handler
 rjmp TIM2_OVF ; Timer2 Overflow Handler

Die Int definition.


Die interups aktiviere ich erst nach dem ich alles initalisiert habe

Gruss Jens

von Ingo Henze (Gast)


Lesenswert?

Setzt Du denn mit SEI das Globale Interrupt-Enable-Flag?
Ohne dem passiert gar nix.

von Jens123 (Gast)


Lesenswert?

ja, mache ich

von Josef (Gast)


Lesenswert?

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 250,000 kHz
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x03;
TCNT2=0x00;
OCR2=0x00;

von Jens123 (Gast)


Lesenswert?

.cseg
 rjmp RESET ; Reset Handler
 reti ;EXT_INT0 ; IRQ0 Handler
 reti ;EXT_INT1 ; IRQ1 Handler
 reti ;TIM2_COMP ; Timer2 Compare Handler
 rjmp  TIM2_OVF ; Timer2 Overflow Handler
 reti ;TIM1_CAPT ; Timer1 Capture Handler
 reti ;TIM1_COMPA ; Timer1 CompareA Handler
 reti ;TIM1_COMPB ; Timer1 CompareB Handler
 reti ;TIM1_OVF ; Timer1 Overflow Handler
 reti ;TIM0_OVF; Timer0 Overflow Handler
 reti ;SPI_STC ; SPI Transfer Complete Handler
 reti ;USART_RXC ; USART RX Complete Handler
 reti ;USART_UDRE ; UDR Empty Handler
 reti ;USART_TXC ; USART TX Complete Handler
 reti ;ADC ; ADC Conversion Complete Handler
 reti ;EE_RDY ; EEPROM Ready Handler
 reti ;ANA_COMP ; Analog Comparator Handler
 reti ;TWSI ; Two-wire Serial Interface
 reti ;SPM_RDY ; Store Program Memory Ready

 ; dann lautet die formel (Xtal/prescaler)*256

RESET:                        ;hier beginnt das Hauptprogramm


   ldi temp, LOW(RAMEND); STACK einstellen
    out SPL, temp
    ldi temp, HIGH(RAMEND)
    out SPH, temp


;   ldi temp, 0b00000001; TOIE0 \"1\" Timer0 Overflow enable
;   out TIMSK, temp


;   ldi temp, 0b00000101; Prescaler 64 CS00 und CS01 \"1\"
;   out TCCR0, temp


   ; ################################



  ldi temp, 0x00
  out ASSR, temp

  ldi temp, 0x07
  out TCCR2, temp

  ldi temp, 0x00
  out TCNT2, temp

  ldi temp, 0x00
  out OCR2, temp


  sei; Interrupts aktivieren

von Josef (Gast)


Lesenswert?

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x40;

Das ist wichtig !

von Jens123 (Gast)


Lesenswert?

Ich habs gemerkt


Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.