Hi Kollegen, ich habe einen digitalen Bilderrahmen mit SD-Karte und dem Siemens S65 Display gebaut. Das ist heute vielleicht nicht mehr so aktuell, weil es die Dinger inzwischen überall zu kaufen gibt, aber ich hatte mit dem Projekt schon vor fast zwei Jahren angefangen. Es lag dann lange rum und erst seit ich einen AVR-Dragon hatte und vernünftig debuggen konnte, ging es schnell voran. Ich hatte es ursprünglich für einen mega168 programmiert (wegen Speicher und Debug-Möglichkeit), jetzt aber einige Features gestrichen, damit es in die 8k eine mega8 paßt. Ich verwende für beide SPI Schnittstellen einfaches Soft-SPI und lasse den mega8 einfach mit dem internen 8MHz RC-Oszillator laufen. Damit dauert der Bildwechsel kanpp 3s. Das finde ich völlig ok, aber wenn es jemand schneller möchte, kann er ja auf Hard-SPI umstellen und evtl. ext. 16Mhz Quarz. Durch Soft-SPI ist man natürlich ziemlich flexibel bzgl. Pinning und anderen CPUs. Das Programm ist simpel und geht einfach davon aus, dass die gespeicherten Bitmaps genau 176W x 132H 24Bit-Pixel Bitmaps sind. Da wird nix skaliert o.ä.! Wenn's nicht paßt, gibt's bunte Pixelmuster! Die SD-Routinen stammen von Nick Lott und seinem Butterfly MP3 player. Sie lesen alle *.bmp files im Root-Verzeichnis einer FAT16 formatierten SD-Karte ein (mag keine Verzeichnisse). Die S65-Routinen stammen natürlich von Christian Kranz und funktionieren nur mit dem LS020 (ich habe noch P03 Displays, die ich aber nicht zum Laufen bekomme). Das Programm hat feste Bildwechselzeiten und blendet während des Ladevorgangs den Dateinamen ein. Das kann natürlich jeder so anpassen, wie er mag (kein Dateiname oder die ganze Zeit...). Sollte ein Fehler auftreten, dann wird versucht, eine qualifizierte Fehlermeldung auszugeben. Viel Spaß damit, Matthias P.S. Es muß ja nicht unbedingt ein Bilderrahmen sein. Das Teil verrichtet auch klaglos seinen Dienst als Werbetafel oder Stadionanzeige auf einer Modellbahnanlage. Es läßt sich auch gut in originelle Geschenke einbauen (Bauteile < 20 Euro).
Hier ist noch ein Bild von dem Teil. Einen Schaltplan habe ich noch nicht gezeichnet, aber die Schaltung ist auch ziemlich einfach. Die Pinbelegungen der SD-Karte und des S65 Displays gehen aus den defines der Headerfiles hervor. Als Spannungsregler verwende ich einen LM317L, den ich auf 2.9V eingestellt habe. Damit laufen alle drei Komponenten, ohne dass man sich Gedanken um Level-Shifting etc. Gedanken machen muss. Bei mir läuft das ganze an einem alten Steckernetzteil. Das liefert 12V im Leerlauf und daraus kann man über einen Vorwiderstand die 10.5V für die Hintergrundbeleuchtung speisen. Matthias
...und so, wenn keine Karte drinsteckt...
...beim Laden des Bildes wird der Dateiname eingeblendet.
Hallo Matthias, prima Idee, und preiswert. Welchen Konverter für die Bilder benutzt du oder bearbeitest du die Bilder mit einem Program?
Es müssen nur einfache Windows Bitmap Dateien sein, die man mit einem Cardreader auf die Karte spielt. Zum Umformatieren nehme ich Macromedia Fireworks, weil das Scipte und Batchverarbeitung kann; da kann man einfach sagen: "nimm alle 100 Bilder aus diesem Verzeichnis und wandle sie in 176x132 Bitmaps!". Geht aber im Prinzip mit jedem Grafikprogramm. (für die "ganz tief gesunkenen" geht's sogar mit Paint!)
Nur als Tipp: IrfanView ist Freeware, kann eine ganze Menge Bildformate lesen und ebenfalls Batch-Konvertierung.
Hi, klasse idee und super umsetzung. Kannst du auch noch sie schemtic posten? wie erzeugst du die LED-Spannung für das Display ? CA Dirk
Super Idee, hätte allerdings auch interesse an einem Schematic. Wär echt super wenn du das noch machen könntest.
Ich bin gerade dabei eine Schematic zu zeichnen. Matthias
Hallo Matthias, bist Du immer noch dabei zu zeichnen ? ;-) Wann ist den mit den Schematics zu rechnen ? MfG, balze
Hallo, find ich auch interessant, die Beschaltung ist mir aber as dem Code nicht klar. Kommt da noch ein Schaltplan nach? Gruss Thomas
Super Projekt. Wäre auch an kleinen einem Schalplan interessiert.
Sorry, war auf Dienstreise und hatte überhaupt keine Zeit. Den Schaltplan werde ich in den nächsten Tagen fertig haben. Matthias
Guten Tag, die SD Karte, ist das so eine wie im Telefon aus dem das Display stammt, verwendet wird? Ich kenn mich mit den verschiedenen Speicherkarten nicht so genau aus und würd gerne diese Karte (war bei meinem Schrotttelefon halt schon dabei) verwenden. Besten Dank vorab, Gruss Thomas
Thomas wrote: > Guten Tag, > die SD Karte, ist das so eine wie im Telefon aus dem das Display stammt, > verwendet wird? > Ich kenn mich mit den verschiedenen Speicherkarten nicht so genau aus > und würd gerne diese Karte (war bei meinem Schrotttelefon halt schon > dabei) verwenden. > > Besten Dank vorab, > Gruss > > Thomas Die Speicherkarte aus dem Handy (S65) kannst du verwenden
Wieviel Strom (bei welcher Spannung) braucht das Gerät?
Ganz grob geschätzt würde ich sagen: 12V 70mA 2.9V 150mA Da die 2.9V aus den 12V gewonnen werden sind es aber 12V 220mA... Pi * Daumen
Hallo, hat sich schon etwas mit dem Schaltplan getan ? Würde es gerne mal nachbauen, da ich alle Teile hier zur Verfügung habe. Gruß Hans Dampf
Hallo, Stromverbrauch: 12 mA während das Bild nur angezeigt wird 37 mA während das Bild aus der SD-Karte gelesen wird Hintergrundbeleuchtung liegt bei mir bei ca. 15mA Sorry, hab noch keine Zeit gefunden, das mit dem Schaltplan zu machen. Aber genaugenommen ist da natürlich nix dran: SD-Karte und Display wie in den Headerdateien anschliessen, mega8 mit LM317L und zwei Widerständen (240 und 330 Ohm) anschliessen und einen Vorwiderstand (je nach Steckernetzteil) für die Hintergrundbeleuchtung... Gruß, Matthias
Hi, hab es soweit nachgebaut, bekomme auch schon die Fehlermeldung ins Display. Super !! Leider liest der µC die Karte nicht. Habe sie an 3,6V angeschlossen und die Eingänge über einen Teiler 1,8K zu 3K (siehe Ulrich Radig Seite) angeschlossen. Danach eine mit FAT frisch formatierte Karte rein mit einem BMP 176x132 24Bit beschrieben. Er meldet immer daß keine Karte drin ist. Hab eine andere versucht, das gleiche. Werde mal mit einem Scope an der Karte messen ob alle Signale da ankommen. Thomas
> Als Spannungsregler verwende ich einen LM317L, den ich auf 2.9V > eingestellt habe. Damit laufen alle drei Komponenten, ohne dass man sich > Gedanken um Level-Shifting etc. Gedanken machen muss. Wo liegt das Problem Thomas?
Hallo Marius, bin einen Schritt weiter. Mit einer 256MB Karte kann ich ein Bild lesen (Juhu!!), aber eine 32MB Karte (war beim Telefon dabei) bringt die Meldung es sei kein BMP drauf. Im PC aber habe ich beide Karten mit FAT16 formatiert und exakt dasselbe Bild draufkopiert. Der PC liest beide Karten, warum der µC nicht? Ach so: Mein Problem war daß DO und DI vertauscht waren. Der Pin PI der Karte (siehe Ulrich Radig) muß an PO und umgedreht. Ich denke ich muß mal mit Wartezyklen bei der 32MB Karte spielen. Auch ein Takt von 1MHz statt 8MHz macht keinen Unterschied. Gibt es Erfahrungen mit diesen Karten? Drauf steht SanDisk RS-MMC 32MB. Gruss aus Hofheim im Taunus Thomas
Ich hab das hübsche Teil eben mal aufgebaut, nachdem ich heute Mittag Displays bekommen habe. Sieht echt gut aus. Schöne Arbeit ! Ich hab auch mal ne 32 MB Karte reingesteckt. Anfangs ging sie, nachdem ich neue Bilder draufgemacht habe ging nichts mehr. Andere Karten gehen besser. Ist mir aber egal. Nehm ich halt ne Karte die geht ;-)
Hallo, kann das mit den Herstellern der Katen zusammenhängen? Ich wüßte gerne warum es nicht geht, einfach eine reinstecken die geht ist eher unbefriedigend. Weiß jemand da etwas zu??
Hallo, eine 32 MB Karte dürfte nicht funktionieren. Man kann im PC nur auswählen FAT zu formatieren, aber Windows benutzt einfach (dagegen kann man sich nicht wehren) für kleine Karten FAT12. Das hat einen anderen FAT-Aufbau und das versteht das (simple) Programm im Bilderrahmen nicht. Ab einer 128 MB Karte müßte es automatisch FAT16 sein und funktionieren! Gruß, M. Bode
Ich habs noch mal mit meiner 32MB Karte versucht. Auch wenn ich die einfach in XP formatier geht die jetzt. Der scheint also nicht automatisch immer FAT12 zu nehmen. Aber wenn es nur an der richtigen formatierung liegt, müsste ja jede Karte gehen. Ich habs mit verschiedenen Karten versucht und habe den Verdacht, dass Windows beim formatieren mit FAT einfach das Dateisystem benutzt, das zuletzt auf der Karte war. Auf jeden FAll bekomm ich ne 32 MB, 64 MB und 256 MB zum laufen. Alle unterschiedliche Hersteller.
Hallo, danke für die Tips. Ich hab aber auch versucht im DOS Fenster zu formatieren: format h: /fs:fat Nimmt XP dann auch FAT12? Werde ich nochmal mit fat16 versuchen. Kann ich aber erst am Wochenende machen. Gruss Thomas
HAllo, hab es nochmals versucht, das kam heraus: format h: /fs:fat16 Legen Sie eine neue Diskette in Laufwerk H: ein, und drücken Sie die EINGABETASTE. Der Typ des Dateisystems ist FAT. Das neue Dateisystem ist FAT16. FORMAT ist für FAT16-Laufwerke nicht verfügbar. Was heißt das? Erst geht es nicht, dann ist alles FAT16?? Lesen kann ich die Karte aber trotzdem nicht. Ich hab mal eine andere 32MB Karte bestellt, werde die mal versuchen. Die Karte wird nur erkannt, die Datein aber nicht gelesen. Ich nutze XP, habe nichts anderes. Wäre für Anregungen dankbar. Gruss Thomas
Hallo zusammen, habe den Bilderrahmen mittlerweile auch in Betrieb genommen. Probleme gab's wie bei Thomas auch, das ich DI und DO an der SD Karte vertauscht hatte. Was mir aber absolut nicht gelingt und ich weiss echt nicht warum, ist den source code neu zu compilieren und dann auch dem ATMEGA8 zum laufen zu bringen. Ich würde gerne die eine oder andere Änderung im Code vornehmen. Wenn ich das Projekt in AVRStudio lade, läßt es sich ohne Probleme compilieren, aber das HEX file (siehe attachement) hat leicht anderen Inhalt als das originale und wenn ich es flashe, dann passiert auf dem Display nichts mehr. Es scheint mir irgendein Timing Problem zu sein. Wenn ich dann das originale Hex-File wieder flashe, funktioniert alles wunderbar. Ganz grundsätzlich: wieso erzeugt mein Compiler (neuester WINAVR GCC) anderen hex- code ??? Bin ratlos, und bitte um Vorschläge. Danke!" Gruß Patric
Hallo Patric, leider kann ich dein Hex File nicht verwenden, als ich die vertauschten Bits hatte hab ich einfach die Zuordnung geändert, so mußte ich den Lötkolben nicht wieder anwerfen. Nu passt es nicht mehr zum "Standard". Habe es in der MMC.h so geändert: #define MMC_CS 0 #define MMC_DO 1 #define MMC_DI 2 #define MMC_Clock 3 Wenn du das mal machen willst lade ich es gerne hier rein und teste es mal. Inzwischen habe ich von einem Freund eine 32MB Karte geschnorrt die funktioniert. Die aus dem Telefon hab ich nicht zum Laufen gebracht, aber egal. Bei mir funktioniert nun alles wie es soll, juhu!! Meine Compiler Version ist avr-gcc (GCC) 3.4.3 . Gruss aus Hofheim am Taunus und einen schönen Sonntag Thomas
Hi Thomas, habe das Projekt neu compiliert mit der Vertauschung von DO und DI. Anbei das hex-file und nachfolgend der output des compilers. Schau doch mal, ob der code auch Deinem ATMEGA läuft. Gruß Patric Build started 25.11.2007 at 14:08:37 avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -DF_CPU=8000000UL -Os -fsigned-char -MD -MP -MT main.o -MF dep/main.o.d -c ../main.c ../main.c: In function 'cue_file': ../main.c:193: warning: pointer targets in passing argument 2 of 'message_center' differ in signedness ../main.c: In function 'main': ../main.c:309: warning: case label value is less than minimum value for type avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -DF_CPU=8000000UL -Os -fsigned-char -MD -MP -MT mmc.o -MF dep/mmc.o.d -c ../mmc.c avr-gcc.exe -mmcu=atmega8 disp.o lcd.o avrfat16.o delay.o main.o mmc.o utils.o -o Bilderrahmen001.elf avr-objcopy -O ihex -R .eeprom Bilderrahmen001.elf Bilderrahmen001.hex avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex Bilderrahmen001.elf Bilderrahmen001.eep || exit 0 d:\apps\winavr\bin\avr-objcopy.exe: there are no sections to be copied! AVR Memory Usage ---------------- Device: atmega8 Program: 7494 bytes (91.5% Full) (.text + .data + .bootloader) Data: 660 bytes (64.5% Full) (.data + .bss + .noinit) Build succeeded with 2 Warnings...
Hi, mein anfänglicher Verdacht, es liegt am Timing hat sich bestätigt. Die Routine mswait in lcd.c enthält zwei leere for-schleifen als warteschleifen um das Timing zu realisieren. Diese werden von meinem Compiler mit der -Os Option wegoptimiert, d.h. es finden überhaupt keine Verzögerung im Programablauf statt. Ich habe die Routine umgeschrieben und ein volatiles NOP eingefügt (siehe unten). Jetzt funktioniert auch das LCD bei mir. Allerdings läuft die SD Karte noch nicht, aber das liegt ebenfalls am Timing. Jetzt frag ich mich nur mit welchen Optionen Ihr compiliert? Grüsse aus München, Patric #define NOP() asm volatile ("nop" ::) void mswait(uint16_t ms) { uint16_t del; while(ms--) { for(del = 0; del < 1000; del++) { NOP();} } }
Hi Patric, ich wollte gerade dein HEX File testen. Hänge hier mal mein MAKE File an, da kannst du sehen welche Optionen ich nutze. Gruss Thomas
Danke Thomas, hat sich erledigt (siehe mein Beitrag oben). Die SD-Karte läuft auch, lag nicht am Timing, sondern daran, dass ich wieder die originale Zuweisung von DI und DO verwendet habe, die auf meiner Platine ja vertauscht ist. Ist aber auch wirklich blöd, DI muss an DO und umgekehrt. Naja, ist wie bei RX und TX für serielle Interfaces...
Hallo zusammen, da ich noch jungfraeulich bzgl. AVRs bin habe ich mal eine Frage. Du (M. Bode) schreibst, Du haettest den Spannungsregler auf 2,9 V eingestrellt und alle Komponenten laufen so. Der ATmega8(-16PI) ist aber doch nur fuer 4,5V - 5,5V, richtig? Funktioniert das sicher? Waere es nicht sinnvoller einen ATmega8L(-8PU) zu nehmen, auch wenn dieser langsamer ist? MfG, balze
Sinn oder Unsinn, immer eine Frage der Betrachtung. Ich finde das Projekt super und werde es bald mal nachbauen. 3s für einen Bildwechsel, da werde ich wohl die Hardware-SPI nehmen und den AVR auswählen, der bei 3V noch richtig Soeed macht. Einen Atmega88 denke ich, der soll bei 3V noch 14MHz machen und Pegelwandler entfallen. Da kommen dann vielleint 0,5s raus, werde ich testen.
Hi, finde das Projekt auch super. Habe bald alle Teile zusammen und dann werde ich es auch aufbauen. Wäre prima wenn Du über Deine abänderungen berichten würdest.
Moin zusammen, Lothar Lehmann wrote: > Sinn oder Unsinn, immer eine Frage der Betrachtung. ... Hmmm, habe ich mich so unverstaendlich ausgedrueckt? Es macht aus meiner Sicht mehr Sinn einen AVR einzusetzen, der auch fuer diesen Spannungsbereich (2,9V) ausgelegt ist und nicht einen einzusetzen des Spezifikation weit davon entfernt ist. Beides ATmega8 !!! ATmega8(-16PI) -> 4,5V - 5,5V Betriebsspannung; max 16MHz ATmega8L(-8PU) -> 2,7V - 5,5V Betriebsspannung; max 8MHz Ich weiss nicht wo hier "eine Frage der Betrachtung" steckt. Zumal ich gerne gewusst haette ob es mit einem "normalen" ATmega8 (eben nicht ATmega8L) ueberhaupt zuverlaessig funktioniert. Lothar Lehmann wrote: > ...Ich finde das Projekt super und werde es bald mal nachbauen. ... Ich auch. Deshalb moechte ich den richtigen AVR bestellen. Das ist auch der Grund fuer meine Frage. Lothar Lehmann wrote: > ...da werde ich wohl die Hardware-SPI nehmen... Verstehe ich das Datenblatt richtig, hat der ATmega8 (ATmega88) nur einen Hardware SPI Port. Dann muesste wenigstens einmal SPI (SD-Karte oder Display) per Software realisiert werden, richtig ?? MfG, balze
Die L versionen sind meistens (oder immer, bei allen typen?!) nur anders getestete Bausteine, sonst völlig identisch. Ich hab hier nen mega16, der läuft bei 2,5V noch mit 16MHz
Danke fuer die (nuetzliche :) Information. Eine garantie, dass das immer klappt gibt es demnach aber nicht. MfG, balze
Hallo, @Avr Noob: richtig, eine Garantie gibt Atmel dafür nicht... Atmel garantiert eben beim L-Typ, daß er im gesamten Spannungs- und Temperaturbereich die Parameter des Datenblattes einhält und spielt. In meinem Prüfstft steckt auch ein Mega8 (ohne L), der geht mit 2,8V und 16MHz stabil bei üblichen Raumtemperaturen und ohne CKOPT gesetzt. Wenn er es macht, maacht er es auch weiterhin. Solche Basteleien entstehen ja meist erstmal als Steckbrettaifbau o.ä. mit Teilen, die gerade vorhanden sind, da landen dann die Teile auch im einzigen fertigen Exemplar und spielen eben. Die wenigsten, die hier was veröffentlichen, machen das, um eine nachbausichere Anleitung mit allem drumrum zu erstellen. Es hindert Dich also niemand daran, einen Mega8L zu nehmen, um auf der sicheren Seite zu sein. Ich muß den Kram auch unbedingt mal zusammenlöten, liegt alles schon rum... Gruß aus Berlin Michael
Hallo @Michael: THX! Das bedutet dann auch, dass der mega8L evtl. auch mit 16Mhz laufen koennte?! MfG, balze
Hallo, @Avr Noob wenn Du noch überlegst, was Du bestellst, schau Dir auch die neueren Typen an. In dieser Klasse setze ich z.Z. den AtMega88 ein, der geht auch bis 20MHz ohne Übertaktung, laut Atmel "Safe Operating Area". Mit Betrachtungsweise meinte ich; soll der Bildwechsel so schnell wie möglich sein, dann muss Vcc evtl. höher als 3V sein, dann sind Pegelwandler nötig. Beschränkst Du Dich auf 3V, schaffst Du die 16- oder beim AtM88 die 20MHz nicht. Das Display wird im S65 mit 14MHz SPI-Clk betrieben (laut Christian 13MHz). Dein Prozessor müsste dann 28MHz schaffen. Wie ich in oberen Posts gelesen habe, werden die Grenzfrequenzen auch bei niedrigen Vcc erreicht, schön zu wissen. Noch zum SPI, Du kannst mehrere SPI Geräte an einem Port betreiben. Um die Einheiten zu selektieren gibt es das /CS. Grüsse Lothar
Hallo zusammen @Lothar: Danke fuer die Infos ! Das Gebiet ist eben doch noch sehr neu fuer mich :) MfG, balze
Na dann los, probieren ist besser als.... und immer daran denken, den Takt richtig zu definieren. Die Delays während der Initialisierung sind zeitkritisch. Vielleicht doch erst mal die SIMPLE.C von Christian zum Fliegen bringen. Wenn die nicht läuft, hast Du schon genug Probleme. Ich habe einen LA gebraucht, den hat aber nicht jeder. Also, viel Erfolg. Grüsse Lothar
Hallo zusammen, als Weihnachtsgeschenk habe ich diesen Bilderrahmen auf einer geätzten Platine aufgebaut. @ M. Bode -> geniales Teil In der angehängten ZIP-Datei ist der Schaltplan als .png und Eagle .sch enthalten. Zur Schaltung: Supply X1-1 und X1-2 sind die Anschlüsse für eine Wandwarze, X1-3 und X1-4 für eine Batterie. Ich betreibe den Bilderrahmen über eine 9V Blockbatterie mit nachgeschaltetem Boost-Konverter (auch über einen MC34063 -> nicht in der Zeichnung), der die erforderliche Spannung für die Hintergrundbeleuchtung erzeugt (ca. 12V). http://www.nomad.ee/micros/mc34063a/index.shtml Der Buck-Konverter in der Zeichnung wird mit dem Poti R2 auf ca. 3,5V eingestellt. Die 2,9V für das Display werden über die Diodenstrecke D4 aus den 3,5V gewonnen. Aus D5 ca. 2,3V für die 1,8V- Versorgung. T1 ist Teil der Konstantstromquelle für die Hintergrundbeleuchtung und liefert ca. 18mA. An PB0 hängt bei mir ein Taster, der einen schnellen Bildwechsel ermöglicht, oder den Bildwechsel verhindert. Die Widerstände R4-R8 dienen als Strombegrenzung, da 3,5V <-> 2,9V. Mit vertauschtem DI und DO lief der Bilderrahmen auf Anhieb. Leider gibt es keine kleinen (<128mB) SD/MMC-Karten mehr zu kaufen. Der Bilderrahmen läuft bei mir mit einer 512MB und 1GB SD-Karte ohne Probleme. Der Oszillator Q1 ist ein 9,8304 MHz -> habe leider keinen schnelleren. Falls ich den Bilderrahmen irgendwann nochmal aufbauen sollte, dann werde ich den mini-SD-Adapter als Fassung verwenden und schön auf der Bestückungsseite aufkleben... Als Weihnachtsgeschenk ist das doch ideal, oder? Have Fun!
Leider ist es schlecht an die SD-Karte ranzukommen, daher die Idee, den Mini-SD-Adapter als Einschub zu benutzen, auf der Bestückungsseite aufzukleben und die wenigen Leitungen auf die Lötseite zu führen... (beim nächsten mal)
Da ich heute mal etwas Zeit hatte, habe ich mich mal an den Steckplatinenaufbau des digitalen Bilderrahmens begeben. Nach ein paar kleinen Flüchtigkeitsfehlern meinerseits läuft der Rahmen nun Problemlos. Echt super Sache. Jetzt werde ich mich auch mal daran begeben einen Schaltplan sowie ein Layout zu erstellen.
Ein Schaltplan wäre nett :-) Ich habe die Schaltung nachgebaut, es funktioniert allerdings nicht. Das Display bleibt ohne Text oder Bild.
Hi, wenn Du nach dem Schaltplan von Marc Meise gehst, musst Du bei der lcd.h folgendes ändern : von #define LCD_DAT 3 #define LCD_CLK 5 in #define LCD_DAT 4 #define LCD_CLK 3 ändern. (Oder halt umstecken). Hatte es auch übersehen. Dort auch noch die Taktfrequenz dem µC anpassen ( ich habe den internen 8 MHz genommen ). Danach sollte schon mal das Display laufen. Leider bin ich über die Feiertage zu nix gekommen, sonst könnte ich Dir schon fertige Sachen anbieten.
So, habe mal eben was "hin geklascht". So müsste die Beschaltung vom AVR nach dem Source vom OP sein. Alle Angaben wie immer ohne Gewähr ...
Ach so, in dem zip ist ein Schaltplan dabei gewesen, das habe ich nicht gesehen. Ich habe auf die Widerstände R4-R8 verzichtet und alles an 2,8V angeschlossen mit internem 8Mhz Takt. Außerdem sagt mir mein Datenblatt, dass Pin 8 des Displays N.C. ist, wobei ich teilweise auch 1,8V gelesen habe. Es sieht allerdings nicht so aus, als ob Pin8 auf dem Display auch benutzt wird. Gibt es hier Erfahrungen ? Pete
Also bei mir muß der Pin beschaltet sein. Scheint wohl da irgendwelche unterschiede zu geben ... Habe bei mir alles auf 3,3 Volt laufen und auch auf die Widerstände verzichtet. Klappt auch.
Hallo, ich bin neu hier im Forum und bei den µC's, bin im Besitz eines STK 500 und habe schon ein paar kleiner Sachen hier aus dem Tutorial ausprobiert. Jetzt wollte ich gern mal das Siemens Display anschließen, habe aber bei den ersten Testläufen nicht beachtet die VTarget auf 2,8 V runter zu setzen d.h. auf den Controller vom Display sind 5 V gekommen. Ist das Display jetzt wohl gestorben, ausser der HGB (12V über externes Netzteil) tut sich nichts. Gruß J.
Das Display wird kaputt sein 5V ist viel, soviel max 3,3V typ. 2,9V HGB max 10..11V. ( LS020... ) http://www.comwebnet.de - BASCOM Projekte S65-Osziloskop, Wetterstadion etc
Hallo, vorne weg mein Standardsatz: Ich habe mit C eigentlich nicht viel am Hut, programmiere selbst (bisher) nur ASM... Eigentlich wollte ich den Bilderrahmen nur schnell zusammenlöten und benutzen. Nun die etwas provokatorische Frage hat irgendjemand ein Source, die wirklich auf einem Mega8 in der Beschaltung von Marc Meise vom 20.12.2007 11:38 funktioniert??? Wenn möglich auch noch mit einem 16MHz Quarz. Meine bisherigen Erkenntnisse: der Originalsource von M. Bode ist für einen C-Einsteiger wohl völlig unbrauchbar. In mehreren Programmteilen eigene delay-Funktionen, die teilweise von Compiler zu Recht wegotimiert werden (lcd.c). Die Taktfrequenz wird an mehreren Stellen unter verschiedenen Namen definiert. Portzuordnung der MMC ist mehr als mißverständlich, MMC_DI bzw. DO bezieht sich nicht auf die Karte, sind also vertauscht. MMC_CS wird mal per Name und mal hardcoded mit Bitnummer angesprochen. Die MMC-Karte wird beim Reset mit vollem Speed angesprochen, eigentlich darf dort der SPI-Takt nur maximal 128kBit/s sein (Datenblatt MMC-Cards). Erst nach dem Umschalten auf SPI-Mode darf hochgeschaltet werden. Das dürfte also nur zufällig gehen. Ich habe zum Hardwaretest jetzt mal schnell Display-Test-Routinen in ASM geschrieben, alles ok. Meine alten MMC-Routinen (ASM) reden auch mit meiner Karte. Eigentlich wollte ich jetzt nicht noch die FAT16 in ASM schreiben, vermutlich wäre ich da aber schneller fertig, als wenn ich mich durch die ganzen C-Sourcen wühle und alle Ungereimtheiten suche... Die mswait() in lcd.c habe ich jetzt erstmal repariert, Display meldet sich, SD-Card wird aber als nicht gefunden gemeldet. Ich weiß nicht, ob ich mich da wirklich noch durchwühle, eigentlich wollte ich es nur schnell zusammenlöten........... ;-(( Gruß aus Berlin Michael
@ Michael U. >Nun die etwas provokatorische Frage hat irgendjemand ein Source, die >wirklich auf einem Mega8 in der Beschaltung von Marc Meise vom >20.12.2007 11:38 funktioniert??? Ja, ich :-)) Ich habe meine Schaltung noch etwas verändert, damit Batteriebetrieb und Netzbetrieb (9V bis 12V AC Wandwarze) möglich sind. Ich hoffe, dass der Thread-Starter nichts dagegen hat, dass ich hier meine Schaltung und den von mir (auf meine Schaltung) angepassten Quellcode poste. Zu Deinen Erkenntnissen: OK, der Quellcode ist einwenig wirr und nicht wirklich dokumentiert - aber er läuft doch :-)) Timings und SPI: Jep, ich denke hier ist ein wirkliches Problem, das die MMC bei höheren Taktfrequenzen einfach abhängt. Mein schnellster Quarz ist en 9,8304 MHz, der so herumlag - also habe ich den genommen. Der Bildaufbau ist halt einwenig schneller (Überblendeffekt) als mit dem internen 8Mhz des Mega8. Meine Motivation dieses Teil zu bauen war: Weihnachten, eh nicht viel Zeit, freude machen wollen, low budget, Quellcode vorhanden, Ansteuerung einigermaßen ersichtlich. Ich hatte mir zwei SD-Karten (512MB und 1GB) Karten verschiedener Hersteller besorgt und beide laufen ohne Probleme. (Scheinbar gibt's heutzutage keine kleineren mehr...) >wollte ich es nur schnell zusammenlöten........... Jetzt sollte es ja klappen ;-)
Hallo, erstmal vielen Dank für Deine schnelle Reaktion. :-))) Erstmal das Positive: startet auch mit 16MHz ohne Probleme, ich habe trotzdem erstmal 8MHz raufgesteckt, sicher ist sicher. Das weniger Gute: keine .bmp Dateien. :-( Ich habe im Moment nur 2 gleiche 128MB-MMC-Cards hier. Ich habe mal die eine Fehlermeldung in "Kein MBR" geändert (Return 0x1A wenn die Kennung 0x55AA nicht gefunden wurde) und auf einer Karte mit WinHEX die Kennung auf 0x0000 gesetzt. Klappt, diese Karte "kein MBR", die andere "keine .BMP". Karte Reset, Init und Sektor lesen geht also. Muß sich also in der FAT-Struktur irgendwie verlaufen... Laut WinHEX ist die Karte FAT16, ich muß da wohl jetzt doch auf die Suche gehen, was am Format meiner Karte nicht stimmt. Mal schauen, ob ich da auf die Schnelle ein paar Debugausgaben ins Display bekomme, da es 2 identische Karten sind, kann ich ja gut am PC mit WinHEX vergleichen, was wo gelandet ist. Wird aber wohl erst morgen was, mal schauen. Vielleicht nehme ich das doch als C-Übung und baue die Teile mal ordentlich neu zusammen. ;-) Gruß aus Berlin Michael
Hallo, wollte nur noch anmerken, daß es jetzt (erstmal) läuft. Karte mit 7tools (war das erste, was ich fand...) partitioniert, war dann erstam eine ordentliche Partition. Ging trotzdem nicht, in avrfat16,c eingebaute -1 (warum???) // ((BPB_RootEntCnt*32) + (bytes_per_sector-1))/bytes_per_sector; ((BPB_RootEntCnt*32) + (bytes_per_sector))/bytes_per_sector; wieder ausgebaut, dann ging das erstmal. Format verschoben, Farben falsch. Keine Ahnung, warum ein BMP-Header 36 Byte lang sein soll, er ist mindestens 54 Byte lang, eigenlich steht aber der Offset zu den Daten im Header, wird aber nicht ausgewertet... Habe ich jetzt erstmal nur für meine Bilder fest korrigiert, mache ich mich mich ein anderes Mal drüber her. Nochmal Danke für Deinen Source, Marc Meise, der läuft zumindest vom Timing mit 16MHz stabil. :-) Gruß aus Berlin Michael
Info Hardware-SPI: Der mega8 und seine Nachfolger 48,88,168 können neben der HW-SPI auch den USART im SPI-Modus betreiben. Also stehen 2 vollwertige HW-SPI zur Verfügung. Maximale SCK-Rate ist dabei SysClock/2. Diese Power machen sich meine SPI-Projekte gerne mal zu nutze.
Simon Lehmayr wrote: > Info Hardware-SPI: > Der mega8 und seine Nachfolger 48,88,168 können neben der HW-SPI auch > den USART im SPI-Modus betreiben. Also stehen 2 vollwertige HW-SPI zur > Verfügung. Maximale SCK-Rate ist dabei SysClock/2. > Diese Power machen sich meine SPI-Projekte gerne mal zu nutze. müssten die sich nicht auch so verbinden das man mit vollem SysClock statt mit SysClock/2 arbeiten könnte?
Moin ... also ich habs auch mal nachgebaut .... super genial DANKE für eure Mühe ... hatte zwar am Anfang leicht Probs .. falsche Widerstände drin ( meine Dummheit ;) ) und die hier schon oft erwähnten Probs mit der SDCard .. aber jetzt is alles schick .. bei mir läuft alles mit ATmega88 20AU falls es jemanden interessiert .. als Eingangsspannung geht von 2,2 -7,5 Volt alles, also einfache NiMH, Liion oder halt nen Netzteil ... Gruß Ducky
Moin ... hat schon irgendjemand das LPH Display am laufen ??? Gruß Ducky
Hallo. Hat schon jemand eine Lösung, wie man P03... Displays benutzen kann? Ich habe hier nur eins mit diesem Nummernanfang und möchte nicht extra ein neues kaufen :) Gruß, -=NrDesign=-
Hallo zusammen mich würde auch brennend interessieren ob man es mit einem PO3.. zum laufen bringt da ich in der Bucht auch kein anderes mehr finde. :( Gibt es eigentlich auch eine Tabelle wo man für jede Farbe die passende Hexzahl für z.B. den Hintergrund findet unter google finde ich solche nur für 32-bit Farben aber nicht für 16-bit. Oder kann man die anpassen? Fragen über Fragen Danke für die mühe wenn ich was übersehen habe sorry
@Christian Brandl: Sorry Christian, aber wozu brauchst Du eine Tabelle?? Die 5 MSBit stehen fuer den Rotanteil der Farbe, Die mittleren 6 Bit fuer den gruenen und die 5 LSBit stehen fuer den blauen. 1111 1000 0000 0000 -> 0x F800 -> Rot 1111 1111 1110 0000 -> 0x FFE0 -> Gelb 0000 0111 1110 0000 -> 0x 07E0 -> Gruen 0000 0111 1111 1111 -> 0x 07FF -> Cyan 0000 0000 0001 1111 -> 0x 001F -> Blau 1111 1000 0001 1111 -> 0x F81F -> Magenta Kleiner Tipp mit Windows Bordmitteln: OEffne Paint (wuerg) Menue->Farben->Palette bearbeiten Dann Farben definieren. Hier kannst Du jetzt Deine gewuenschte Farbe auswaehlen. Die Ergebnisse werden ind 8 bit je Farbe angezeigt. Wert Rot (8 bit) dividiert durch 8 -> Wert Rot (5 bit) (<= 31) Wert Gruen (8 bit) dividiert durch 4 -> Wert Gruen (6 bit) (<= 63) Wert Blau (8 bit) dividiert durch 8 -> Wert Blau (5 bit) (<= 31) Wert Roet (5bit)*2048 + Wert Gruen (6bit)* 32 + Wert Blau = gewuenschte Farbe in 16bit Darstellung MfG, balze
@Avr Noob Vielen dank für diese Info jetzt weis ich wie die Farbe zusammengesetzt wird juhu!! das ist mit Paint echt einfach das dann zusammenzustellen. Danke schön. Aber wegen der Benutzung des PO3.. weis keiner bescheid oder?? Weil drehen könnte ich das bild ja schon bevor ich es auf die SD drauf mache aber geht dann die Ansteuerung des PO3?? Oh man ich glaub ich las lieber die Finger weg :-( DANKE!
Hallo Leute, ich braeuchte mal die Untersturtzung von den MMC/SD Profis. Ich habe den Bilderrahmen auch nachgebaut, habe jetzt aber ein Problem. Bei FAT_initFat16 bekomme ich immer einen leeren FAT_buffer zurueck. Mit leer meine ich dass dieser mit Nullen gefuellt ist. FAT_Read() (bzw MMC_Read() ) laeuft nachweisllich bis in die Schleife, in der mmc_Sbuf (und damit (hoffentlich) auch FAT_buffer) gefuellt wird. Also hier hinein:
1 | for(sec=0;sec<512;sec++) |
2 | {
|
3 | mmc_sbuf[sec] = SpiByte(0xff); |
4 | }
|
Die CD Karte(n) habe ich mit mit WinHex angesehen und es steht dfinitiv etwas im ersten Sektor (und auch 0x55 0xAA an Position 511 und 512) Die SD Karten sind mit FAT16 (!) formatiert. Es handelt sich um eine Toshiba 1GB und eine Canon 16MB. Ich wuerde mich ueber jeden Hinweis freuen. Schoenen Gruss, schoene Weihnachten und einen glueckliches und gesundes neues Jahr, Balze der AVR Noob
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.