Forum: Mikrocontroller und Digitale Elektronik 12bit Ergebnis von MAX186 über SPI nach ATMega8535


von Ralf F. (rfischer)


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

von Ralf F. (rfischer)


Angehängte Dateien:

Lesenswert?

Ok scheinbar kann man beim Bearbeiten eines Artikels keine Dateien mehr 
anhängen. Deswegen hier.

von Ralf F. (rfischer)


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?

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
Noch kein Account? Hier anmelden.