Hallo alle ich brauche ein Phaseverschiebung fuer ein PWM- Signal. Wenn ich ganz einfach nach der Initialisierung PWM am Pin RC2 und anschlissend re- transmitte ich dass Signal an PORTB mit einem delay, so wie.. zB: call delay movf PORTC, W andlw 0x04 movwf PORTB dann bekomme am PORTC ich ein PWM-Signal mit etwa unterschiedlichen Takverhaelniss. Also, ein Phaseverschiebung macht er nicht. Wie soll ich ein sauberes Phasevershiebung umg. 1/2 Periode programmieren ? Wer eine Idee hat bitte meldet. Danke
Nachdem du weist wie lang eine Periode ist (Zeit) startest du auf PortB nach der halben Perioden und beendest nach der ganzen wieder, du brauchst nur einen Timer dazu.
Arno, ein Inverter- waere zu einfach- er macht nur die ganze Periode, also 180 grad, weil ich brauche nur 90 grad (oder weniger) ; ich habe es schon am Anfang ueberprueft :). Hubert, ist umgf. was ich auch tuhe. Ich starte mit einem delay, dann gebe aus auf PORTB. OK, ich vergesse dass ganze rechtzeitig zu beenden... Also, wenn ich zB. Timer0 wahle (Timer2 ist besetz bei PWM) da muss ich ihm nur eine richtige Zahl uebergeben, die zu meine Periode passt. Ist dass richtig ?
Genau so hätte ich mir das vorgestellt. Machst du beim Start tatsächlich ein delay? also eine Warteschleife? Ich würde bereits mit dem Timer starten, halber Wert der Periode.
Hm? Steigende Flanke altes Signal erkannt delay Steigende Flanke neues Signal ausgeben ...Periode vergeht Fallende Flanke altes Signal erkannt gleicher delay Fallende Flanke neues Signal ausgeben ...Bis zum nächsten mal Wo is das Problem?
und villeicht noch eine dumme Frage. Wenn ich in meinem Programm mehrere Interrupts implementiere (fur PIC1687xx, zB.), wie soll ich es tuhn ? In Interrupt Service Routine Bits in Register INTCON abfragen ? Gibt's vielleicht eine elegantere Metode - in Datenblatt es ist leider slcleht geschrieben.
Hubert, ich starte, ja, mit eine Warteschlefe, aber Timer ist wahrsheinlich besser. Simon, um die Flanken zu erkennen baruche ich zuerst ein Interrupt, oder ? Ich habe nicht viell PIns zu Verfügung am PIC 16f187xx: nur RC2 ; wenn ich PWM mache da ist RC2 schon als Output comfiguriert
Bei einer Warteschleife steht ja alles andere auch. MÖglichkeiten zum realisieren gibt es sicher eine Menge. In der Hauptschleife pollen wann RC2 gesetzt wird oder noch besser beim setzen von RC2, Timer mit halben Wert von RC2 laden und starten, wenn der Timer abgelaufen ist PortB setzen, Timer mit ganzen Wert laden, starten, wenn abgelaufen PortB zurücksetzen. Da braucht du nur den Interrupt von Timer0.
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.