Ich bin Neuling und beschäftige mich mit dem Buch PIC-Mikrocontroller (Bert van Dam) Als Beispiel wird auf Seite 76 ein Voltmeter gezeigt. Dieses hat eine Auflösung von 8 Bit. Die 255 Messwerte sind mir zu grob. Ich möchte die serielle Ausgabe in 10 Bit realisieren und die Messwerte seriell an einen PC weiterleiten. Kann mir jemand die Befehle ergänzen, die hierfür erforderlich sind? Die "normale" Variable lautet in jal: var byte resist, gemessen wird mit: resist = ADC_read_low_res (3), die Ausgabe erfolgt mit serial_sw_write(resist) an den PC in 8 Bit Wie kann ich auf 10-Bit Ausgabe umstellen?
Henning Pook schrieb: > Wie kann ich auf 10-Bit Ausgabe umstellen? Am Einfachsten: Stell auf 16-Bit Ausgabe um. zweimal ein Byte zu übertragen ist wesentlich einfacher zu realisieren als ein "krummer" Wert wie 10, sowohl auf µC als auch auf PC-Seite. Also in der Art: resist = ADC_read_high_res(3) serial_sw_write(high_byte_von(resist)) serial_sw_write(low_byte_von(resist))
Danke für die Unterstützung. Der Hinweis hat die grobe Richtung zwar gewiesen. Die Umsetzung hat aber in der vorgeschlagenen Form nicht funktioniert. Nach weiteren Experimenten und diversen Compilierungsversuchen hat nun endlich die folgende Schreibweise zum Ziel geführt: -- JAL 2.0.4 include 16f877_bert -- define the pins pin_a3_direction = input ---Pin 5 pin_d2_direction = output ---Pin 21 pin_c4_direction = output --Pin 23 -- general variable var word resist var byte res1 var byte res2 forever loop -- take a sample ADC_read_bytes(3,res1,res2) -- and switch pin_c4 = high ---Pin 23 LED Start delay_100ms (1) pin_c4 = low ---Pin 23 serial_sw_write (res1)--- Ausgabe Hbyte delay_100ms (10) serial_sw_write (res2)---Ausgabe LByte delay_100ms(20) pin_d2 = high ---Pin 21 delay_100ms(1) pin_d2 = low ---Pin 21 LED Ready end loop
resist = ADC_read_low_res (3), Daraus lese ich "Lese ADC mit niedriger Auflösung" Sieh mal in der Funktion nach, da wirst du wohl irgendwelche Einstellungen für den ADC in deinem PIC finden, die du verändern solltest, wenn der ADC denn mehr als 8 Bit kann.
Die vorgenannten Zeilen var word resist (word = 2x8Byte) ADC_read_bytes (3,res1,res2) löst den Messwert erfolgreich mit 10 Bit auf (bei 5V entsprechend mit 1024 Stufungen) und kann dann mit zwei separaten Bytes an den PC weitergereicht werden. Funktioniert mittlerweile bestens.. Trotzdem Danke für die Denkanstöße.
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.