- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 11

Thema: Summensignal auslesen funzt nur mit Timer0, nicht mit Timer2!?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Hallo,

    PWM funktioniert von allen 3 Timern richtig! Oszi ist vorhanden, mit diesem habe ich auch schon die Funktionstüchtigkeit der PWMs überprüft.
    Ich habe leider momentan keine Vermutung, wo das Problem liegen könnte. Werd aber heute Abend mal ein paar Tests durchführen.

    Gruß
    Chris

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von Che Guevara Beitrag anzeigen
    PWM funktioniert von allen 3 Timern richtig! Oszi ist vorhanden, mit diesem habe ich auch schon die Funktionstüchtigkeit der PWMs überprüft.
    Nachdem ich die Timer alle 3 im AVR-Studio laufen sehe (zum Testen die Prescaler verkleinert) und auch der Interrupt auf Pausedetect richtig kommt, bleiben nicht so viele Möglichkeiten über.

    Voraussetzung ist, daß der nichtfunktionierende Code gegenüber dem Funktionierenden nur im Bereich der Timer-Config, bzw. Zuweisung der Arrayelemente _bl 4,2 verändert wurde und sich keine weiteren versteckten Zugriffe auf den Timer im Code versteckt halten.
    Fand beim Drübersehen zumindest keine.

    Eine Fehlermöglichkeit wäre sicher eine ältere Bascom-Version, die Timer2 nicht richtig setzt. Was für eine Version wird genutzt ? Ich kann an der erzeugte .hex-Datei erkennen, ob da was falsch gesetzt wird, kannst ja mal anhängen.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Die Codes sind bis auf die Timer-Configs komplett gleich. Die Timer-Anweisungen kommen nur in Pausedetect und in Measure vor.
    Bascom Version ist die 1.11.9.5. Hex File ist im Anhand, danke

    Gruß
    Chris
    Angehängte Dateien Angehängte Dateien

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Also Timer2 in dem Hex läuft, die Register sind ordentlich gesetzt und die ISR wird aufgerufen, wenn ich das I-Flag im SREG manuell setze. Bis zum Enable Interrupts geht die Simulation nicht, denn die Waits blockieren, später auch noch das I2C, ohne I2C-HW geht da nicht viel.

    Ich kann mir immer noch vorstellen, daß es ein HW-Problem ist, denn die Timer beeinflussen sich intern nicht, außer einer schreibt dem anderen die Register kaputt, da muss aber zusätzlicher Code im Spiel sein. Kommentier' doch mal den Timer0 als PWM aus und setz' OC0A..B auf Ausgang und 1, oder toggle OC0A..B in der Mainloop.

    Anbei ein per 2.0.7.0 kompiliertes Hex, sollte das laufen, wird's Zeit für ein Update.
    Angehängte Dateien Angehängte Dateien

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Erstmal danke fürs drüberschauen Aber eine Frage hätte ich: Wie kannst du überprüfen, ob das Hex file korrekt ist?
    Ein HW-Problem kann ich ausschließen, den wenn ich Timer0 (als PWM) auskommentiere, funzt Timer2 ... PWM von Timer0 funzt auch, wenn ich z.b. fest vorgebene Werte in die Register schreibe (PWM0a und PWM0b) werden diese korrekt ausgegeben (mit dem Oszi und Motoren überprüft). Lediglich beide Timer zusammen (Timer0 als PWM; Timer2 fürs Summensignal) funktionieren nicht.
    Das Hex File werde ich morgen Abend mal draufspielen, werde dann berichten, obs geklappt hat. Vielen Dank schonmal.

    Gruß
    Chris

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von Che Guevara Beitrag anzeigen
    Aber eine Frage hätte ich: Wie kannst du überprüfen, ob das Hex file korrekt ist?
    Man kann im AVR-Studio das Hex öffnen, wird dann als Assembler angezeigt und lässt sich auch in gewissen Maß simulieren. Auf jeden Fall geht die Simulation soweit bis die Timer initialisiert wurden, da schaut man sich dann die Register an und vergleicht ggf. mit dem Datenblatt. Auch die Interruptvektoren sind zu sehen, da kann man einen Haltepunkt drauflegen, dann sieht man ob der Timerinterrupt auslöst und der Vektor angesprungen wird. Einzelne Blöcke wie die Int0-ISR sind so auch leicht zu finden. Man kann nicht das komplette Hex testen, aber man nimmt für den Fehler sowieso bestimmte Fehlerquellen an und die überprüft man gezielt. Bis jetzt fiel mir nichts Verdächtiges auf.
    Ein HW-Problem kann ich ausschließen, den wenn ich Timer0 (als PWM) auskommentiere, funzt Timer2
    Nimm einfach an daß der Timer2 wie vorgeschrieben läuft, auch wenn Timer0 PWM in Betrieb ist. Nimm ferner an, daß OC0A..B Störungen auf Int0 erzeugen, welche über die dann ausgelöste Measure-ISR zur Folge hat, daß Timer2 nie einen Überlauf bekommt. Dann wird Dir Timer2 als "nicht funktionierend" erscheinen, die Fehlerursache liegt aber woanders.
    Deswegen mein Vorschlag zur Gegenprobe den Timer abzuschalten, die OC0A..B als Ausgang zu konfigurieren und im Programm einfach auf einen bestimmten Pegel zu setzen oder zu toggeln. Wenn das dann geht, dann kann man dies ausschließen. Wenn's dagegen da klemmt, sucht man an dieser Stelle weiter.

    Bitte, gern geschehen.

Ähnliche Themen

  1. PWM mit ATMEGA644p mit timer0, timer1 und timer2
    Von lebratmaxe im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 29.07.2010, 18:42
  2. Atmega128, Timer2 als PWM mag nicht
    Von Felix H. im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 16.07.2010, 13:35
  3. Timer2 (Uhrenquarz) und Timer0 PWM vertragen sich nicht
    Von Marten83 im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 23.04.2009, 12:41
  4. Timer0 oder Timer2 benutzen, aber wie?
    Von H3llGhost im Forum Asuro
    Antworten: 17
    Letzter Beitrag: 08.01.2008, 17:15
  5. Timer2 overflow Interrupt will nicht
    Von BomberD im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 30.01.2006, 16:37

Berechtigungen

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

Solar Speicher und Akkus Tests