-         

Ergebnis 1 bis 6 von 6

Thema: Timer Interrupt Versuche

  1. #1

    Timer Interrupt Versuche

    Anzeige

    Hallo,

    ich bin ein Neueinsteiger und möchte erste Versuche mit einem Timer Interrupt machen.
    Ich benutze ein STK 500 mit einem ATmega168.

    Code:
    #include <avr/io.h>
    #include "lcd-routines.h"
    #include <stdlib.h>
    #include <avr/interrupt.h>
    volatile int i;
    
    
    
    
    int main(void)
    {
    	
    	DDRB = 0x00;					//PortB als Eingang
    	PORTB = 0xFF;					//Port B auf 0xFF setzen
    	lcd_init();						//LCD Initialsieren
    	TCCR0B = (1<<CS02);				//TIMER definieren
    	TIMSK0 |= (1<<TOIE0);
    	sei();							//Interrupt aktivieren
    	
    	while(1)
    	{
    					
    		{
    			char Buffer[20];
    			itoa( i, Buffer, 10 );
    			lcd_string( Buffer );		//Ausgabe LCD
    			
    			lcd_setcursor( 0, 2 );
    			lcd_string("uSiemens");		//Ausgabe LCD
    		}
    		
    		
    		
    	}
    }
    
    ISR (TIMER0_OVF_vect)					//Interrupt
    {lcd_clear();}							//Display löschen
    Leider funktioniert die Interrupt Routine anscheinend nicht, da kein Ergebnis am Display zu sehen ist.
    Geändert von PloechingerD (12.11.2013 um 10:18 Uhr)

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Was für ein Ergebnis erwartest du?

    - - - Aktualisiert - - -

    Um dir die Sache leichter zu machen.
    Du schreibst in deiner while-Schleife so schnell ins Display das du das clear aus der ISR bestenfalls als flimmern wahrnimmst.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  3. #3
    Mein Ziel wäre es hauptsächlich, das die Interrupt Routine funktioniert.
    Habe auch schon versucht die angezeigt Variable i im Interrupt zu inkrementieren.
    Und dadurch zählen zu lassen.
    Doch das funktioniert leider auch nicht.

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.03.2011
    Beiträge
    1.400
    Einen Breakpoint in den Interrupthandler setzen und schauen, ob er kommt.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  5. #5
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Beim Hochzählen einer Variable in der ISR muss man an das VOLATILE bei der Deklaration denken. Der Compiler optimiert sonst ggf. den Zugriff weg und man sieht nichts.

    Der einfachste Weg zur Fehlersuche wäre wohl der Simulation im AVRstudio.

    Die Ausgabe auf das LCD gehört leider auch noch zu den langsamen Funktionen. Im Normalfall sollte man das in der ISR Vermeiden. Es kann hier auch noch das Problem geben wenn die LCD Ausgabe aus dem Hauptprogramm von einer anderen LCD Funktion in der ISR unterbrochen wird.

  6. #6
    Habe eine Lösung für das Problem gefunden.
    Lag irgendwie an der zweiten Ausgabe lcd_string()
    Danke für die Hilfe

Ähnliche Themen

  1. Interrupt + Timer
    Von runner02 im Forum C - Programmierung (GCC u.a.)
    Antworten: 13
    Letzter Beitrag: 06.03.2011, 13:17
  2. erste Versuche mit Timer
    Von MSP430start im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 01.07.2009, 14:31
  3. Timer Interrupt
    Von ttiny im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 27.06.2006, 08:21
  4. Interrupt TIMER
    Von Exodus im Forum AVR Hardwarethemen
    Antworten: 11
    Letzter Beitrag: 06.06.2006, 17:42
  5. Interrupt und timer
    Von m0 im Forum PIC Controller
    Antworten: 3
    Letzter Beitrag: 14.03.2005, 19:19

Berechtigungen

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