12bit Ergebnis von MAX186 über SPI nach ATMega8535

OP #1433793
Lesenswert?

Hallo

ich bin noch nicht so lange dabei mit µControllern und dergleichen und 
habe deswegen mal ne Frage zur Auswertung des Conversion Ergebnisses des 
ADC MAX186. Der 12bit Wandler soll über SPI mit einem Mega8535 
ausgelesen werden. Der Code den ich habe (s. Anhang) funktioniert auch. 
Allerdings verstehe ich nicht, wieso. Die Funktion gibt das High- und 
Lowbyte zusammen zurück, nach verschieben mit
1
SampleH<<6
 und
1
SampleL>>2
 Nach dem Datenblatt des ADC 
(http://www.maxim-ic.com/getds.cfm/qv_pk/1070) gibt er aber die 12bit 
mit einer führenden und 3 nachgestellten Nullen aus. Wenn ich das 
nachrechne dann kommt bei mir immer das doppelte raus, da beim 
Verschieben um 2 nach rechts immer eine Null stehen bleibt. Vielleicht 
kan mir jemand erklären, warum die Return-Anweisung dennoch immer das 
richtige Resultat liefert.

Gruß
Ralf

P.S: Irgendwie fuktioniert das Hochladen des Codes nicht. Wenns mir 
einer erklärt mach ich das noch
OP #1436682
Lesenswert?

Bei etwas stöbern hier im Forum hab ich nen anderen Beispielcode 
gefunden, der das Ergebnis der ADC Wandlung noch auf andere Weise 
bearbeitet:
1
  res = SPDR;
2
  res = res << 4;
3
  
4
  SPDR = 0xFF;
5
  while(!(SPSR & (1 << SPIF)));
6
  res = res + (SPDR >> 4);

Das scheint ja auch zu funktionieren. Erschliesst sich mir aber 
genausowenig. Hat noch niemand sonst mit dem MAX186 gearbeitet?

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