- 3D-Druck Einstieg und Tipps         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 23

Thema: Atmega8 Timer0

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    24.01.2007
    Beiträge
    53
    Anzeige

    E-Bike
    Hallo,

    mit:

    TIFR = (1<<TOV0);

    kannst du eigentlich nur das Interrupt Flag löschen, eigentlich wird dies automatisch gemacht, aber man kann dies auch manuel durchführen.

    also testest nachher nur, od du wirklich das Flag gelöscht hast....

    lg michael

  2. #12
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    @Krampfda
    Wo liegt wirklich dein Problem, dein ursprüngliches Programm funktioniert doch. Ich habe das auf meinem Testboard ausprobiert. Wenn bei dir die LED nicht leuchtet dann hast du eher ein Hardwareproblem.

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    14.08.2007
    Beiträge
    13
    Bei mir blinkt die LED auch fleissig. Dazu eine kleine Verständnisfrage: Wieso geht die LED eigentlich wieder aus? Sie wird doch beim Interupt nur eingeschaltet, ich sehe keinen Grund wieso sie wieder ausgehen sollte und somit blinkt *verwirrt ist*. Müsste die led nicht eigentlich konstant leuchten?


    EDIT:
    streicht meinen Beitrag, ich hab ja in dem Code auch PORTB ^= (1 << PB0); stehen, daher geht das Ding halt an und aus. Wenn ich nur PORTB = (1 << PB0); setze, dann leuchtet die LED konstant.

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    03.08.2007
    Beiträge
    31
    Zitat Zitat von Hubert.G
    @Krampfda
    Wo liegt wirklich dein Problem, dein ursprüngliches Programm funktioniert doch. Ich habe das auf meinem Testboard ausprobiert. Wenn bei dir die LED nicht leuchtet dann hast du eher ein Hardwareproblem.
    genau da liegt mein problem: alle sagen, das programm sei korrekt (was ich auch glaube), aber der interrupt scheint nicht zu funktionieren.

    die LED funktioniert einwandfrei an dem port (wenn ich die anders ansteuer),
    der timer funktioniert ebenfalls.
    ausserdem habe ich auch schon einen anderen controller ausprobiert.

    ich habe keine ahnung, wo das problem genau sitzt ^^

  5. #15
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    55
    Beiträge
    524
    Zitat Zitat von Krampfda
    ich habe keine ahnung, wo das problem genau sitzt ^^
    Ich auch nicht. Habe den Code jetzt auch mal probiert, was soll ich schreiben, es geht.

    Mit if(TCNT0==0xff) hast du bewiesen, dass der Zähler hoch läuft. Da TOV0 nicht gesetzt wird, scheint es ein Problem beim Überlauf zu geben. Das Flag wird aber erst mit dem Wechsel von 0xff zu 0x00 gesetzt. Wenn du Lust hast, kannst du der Sache mit folgendem Code auf den Grund gehen. Es wird dir bei der Lösung aber wohl nicht weiter helfen.

    Code:
    int main(void)
    {
       DDRB   = 0x01;
       TCCR0   = (1<<CS02)|(1<<CS00);
       TIMSK   = (1<<TOIE0);   
       //sei();   ist nur ein Test Nix mit Interrupt
      TCNT0 = 0x01; //Wir wollen Prüfen, ob 0x00 wieder erreicht wird
       while(1)
       {
          if(TCNT0==0x00)
          {
             PORTB   = 0x01;
          }
       }
       /* Wird nie erreicht */
       return 0;
    }
    Leuchtet die LED findet ein Überlauf statt. Das Flag TOV0 müsste gesetzt sein.
    Wie hilft dir das? Keine Ahnung. Sorry.
    Hardewar? Okay, schließt du aus.

    Gruß

    Jens

    edit:Mir ist noch eine Möglichkeit eingefallen. Schau mal ob du auch die richtigen Headerdateien, die vom Atmega8, einbindest. Nicht das der Interruptvektor weißdergeier wohin zeigt.

  6. #16
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Also der Interrupt funktioniert sicher, sonst würde die LED bei mir nicht blinken, die wird nur in der ISR angesteuert.
    "karmek" hat ebenfalls geschrieben das die LED blinkt.

  7. #17
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    55
    Beiträge
    524
    Zitat Zitat von Hubert.G
    Also der Interrupt funktioniert sicher, sonst würde die LED bei mir nicht blinken, die wird nur in der ISR angesteuert.
    "karmek" hat ebenfalls geschrieben das die LED blinkt.
    Bei mir funktioniertes auch. Nur beim op wohl nicht.
    Oder habe ich da etwas überlesen? Er hat schon einen anderen ATMega8 probiert. Die LED soll an dem Port auch leuchten, wenn er sie ohne Interrupt anspricht. Hardware? Mir fällt kein passendes Scenario ein.
    Nehmen wir mal an, er hat die Headerdatei vom AtMegaXX eingebunden. Dann ist TIMER_OVF_vect nicht mehr 5 sondern 8 (Werte ausgedacht, nicht nachgeschaut).

    Gruß

    Jens

  8. #18
    Benutzer Stammmitglied
    Registriert seit
    03.08.2007
    Beiträge
    31
    Zitat Zitat von McJenso
    Schau mal ob du auch die richtigen Headerdateien, die vom Atmega8, einbindest. Nicht das der Interruptvektor weißdergeier wohin zeigt.
    in meinem ersten beitrag siehst du, wie ich den code compiliert und geflasht habe.
    habe immer den controllertyp mit angegeben, wo es wichtig ist, meine ich, aber ggf kannst du da was finden.

    gruß
    krampfda

  9. #19
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    55
    Beiträge
    524


    Jetzt wo du es schreibst ....

  10. #20
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Probier mal ob du meinen Code laden kannst
    Angehängte Dateien Angehängte Dateien

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests