PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gameboy Cam an Mega16 (externer AD?)



Andy1988
22.08.2004, 02:17
Ich bin Anfänger im AVR programmieren! Hab mir erst gestern nen Mega16 bestellt, das Programmierfieber hat mich aber schon gepackt *g* Mit nen bischen Vorkenntnissen von Visual Basic hab ich dann mal mit Bascon angefangen und ein Bekannter hat mir einiges erklärt! Sogar, wie man ein Nokia 3310 Display (bin eh im Handymodding tätig) ansteuert und dort Pixel "malt"!

Jetzt bin ich auf die Sache mit der GameBoy Cam gestossen:
http://www.angelfire.com/de3/juliprograms/amr/gbcam.htm

Alles klar! Ich versteh alles, bis auf die Sache mit dem A/D Wandler! Klar, ich brauch einen! Denn die Cam gibt ja bei einem weissen Pixel viel Spannung aus und bei schwarz wenig. Aber was genau macht der A/D Wandler mit diesen Werten. Klar! Er wandelt sie in Digitale Werte um, aber wie? Kommen die Werte "hinten" als 8Bit (oder 1Byte) wieder raus und gehen dann zum AVR?

Und ich hätte nur gerne 1 Bit (also keine Graustufen, nur Schwarz oder Weiß), wie muss ich dann am A/D Wandler die Referenzspannung Vref einstellen?

BTW: Die ein Bit brauch ich nur, weil ich später das Bild über ein Grafikdisplay wieder ausgeben möchte. Und das, was ich benutzen will, hat keine Graustufen! Nur Schwarz oder Weiß! Muss mal schauen, wie schnell ich das aktualisieren kann. Mal n bischen mit der Geschwindigkeit spielen ;)
Achja! Ich denke, dass das für mich als Anfänger zu schaffen ist! Mit dem logischen Denken hab ich keine großen Probleme und das ist nicht die erste Programmiersprache und auch nich mein erstes Elektronikprojekt! Allerdings das erste, wo n A/D Wandler vorkommt *g*

edit: Achja, hab ich ganz vergessen zu fragen:
Kann ich nicht auch den internen A/D Wandler vom mega16 nehmen? Ist der schnell genug?

Danke für eure Hilfe
Andy

Andy1988
23.08.2004, 01:16
Hat auch keiner von euch ne Grund-Info-Seite zu A/D Wandlern?
Allein das würde mir warscheinlich schon reichen!

edit:
Hab einiges gefunden:
http://www.franksteinberg.de/e-tlc549.htm

Die Referzenspannung ginbts also an, wie er die Daten aufteilen soll (wann also ein Bit hinzugefügt wird.
Und aus den ankommenden Spannungen macht der A/D Wandler anhand der Referenzspannung Blnärwerte.
Bleibt nur noch die Fragem wie ich die Auflösung eines A/D Wandlers ändern kann. Also von 8 Bit auf 4 Bit oder sogar auf 1 Bit! Und, ob der Wandler des Mega16 schnell genug ist.

Joerg
23.08.2004, 09:21
Hi Andy,


edit: Achja, hab ich ganz vergessen zu fragen:
Kann ich nicht auch den internen A/D Wandler vom mega16 nehmen? Ist der schnell genug?

Ich gehe mal davon aus, dass die 260us Conversion Time des ATMega16 für diesen Zweck zu langsam sind.
Eine vernünftige Grenze dürfte der von Cyblord verwendete PCF8591 sein (90us) deutlich besser jedoch der von Kijon verwendete ADC0820 (1,4us).

Viele Grüße
Jörg

23.08.2004, 15:12
Naja ich werd wohl nen externen ranhängen. Ich glaube, ich weiss mitlerwile, dass man die Auflösungen vonden Wandlern nicht ändern kann. Ich denke ich werd mir mal nen 4 Bit bestellen!

andi84
24.08.2004, 01:20
Man kann die Auflösung eines ADCs nicht verändern, das stimmt.
Man kann allerdings mit dem shift-right befehl des AVR-Prozessors (bzw. mit dem Shift-Befehl von Bascom) die Auflösung beliebig verkleinern.
Allerdings kann man das auch über ein Vergleichen des Werts erledigen (falls ADC-Wert > x dann Bit=1, andernfalls Bit=0)
Gute ADCs bis hinauf zu zig Megasamples/sec gibts bei www.ti.com für lau (als Sample); man muss sich allerdings anmelden.
Vref gibt übrigens die Spannung and, bei der der ADC den maximalen Wert ausgibt (Ue sei Eingangsspannung, Uref Referenzspannung, n die Auflösung des ADC in Bit, X der vom ADC zurückgegebene Digitalwert: X = (Ue durch Uref) mal (2 hoch n))

Außerdem kann man den ADC eines AVRs 'übertakten', wobei die effektive Auflösung (das ist die Anzahl der Bits, die keinen Fehler durch Rauschen und Ungenauigkeit enthält) zurück. Man kann bei etwas höherem Takt locker 10.000 Samples pro Sekunde rausholen. Allerdings ist dann die Auflösung nicht mehr 10bit, sondern man davon bvielleicht noch 6 bis 8 Bit gebrauchen, der Rest ist dann Rauschen. Der höhere Takt kann allerdings den Strombedarf des ADC etwas in die Höhe treiben

Das mit dem höheren Takt habe ich übrigens schon ein paar mal angewendet (mit Erfolg)

(Alle Angaben ohne Garantie und Gewähr)