- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 30

Thema: ATMEGA 16 TIMER-Problem

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Hallo,

    ich habe dein Programm mal auf meinem RN-Control ausprobiert und bei mir funktioniert es problemlos.
    Ich hab das "unnütze" jetzt mal raus gemacht:

    Code:
    #include <avr/io.h>
    #include <avr/interrupt.h>
    
    volatile int Zaehler=0;
    
    ISR (TIMER0_OVF_vect)
    {
             Zaehler++;
    }
    
    int main()
    {
            //Timer konfigurieren
            TCCR0 = (1<<CS02)|(1<<CS00);                                        //Prescaler = 1024
            TIMSK |= (1<<TOIE0);                                                //Overflowinterrupt erlauben
            
            sei();                                                                //Aktivierung der Interrupts
            
            //Ports konfigurieren
            DDRC = 0xFF;                                                        //PortB sind Ausgänge für LEDs
    
            while(1)
            {        
                     if(Zaehler==12)
                     {
                               PORTC = 0x01;
                     }
            }
    }
    Mein Mega32 läuft auf 1MHz (interner Oszilator) und nach etwa 3-4 Sekunden (geschätzt) geht die eine LED aus.
    Also am Code liegt das Problem nicht
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    08.10.2011
    Beiträge
    51
    Ich habe jetzt statt PORTB PORTD verwendet aber es ist wieder das gleiche Problem. Könnte es sein, dass das Registers des Timers irgendwie defekt ist? Habe jetzt uach noch den 'Timer1 statt Timer0 verwendet, aber noch immer kein Erfolg

  3. #3
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Bist du sicher das du 1MHz verwendest?
    Auf was hast du den das Fusebit für den Takt am Mega16 stehen?
    "#define F_CPU 1000000" ist nur eine Variable für die Software, welche die Taktgeschwindigkeit die du verwenden willst beinhaltet. Das stellt den Takt nicht auf 1MHz um. Das machst du nur mit den Fusebits
    Deswegen kannst du in deinem Programm das #define F_CPU auch löschen, weil es macht in dem jetzigen Programm keinen Sinn und hat auch keine Funktion.
    Eventuell hast du noch den 8MHz internen Oszillator aktiv und damit ist der Timer zu schnell für deine Berechnungen.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    08.10.2011
    Beiträge
    51
    Nein ich verwende 1MHz das "#define F_CPU 1000000" braucht ich für den "_delay_ms()"-Befehl, denn damit liefert der delay-Befehl die richtige Zeitspanne. Sonst habe ich noch einen 12MHz Quarz doch denn verwende ich momentan nicht.

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    37
    Beiträge
    5.093
    Hast du die Fuses kontrolliert? Funktionieren andere Programme (zum Testen kannst du den Ausgang togglen lassen)?

    MfG Hannes

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    08.10.2011
    Beiträge
    51
    ja andere Programme funktionieren kann lauflichter, LEDs mit Taster an steuern, auf einer 7-Segment Anzeige rauf un runter zählen lassen. Das funktioniert einwandfrei. Nur der Timer geht nicht.

  7. #7
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Also wie gesagt das Programm von mir läuft auf dem RN-Control und einem Mega32 problemlos und ich verwende den internen RC-Oszillator mit 1MHz.
    Selbst dein Programm funktioniert so (hab nur PortB auf C geändert, weil da LEDs dran sind).
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    08.10.2011
    Beiträge
    51
    kann man beim Timer irgendetwas raus messen? Um zu schauen ob er überhaupt etwas tut?

  9. #9
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Du kannst entweder den Registerinhalt über UART ausgeben lassen oder du togglest einen Pin.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  10. #10
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    37
    Beiträge
    5.093
    Du kannst den Timer so konfigurieren das er zählt oder eine PWM ausgibt. Messen kannst du nichts. Du könntest nur debuggen (damit meine ich mit Debugwire o.Ä.), wenn du die richtige Hardware (Programmer) hast.

    So wie Daniel vorgeschlagen hat kannst du zwar über UART Dinge ausgeben, das birgt aber wieder das Risiko von Programmfehlern.

    MfG Hannes

Ähnliche Themen

  1. [ERLEDIGT] ATMega 16 Timer 1 CTC Probleme
    Von Franky55555 im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 14.06.2011, 17:18
  2. Atmega 8 Timer
    Von woodeye im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 15
    Letzter Beitrag: 25.09.2009, 15:44
  3. Atmega mit >3 Timer
    Von manhunt im Forum AVR Hardwarethemen
    Antworten: 12
    Letzter Beitrag: 14.12.2008, 14:10
  4. Probleme mit Timer und ATMega 32
    Von steffen21m im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 07.01.2008, 19:17
  5. Atmega 32 8-Bit Timer Interrupt
    Von Benni im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 23.07.2007, 21:08

Berechtigungen

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

Labornetzteil AliExpress