Hallo Leute, Mir ist gerade etwas seltsames Aufgefallen. In einem aktuellen Projekt verwende ich den Timer1 im FastPWM Modus mit 10-Bit Auflösung. Die COM1x Register sind auf non-inverting eingestellt, sodass der Timer die Pins eigentlich bei erreichen des OCR1x Zählerstandes löschen müsste. Im AVR Simulator wird aber immer nur das PIN-Bit beeinflusst und nie das PORT-Bit, in der reelen Schaltung funktioniert es ebenfalls nicht, es wird keine PWM erzeugt, obwohl ich den PORT mit (1<<x) auf High setzen kann. Mir ist bereits bekannt das der FastPWM Mode mit dem AVR Studio 4.18 nicht simuliert werden kann, ist das Verhalten ebenfalls ein Bug oder habe ich einen Denkfehler ? MfG Thomas PS: Wenn die Anweisung zum löschen des PORT-Bits in die ISR geschreiben werden, funktioniert es.
1 | #include <avr/iom8.h> |
Was hat das in deinem Code zu suchen? Falls du dich dazu genötigt sahst, das hinzuzufügen um Fehlermeldungen zu beseitigen, dann hast du im Projekt den falschen Controller eingestellt. Und das wiederum kann dann der Grund für alle möglichen komischen Effekte sein.
Ich war bisher eigentlich immer der Meinung, dass
1 | #include <avr/io.h> |
und
1 | #include <avr/iom8.h> |
sich nicht gegenseitig beeinflussen können, sofern im AVR Studio der richtige Controller gewählt ist. Sollte dies nicht der Fall sein, dann wird eigentlich auch eine Fehlermeldung ausgegeben. Ich binde immer nur beide ein, um auch später noch am C-Code zu erkennen, welcher Controller verwendet wurde. Aber die überflüssige Bibliothek hat mit dem Verhalten anscheinend nix zutun, funktioniert auch ohne die Lib nicht richtig.
Thomas G. schrieb: > Im AVR Simulator wird aber immer nur das PIN-Bit beeinflusst Das sieht doch gut aus, die PWM geht also. Thomas G. schrieb: > und nie das > PORT-Bit Ist auch o.k. Die PWM geht direkt auf den Ausgang, das Latch ist wirkungslos. Peter
Thomas G. schrieb: > Ich war bisher eigentlich immer der Meinung, dass > >
1 | #include <avr/io.h> |
und
1 | #include <avr/iom8.h> |
sich nicht > gegenseitig beeinflussen können, sofern im AVR Studio der richtige > Controller gewählt ist. Sofern der richtige Controller eingestellt ist, ist das ganze
1 | #include <avr/iom8.h> |
unnötig. Es dient nur dazu, dass du bei einem Port auf einen anderen Prozessor maximal viele Fehler beheben musst. > Ich binde immer nur beide ein, um auch später noch am C-Code zu > erkennen, welcher Controller verwendet wurde. Schreibs in einen Kommentar rein.
Thomas G. schrieb: > Mir ist bereits bekannt das der FastPWM Mode mit dem AVR Studio 4.18 > nicht simuliert werden kann, ist das Verhalten ebenfalls ein Bug oder > habe ich einen Denkfehler ? Guckst Du Datenblatt, Kapitel "I/O Ports" und dort "Alternate Port Functions": Wenn Du den Portpin nicht als "General Purpose I/O", sondern als PWM verwendest, wird "PVOExn" aktiv, d.h. das Signal, das den physikalischen Ausgang steuert, wird nicht mehr von PORT-Register gesteuert, sondern eben vom PWM-Modul. Das PORT-Register-Bit wird dann nicht verwendet. PIN geht natürlich mit dem PWM-Signal mit, denn das ist ja der zurückgelesen Zustand des phyiskalischen Ausgangs.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.