Messwerteausgabe hochauflösend

#2468214
Lesenswert?

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?
#2468272
Lesenswert?

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))
Gast #2469015
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren