12F675
Will an GPIO2 eine Spannung auswerten (0,6-2,4V)und mit dieser Spannung das PWM-Verhältnis an GPIO1 nachregeln, soll eine AFC für einen Tuner werden (es kommen also noch Berechnungen hinzu). Die konstante PWM-Frequenz erzeuge ich über TMR0 und Interrupt. Für die Analogabfrage darf ich also keinen Interrupt verwenden. Funktioniert alles aber nur für eine unbestimmte Zeit (2-10sek). Irgendwann schlägt die PWM-Frequenz (also die vom Interrupt erzeugte) in eine unkontrollierte Schwingung um. Die Analogauswertung gibt mir im Moment nur bei gesetzten Bit 7 im ADRESL ein Signal an GPIO4 aus.
Auch dieser Ausgang funktioniert dann nich mehr richtig. Vielleicht kann sich ja mal jemand den Quellcode im Anhang anschauen (ist glaub ich gut dokumentiert). Verträgt sich eventuell der TMR0 Interrupt mit der Analogverarbeitung nicht richtig ??
www.biasim.de/12F675.asm
Hallo
Zum Testen würde ich den Code mal ein wenig vereinfachen. Was passiert z.B.wenn Du die ganze Tastenroutine weglässt (also PW konstant 120 bleibt).
Ich sehe da ein ev. Problem wenn pw 0x00 ist/wird, dann läuft der Pulseweiten-Loop 255 mal durch (glaub ich zumindest).
Wie siehts mit der externen Hardware am AD-Eingang aus? Könnte die ev. instabil werden?
Noch was am Rande:
das bcf INTCON, GIE und bsf INTCON, GIE in der ISR ist nicht nötig, das macht der PIC/resp retfie selber
Vielleicht hilfts?
Gruess
Felix
Lesezeichen