SPI und Bascom

ATMega-Controller in BASIC programmieren

Postby optomann » Wed Mar 31, 2010 12:00 am

Hallo Freaks, habe an Atmel 128 eine LCD und 12 bit ADC angelötet, soll ein Voltmeter werden. Der 12 Bit Wandler wird über SPI (Bascom) abgefragt. Voltmeter zeigt aber nur 0 Volt und 5 Volt richtig an - dazwischen auch groben Unfug (aber immer zwischen 0 und 5).
Mache ich da mit der Umrechnerei was total falsches? Code angehängt.
Bin dankbar für einen heißen Tipp.
Attachments

[The extension bas has been deactivated and can no longer be displayed.]

optomann
 
Posts: 2
Joined: Fri Jan 03, 2014 1:52 pm

Postby pit999 » Sun Apr 11, 2010 12:00 am

Hallo

12 bit Wandler und V als singel ??????????

dat funzt nicht

viel Spass
pit999
 
Posts: 16
Joined: Fri Jan 03, 2014 1:52 pm

Postby optomann » Tue Apr 13, 2010 12:00 am

Hallo pit999, mit V als Single ist schon richtig, denk ich mal, Spannung wird ja vorher als Word geholt und dann umgerechnet. Problem liegt tiefer. Fast fünf Volt am Eingang liefern 65407 für "Spannung"(nicht ganz richtig_ sollten nur fast 4096 sein - und 0 Volt 0 -OK) Irgendwie würfelt SPI die Bits durcheinander. Idee ???
optomann
 
Posts: 2
Joined: Fri Jan 03, 2014 1:52 pm

Postby pit999 » Wed Apr 14, 2010 12:00 am

Hallo

rein rechnerisch schon aber du liest aus 12 bit nur 8 bit aus und holst dir 12 bit rein.
definiere die 12 bit auf 8 bit oder lies die 12 bit aus und dein ergebniss passt. du bekommst so ein ergebniss aus nirwanadaten
die in den 12 bit stehen. Bit 1 von den 8 bit steht dann wo es lust hat und nich an der stelle wo du auslesen willst um das ergebniss
sauber zu bekommen

dein V liest also 8 bit irgendwo aus 12 bit aus - was dann meistens nicht stimmt und oft komplett falsch interpretiert wird und dann als 0 oder 5 ausgegeben weil so definiert und weil dein wert nicht passt.

setz einfach dein V auf 12 bit und sieh dir an was rauskommt

wenn das ergebniss passt setz den 12 bit wandler auf 8 bit und das ergebniss passt. wie das funzt steht im datenblatt.

gruss
pit999
 
Posts: 16
Joined: Fri Jan 03, 2014 1:52 pm

Postby schube2 » Thu Apr 15, 2010 12:00 am

Hallo Optomann,
ich hätte zuerst vermutet das beim einlesen der Daten über die SPI-Schnittstelle die Reihenfolge des Lowbytes und des Highbytes nicht richtig beachtet wird.
Ich denke das eigendliche Problem ist der falsche Ansatz einer Dreisatzrechnung.
Du gehst davon aus das 5V einen Digitalwert von 65536 entspricht, also 16 Bit.
Der AD-Wandler liefert einen maximalen Wert im 12 Bit breite, also einen Digitalwert von 4096. Die SPI-Schittstelle überträgt zwar 16 Bit aber der AD-Wandler liefert nur einen Wert von 12 Bit und die restlichen 4 Bit bleiben Null.
Folglich müßtest du die 5V erst durch 4096 teilen und dann mit den Wert aus dem AD-Wandler multiplzieren.

Wenn schon eine LCD-Anzeige vorhanden ist dann laß doch den Wert aus dem AD-Wandler mit anzeigen. So lassen sich die Rechenwerte besser kontrollieren.

Gruß Bernd
schube2
 
Posts: 24
Joined: Fri Jan 03, 2014 1:47 pm


Return to BASCOM-AVR-Kurs

Who is online

Users browsing this forum: No registered users and 1 guest