- HEMS Solar Speicher Tutorial    Werbung      
Ergebnis 1 bis 7 von 7

Thema: Seltsames Verhalten Timer 0 overflow interrupt

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    26.08.2006
    Beiträge
    84
    Und TCNT0 sollte man afaik auch beim init und bei Tastendruck auf 0 setzen Bild  

    Nur nicht entmutigen lassen!
    Timer sind gut.
    Geändert von Slein (24.08.2011 um 19:10 Uhr)

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    26.08.2006
    Beiträge
    84
    Ich hab das Alles mal (ungetestet!) zusammengetippert, probiers mal so:

    Code:
    NOLIST
    .INCLUDE "m16def.inc" ; Headerdatei fuer Atmega 16
    .LIST
    ;
    
    
    ;
    ; ============================================
    ;   R E G I S T E R D E F I N I T I O N E N
    ; ============================================
    
    .DEF rmp = R16 ; Vielzweckregister
    ;
    
    ;
    ; ==============================================
    ;        R E S E T    V E K T O R
    ; ==============================================
    ;
    .CSEG
    .ORG $0000
        rjmp Main ; Reset-Vektor
    
    
    ; ==============================================
    ;                INTERRUPTS
    ; ==============================================
    
    .ORG OVF0addr ; Timer 0 overflow
    
        rjmp schalten
    
    
    ;
    ; ============================================
    ;    H A U P T P R O G R A M M    I N I T
    ; ============================================
    ;
    Main:
    ; 
        ; --- EDIT: init stack
        LDI rmp, HIGH(RAMEND)     ; Oberes Byte
        OUT SPH, rmp         ; an Stapelzeiger
        LDI rmp, LOW(RAMEND)     ; Unteres Byte
        OUT SPL, rmp        ; an Stapelzeiger
    
        ldi rmp,0x02    // PORT A1 Ausgang, rest Eingang
        out DDRA,rmp
    
        ldi rmp,0x00    
        out PORTA,rmp    // PORT A initialisieren
    
        sbi PORTA,0        // Pull-up für PORT A0 aktivieren
    
    //// Timer 0 konfigurieren
    
        ldi rmp,0x05    // Prescaler 1024
        out TCCR0,rmp
    
        ldi rmp,0x01    // Interrupt bei Timer Overflow
        out TIMSK,rmp
    
        cli                // Globale Interrupts deaktivieren
    ;
    ; ============================================
    ;     P R O G R A M M - S C H L E I F E
    ; ============================================
    ;
    Loop:
        
        wdr
        sbic PINA,0        ; EDIT: nächsten Befehl überspringen, wenn Taster *gedrückt* ist
        rjmp loop          // Zurueck nach Loop
        
        ; --- EDIT: timer auf 0 und globale ints
        LDI rmp, 0
        OUT TCNT0, rmp
        sei                   // Timer starten
        rjmp loop          // weiter im main loop
    
    /// -----------------------------------
    /// Zum ein und ausschalten der LED
    schalten: 
        
        in rmp,PINA            // Zustand von LED einlesen
        ldi R17, 0xFF        // 
        eor R17,rmp            // exor um LED Zustand zu wechseln
    
        sbrc R17,1            // LED einschalten überspringen, wenn beim exor 0 rauskommt.
        sbi PORTA,1            // LED einschalten
    
        sbrs R17,1            // LED ausschalten überspringen, wenn beim exor 1 rauskommt.
        cbi PORTA,1            // LED ausschalten
        
        ; --- EDIT
        CLI
        RETI
    
    /// -----------------------------------
    Für größere Projekte solltest du aber TIMSK0 ändern, sei/cli setzt ja gleich alle ints tot.

Ähnliche Themen

  1. Seltsames Verhalten: bumper_right
    Von stereolog im Forum Robby RP6
    Antworten: 4
    Letzter Beitrag: 19.08.2011, 14:26
  2. seltsames Verhalten am I2C
    Von liquidus im Forum Elektronik
    Antworten: 12
    Letzter Beitrag: 06.12.2009, 17:42
  3. Seltsames verhalten
    Von Atmelbeginne im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 6
    Letzter Beitrag: 10.12.2008, 18:37
  4. Seltsames Verhalten vom ADC an RN-Control
    Von MasterFX im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 0
    Letzter Beitrag: 19.04.2008, 17:09
  5. Overflow Interrupt für Timer
    Von Maestro im Forum AVR Hardwarethemen
    Antworten: 8
    Letzter Beitrag: 28.09.2004, 17:02

Berechtigungen

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

    Werbung      Labornetzteil AliExpress