- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 19

Thema: Timer1, Interrupt wird nur einmal ausgeführt

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Hallo Helmut,
    ich glaub viel fehlt nicht mehr wenn das TIMSK richtig gesetzt ist. Was passiert im Mode 4, also CTC mit OCR1A als TOP?:

    Code:
    ;; Output Compare Register 1 A for CTC
    ; write value 15625 -> 15625 * 1024 = 16MHz -> 1 second count
    LDI                temp,    0b00111101  
    OUT                OCR1AH,    temp
    LDI                temp,    0b00001001
    OUT                OCR1AL,    temp
    ;; Output Compare Register 1 B for CTC
    ; write value 31,250 -> 31,250 * 1024 = 32MHz -> 2 seconds count
    LDI                temp,    0b01111010 
    OUT                OCR1BH,    temp
    LDI                temp,    0b00010010
    OUT                OCR1BL,    temp
    .
    .
    . 
    .
    .
    ;-------------------------------------------------------------------------------------------
    ; interrupts
    
    interrupt_compare_A:    ; interrupt routine for compare register 1 B
        IN            temp_1,    SREG    ; save status register
        LDI            temp,    0x00    
        OUT            PORTC,    temp    ; LEDs on
        OUT            SREG,    temp_1    ; restore status register
        reti
    
    interrupt_compare_B:    ; interrupt routine for compare register 1 A
        IN            temp_1,    SREG    ; save status register
        LDI            temp,    0xFF
        OUT            PORTC,    temp    ; LEDs off
        OUT            SREG,    temp_1    ; restore status register
        reti
    
    ;-----------------------------------------------------------------------------------
    Der Timer läuft nur bis 15625 da OCR1A mit 15625 gesetzt ist. Interrupt Flag wird gesetzt wg. Compare1a Interrupt. Interrupt Compare1A wird ausgeführt und LEDs werden in der ISR eingeschaltet. Der Timer läuft nicht weiter hoch sondern setzt sich auf 0 (Null) wegen CTC. Er erreicht also die 31250 für Compare1B Match gar nicht da TCNT1 vorher zurück gesetzt wird. Compare1B Interrupt kann also nicht eintreten und die LED nie ausgeschaltet werden.

    Also einfach die 15625 ins OCR1B schreiben und die 31250 in OCR1A. Damit läuft der Timer zwei Sekunden hoch. "Oben" schaltet er über den Compare1A Interrupt die LEDs ein und auf dem Weg nach oben über den Compare1B Interrupt die LEDs aus.

    Übrigens um genau zwei Sekunden zu erreichen sollte der Wert 31249 statt 31250, da der Timer noch einen Timertick braucht um auf Null zu kommen. Spiegelt sich auch im Datenblatt in der Formel zur Frequenzberechnung mit der -1 wieder. Eventuell auch die 15625 um eins vermindern?

    So bin gespannt was sich tut.

    Gruß
    Searcher
    Geändert von Searcher (21.03.2019 um 18:30 Uhr)
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Ähnliche Themen

  1. Warten auf Tastendruck -> Interrupt wird nicht mehr ausgeführt
    Von Amri im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 04.12.2012, 13:10
  2. If-Schleife wird nicht ausgeführt
    Von Knipser-14 im Forum C - Programmierung (GCC u.a.)
    Antworten: 11
    Letzter Beitrag: 08.10.2010, 12:26
  3. Antworten: 1
    Letzter Beitrag: 03.08.2010, 18:37
  4. Programm wird bei geänderter Frequenz nicht mehr ausgeführt
    Von cesupa im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 19.08.2007, 00:50
  5. Anweisung wird nicht richtig ausgeführt
    Von Foooob im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 20.02.2006, 18:11

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test