Forum: Mikrocontroller und Digitale Elektronik Debugger zeigt falschen wert im OCR1A


von Bratensosse (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

wollte heute mal etwas mit dem Debugger von AVR Studio spielen.
Dabei ist mir aufgefallen, dass im OCR1A der falsche Wert steht.

Atmega8
AVR Studio 4.18
WinAVR von 10.01.2010

Anstatt 0x0BB8 steht 0x01B8 drin. Kann mir vielleicht jemand sagen das 
so ist?

: Verschoben durch Moderator
von Karl H. (kbuchegg)


Lesenswert?

Bei PWM Modi heisst es immer aufpassen.
Bei manchen Modi werden die Compare Werte nicht sofort übernommen, 
sondern erst dann, wenn der Timer TOP oder BOTTOM erreicht hat.

-> Datenblatt studieren.

von Bratensosse (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Karl,

Habe nun mal den Simulator bis ca 30ms laufen lassen, bis dahin wird top 
bzw bottom lange überschritten. (habe es auf 20ms für einen 
modellbauservo eingestellt.

Ergebnis das gleiche.

Fällt dir noch was ein?

Liebe Grüße und vielen Dank für deine Antwort.

Grüße

von Karl H. (kbuchegg)


Lesenswert?

Machs nochmal.
Aber diesmal beobachtest du den TCNT1.
Wenn der den Wert vom ICR1 erreicht und sich dann immer noch nichts tut, 
dann hast du ein Problem.

Laut Datenblatt wird OCR1A bei Erreichen des BOTTOM Wertes (also wenn 
der TCNT1 von TOP auf 0 springt) upgedated.

Auch darfst du dem Simulator nicht alles glauben. Gerade im Bereich PWM 
sitzt da so mancher Fehler in der SImulation. Hast du schon mal die 
Errate durchgesehen, ob es sich dabei ev. um einen bekannten Bug 
handelt?

von Bratensosse (Gast)


Lesenswert?

TCNT1 läuft ca. bis 0x01FD und läuft dann rückwärts zurück auf 0x0000

Errate habe ich noch nie gehört, werde mal danach googln

Danke für deine Antwort :-)

von Karl H. (kbuchegg)


Lesenswert?

Bratensosse schrieb:
> TCNT1 läuft ca. bis 0x01FD und läuft dann rückwärts zurück auf 0x0000

Hab ich im Datenblatt falsch nachgesehen?
Das ist doch Modus 14, Fast Pwm

Der sollte eigentlich bis 0x9C40 (=ICR1) hochzählen und dann auf 0 
zurückfallen.



Und noch was.
Dreh das alles mal ein bischen um. Ein Timer wird 'eingeschaltet' indem 
man ihm einen Vorteiler zuweist.

Die übliche Vorgehensweise ist es
  zuerst die Ding einstellen
  und erst dann gehts los

Also: Stell die Register richtig und erst dann weist du einen Vorteiler 
zu.

von Bratensosse (Gast)


Lesenswert?

ok, habe ich promt mal ausprobiert.

gleiches Problem.
Auf dem Atmega geht alles wie ich es mir vorgestellt habe.

Grüße

und danke für deine hilfe

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bratensosse schrieb:
> Auf dem Atmega geht alles wie ich es mir vorgestellt habe.

Wofür willst du dann noch die Simulation?

Kann man für einen ATmega8 schon den "Simulator V2" auswählen?  Wenn
ja, dann immer diesen benutzen, der sollte den Digitalteil 1:1 so
abbilden, wie er auch im Silizium realisiert ist (im Analogteil kann
er natürlich trotzdem noch Fehler enthalten).  Der alte Simulator
dagegen war letztlich ein Rewrite der Hardware und hatte daher durchaus
Potenzial für Bugs.

von Justus S. (jussa)


Lesenswert?

Bratensosse schrieb:
> TCNT1 läuft ca. bis 0x01FD

das liegt verdächtig nahe bei 0x01FF, was afaik auf eine 9 bit-PWM 
hindeuten würde...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.