Game Boy Camera an AVR -- Ein paar Fragen zur Hardware
Hi!
Ich habe einen roboter mit dem ziel gebaut, dass irgendwann mal eine kamera darauf montiert wird, mit der er dann einem laserpunkt folgen kann.
Ich habe bereits eine Game Boy Kamera, und habe jetzt eine super Seite gefunden wo die auswertung und übertragung der bilder von der kamera zum uC ganz einfach erklärt wird:
http://web2.vz18184.evanzo-server.de...onik/gbcam.htm (strg-a drücken, dann kann man es auch lesen)
Das problem ist aber die Hardware. Man braucht unbedingt einen schnellen Controller, mindestens 16kByte Ram und einen schnellen AD-Wandler.
Als ad wandler wird auf dieser Seite ein PCF8591 verwendet. Der ist recht teuer, hat aber auch 4 eingänge und einen D/A Wandler, was ich alles nicht brauche. Vll finde ich da einen passenderen.
Der uC ist glaube ich kein problem, die ATmegas sind denke ich mit 16MHz schon schnell genug.
Das größte Problem ist der RAM, bzw. das ansprechen des RAMs.
Welche arten gibt es, den Ram an den uC anzuschließen?
Ich hab was gelesen von paraleller anbindung (die soll langsam sein) und eine mit integriertem Speichercontroller. Den haben aber nur manche AVRs, die teuren eben.
Welche Art empfehlt ihr mir? Ich muss eigentlich nur 128x128= ca 16000 Bytes nacheinander irgendwo abspeichern. und das möglichst schnell und einfach.
Und welchen schnellen gut erhältlichen (Conrad)AD-Wandler könnte ich verwenden?
lg
Christoph
Re: Game Boy Camera an AVR -- Ein paar Fragen zur Hardware
Zitat:
Zitat von Christoph2
Als ad wandler wird auf dieser Seite ein PCF8591 verwendet. Der ist recht teuer, hat aber auch 4 eingänge und einen D/A Wandler, was ich alles nicht brauche. Vll finde ich da einen passenderen.
teuer ?
2,20 €
Anschluss an den Mikrocontroller
Anschluss an den Mikrocontroller
Der Speicher wird über einen Daten- und einen Adressbus sowie die Steuerleitungen /OE (output enable, manchmal auch als /RD read enable bezeichnet), /WE (write enable) und /CS (chip select) angeschlossen. Der Datenbus für einen Speicher der Organisation 32k x 8 Bit hat eine Breite von 8 Bit, der Adressbus ist dann 15 Bit breit. Um den Speicher zu aktivieren, muß /CS auf LOW (Masse) gelegt werden. Dies kann verwendet werden, um mehrere Speicher- oder andere Bausteine am selben Bus zu betreiben. Hierbei muß sichergestellt sein, daß jeweils nur ein IC zur gleichen Zeit ein low-aktives /CS-Signal erhält, damit es nicht zum Kurzschluss auf dem Datenbus kommt (siehe Ausgangsstufen Logik-ICs). Ist außer dem Controller nur ein einziges IC an den Bus angeschlossen, kann /CS auch fest mit Masse verbunden und der Speicher somit permanent aktiviert werden. Das /OE-Signal dient hierbei dem Zweck, nach Anlegen einer Adresse am Adressbus den Speicher zum Übertragen eines Datenworts über den Datenbus zu veranlassen (Lesezugriff). Sollen Daten in das SRAM geschrieben werden, legt der Controller die Adresse und dann die Daten an, um den Speicher dann mit einem Low-Signal auf der /WE-Leitung zum Speichern zu bringen.
Die Reihenfolge der einzelnen Daten- und Adresspins am RAM kann nach Belieben variiert werden, wenn dadurch das Layout der Platine vereinfach wird. D.h. D0 des RAMs kann auch an D5 des Controllers gehen. Der Grund dafür ist folgender: Die Daten werden zwar verstreut im RAM gespeichert (Adressleitungen vertauscht) oder in falscher Anordnung im Speicher angelegt (Datenleitungen vertauscht), jedoch kompensiert sich diese Unordnung beim Auslesen wieder. ACHTUNG, das geht nur bei einfachen SRAMs. DRAM oder neuere Speicher nehmen das fix übel, weil die Ansteuerung durcheinander kommt (Adressmultiplexing, Pagemodus, Byteslanes bei DDR-RAM etc.). Bei diesen ICs kann man bestenfalls Datenleitungen tauschen, bei DDR-RAMs nur innerhalb einer Byte-Lane. Prinzipiell sollte man davon aber nur sparsam Gebrauch machen, wenn es dem Layout wirklich hilft.
Ohne Latch
Die einfachste Art einen externen SRAM an den Mikrocontroller anzubinden ist die direkte Verkabelung. Jeder Pin des SRAMs bekommt einen Pin am MC. Jedoch verschwendet diese Anschlußweise auch ziemlich viele IO-Pins. Bei dem nebenstehenden 32-KiBi-RAM verbraucht der Anschluß so 8+15+2 (25) Pins.
Am sinnvollsten verwendet man einen ganzen Port für die acht Datenleitungen, damit man schnell darauf zugreifen kann. Die Adressleitungen A0 bis A7 werden auch möglichst auf einen Port gelegt. An einen dritten Port wiederum werden A8-A14 angeschlossen; /WR und /OE können dann mit zwei weiteren freien Pins verbunden werden. Zusammen belegt diese Methode also 25 Pins für 32 KiBi. Auf diese Weise kann man an praktisch jeden Mikrocontroller einen SRAM anschließen, die Ansteuerung kann dann rein in Software vorgenommen werden. Das ist jedoch relativ aufwendig, in der Anwendung umständlich und langsam. Sinnvollerweise sollte der Mikrocontroller eine eingebaute Speicherschnittstelle haben, um den SRAM per Hardware direkt und schnell ansprechen zu können.
Mit Latch
Will man wertvolle Pins einsparen so benutzt man am besten ein Latch, das die Signale zwischenspeichert. Man kann wählen, ob nur A0-A7 eingespart werden soll, oder gleich alle Adressleitungen. Für den ersten Fall benötigt man ein 8-Bit Latch das ausreichend schnell schalten kann, für den zweiten Fall zwei Latches.
Die Eingänge des Latches werden mit den Datenleitungen des Mikrocontrollers verbunden und das Enable-Signal bekommt einen eigenständigen Pin. Die Einsparungen an Pins geht jedoch auf Kosten der Geschwindigkeit, da zuerst das Latch mit der Adresse geladen werden muß bevor die eigentliche Aktivierung des SRAMs beginnen kann. Bei einem 32-KiB-SRAM werden mit einem Latch nur noch 8+7+3 (18) Pins gebraucht, gegenüber der Variante ohne Latch also eine Einsparung von sieben Pins mit einem Bauteil.
Mit XMEM-Interface
Verbindung zwischen einem AVR und einem 32-KiB-SRAM mit Latch und dem XMEM-Interface
Viele Controller (AVR, 8051) besitzen ein Speicherinterface, das es ermöglicht SRAM anzuschließen und diesen als Erweiterung des internen RAMs zu benutzen. Dieser wird dann mit einem Latch angeschlossen, um Pins zu sparen. Das Enable-Signal des Latch muß mit dem Ausgang ALE (Address Latch Enable) verbunden werden, wie es im Schema gezeigt wird. Nach der Initialisierung des externen Speicherinterfaces steht der Software auch der externe SRAM zu Verfügung.
Als Latch eignen sich folgende Bausteine:
74HCT573 oder 74HCT373 Unterschied in der Pin-Belegung!
Infos aus http://www.mikrocontroller.net
lg
albert