Danke erst einmal für Eure schnelle Hilfe. Wenn ich das richtig verstehe, dann kann ich mit dem 16bit TC zwei unterschiedliche PWM Signale erzeugen, die ich dann an den Ports PD4 (OC1B) und PD5 (OC1A) von PortD abgreifen kann.
Ich möchte, wie bereits erwähnt, die beiden PWM-Signale über das UART vom PC aus steuern können. Da die Pins PD0 (RXD) und PD1 (TXD) von PortD ja schon für das UART reserviert sind und die beiden PWM-Signale ja auch über PortD ausgegeben werden sollen, hatte ich immer Porbleme mit der richtigen Initialisierung von PortD. Entweder ging die PWM oder das UART nicht. Vielleicht habe ich mich da irgendwie zu blöd angestellt. Vielleicht könnt Ihr mir da weiter helfen. Ich brauche auf jeden Fall die beiden PWM-Signale und das UART gleichzeitig. Wie muss ich denn die PWM auf PortD initialisieren damit das UART nicht blockiert wird?
Code:
DDRD = (1 << PD4) | (1 << PD5);
PORTD = 0x00; // ist das richtig, oder muss ich auch Pin-weise unterscheiden?
Du steuerst OCR1B anders an als OCR1A (siehe Settings von COM1Ax und COM1Bx in TCCR1A)
Was genau meinst Du damit? Was müßte ich denn machen um die Register gleich anzusteuern? Die Belegung von TCCR1A und TCCR1B unterscheidet sich ja grundsätzlich oder reden wir gerade aneinander vorbei?
Du setzt nur die low-register für die PWM. Damit bekommst Du nur ein sehr kleines Tastverhältnis hin (da Du die 16bit PWM verwendest).
Wie kann ich das denn ändern? Wie kann ich die High-Register setzen um das Tastverhältnis zu vergrößern?
Ich habe nun die beiden Variablen var_a und var_b mit 0 initialisiert.
var_a und var_b haben keinen definierten Wert.
Die Werte von var_a und var_b sollen später vom PC aus über das UART gesendet werden und in der while-Schleife jeweils var_a und var_b zugewiesen werden. Im Moment sind das Dummy-Variablen.
Für den PWM-Test möchte ich erstmal OCR1AL und OCR1BL feste Werte zuweisen und sehen das die beiden LEDS an den Ports PD4 und PD5 unterschiedlich hell leuchten.
Danke nochmals für Eure Hilfe.
Lesezeichen