Hallo, habe das Beispiel von http://www.sprut.de/electronic/pic/programm/adcpwm.htm nachgebaut. Jetzt möchte ich die schlechte Genauigkeit der PWM-Ausgabe bei 8bit (20mV) auf 10bit (5mV) verbessern! Dazu müssen aber wie am Ende des Links kurz erklärt wird, noch zwei weitere Register eingelesen und dann irgendwie ausgegeben werden! Kann mir da bitte einer weiter helfen, bzw. Sagen, wie die ASM, umgeschrieben werden muss, damit meine PWM Auflösung mit einer genauigkeit von 10bit funktioniert? Muss zum testen fast 70Km an die Uni fahren und wollt deshalb gleich eine richtige Lösung ausprobieren! Wäre deshalb über ausführliche Vorschläge sehr dankbar. Ich brauche da unbedingt hilfe, schnell!!!! Danke
Damit ihr wisst wo mein Problem besteht, hier mal kurz die Hauptschleife mit derzeit 8bit PWM: ; Hauptprogrammschleife Main ; Eingangsspannung wandeln BSF ADCON0, 2 ; ADC starten loop BTFSC ADCON0, 2 ; ist der ADC fertig? GOTO loop ; nein, weiter warten ; Wert nach PortB schreiben movfw ADRESH ; obere 8 Bit auslesen movwf PORTB ; obere 8 Bit nach PORTB ; Wert an PWM übergeben MOVWF CCPR1L ; obere 8 Bit sind PWM ; Warten, damit der ADC sich erholen kann clrf wait warten DECFSZ wait, f goto warten goto Main end Mein Ansatz wäre nun hier dargestellt. dabei habe ich nun bei "Wert nach PortB schreiben 2 Zeilen eingefügt" Ist das Richtig, oder muss das Anders gemacht werden? Ich muss doch auch nur hier in der Hauptschleife was ändern, oder!? ; Hauptprogrammschleife Main ; Eingangsspannung wandeln BSF ADCON0, 2 ; ADC starten loop BTFSC ADCON0, 2 ; ist der ADC fertig? GOTO loop ; nein, weiter warten ; Wert nach PortB schreiben movfw ADRESH ; obere 8 Bit auslesen movwf PORTB ; obere 8 Bit nach PORTB end movfw ADRESL ; obere 2 Bit auslesen (von 10bit) movwf PORTB ; obere 2 Bit nach PORTB (von 10bit) end ; Wert an PWM übergeben MOVWF CCPR1L ; 10 Bit sind PWM ; Warten, damit der ADC sich erholen kann clrf wait warten DECFSZ wait, f goto warten goto Main end end Gruß Mirko
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.