Datum: 29.09.2007 16:26
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).
Datum: 29.09.2007 17:04
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
Datum: 29.09.2007 17:05
So sieht's von hinten aus...
Datum: 29.09.2007 17:07
...und so, wenn keine Karte drinsteckt...
Datum: 29.09.2007 17:08
...beim Laden des Bildes wird der Dateiname eingeblendet.
Datum: 29.09.2007 22:29
Hallo Matthias, prima Idee, und preiswert. Welchen Konverter für die Bilder benutzt du oder bearbeitest du die Bilder mit einem Program?
Datum: 29.09.2007 22:50
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!)
Datum: 30.09.2007 13:00
Nur als Tipp: IrfanView ist Freeware, kann eine ganze Menge Bildformate lesen und ebenfalls Batch-Konvertierung.
Datum: 30.09.2007 14:53
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
Datum: 08.10.2007 02:59
Super Idee, hätte allerdings auch interesse an einem Schematic. Wär echt super wenn du das noch machen könntest.
Datum: 08.10.2007 11:04
Ich bin gerade dabei eine Schematic zu zeichnen. Matthias
Datum: 23.10.2007 12:03
Hallo Matthias, bist Du immer noch dabei zu zeichnen ? ;-) Wann ist den mit den Schematics zu rechnen ? MfG, balze
Datum: 27.10.2007 18:11
Hallo, find ich auch interessant, die Beschaltung ist mir aber as dem Code nicht klar. Kommt da noch ein Schaltplan nach? Gruss Thomas
Datum: 28.10.2007 10:20
Super Projekt. Wäre auch an kleinen einem Schalplan interessiert.
Datum: 04.11.2007 16:58
Sorry, war auf Dienstreise und hatte überhaupt keine Zeit. Den Schaltplan werde ich in den nächsten Tagen fertig haben. Matthias
Datum: 09.11.2007 13:28
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
Datum: 09.11.2007 14:21
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
Datum: 09.11.2007 14:54
Wieviel Strom (bei welcher Spannung) braucht das Gerät?
Datum: 09.11.2007 20:18
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
Datum: 12.11.2007 20:50
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
Datum: 12.11.2007 23:27
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
Datum: 16.11.2007 15:01
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
Datum: 16.11.2007 15:18
> 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?
Datum: 18.11.2007 11:11
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
Datum: 19.11.2007 17:18
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 ;-)
Datum: 21.11.2007 15:05
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??
Datum: 22.11.2007 17:54
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
Datum: 22.11.2007 23:16
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.
Datum: 23.11.2007 09:43
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
Datum: 24.11.2007 16:03
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
Datum: 25.11.2007 02:38
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
Datum: 25.11.2007 10:43
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
Datum: 25.11.2007 14:25
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...
Datum: 25.11.2007 19:14
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();}
}
}
Datum: 25.11.2007 19:29
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
Datum: 26.11.2007 08:49
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...
Datum: 10.12.2007 14:21
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
Datum: 10.12.2007 19:44
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.
Datum: 10.12.2007 19:51
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.
Datum: 11.12.2007 09:29
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
Datum: 11.12.2007 12:20
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
Datum: 11.12.2007 12:25
Danke fuer die (nuetzliche :) Information. Eine garantie, dass das immer klappt gibt es demnach aber nicht. MfG, balze
Datum: 11.12.2007 17:27
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
Datum: 12.12.2007 08:24
Hallo @Michael: THX! Das bedutet dann auch, dass der mega8L evtl. auch mit 16Mhz laufen koennte?! MfG, balze
Datum: 13.12.2007 13:13
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
Datum: 13.12.2007 15:03
Hallo zusammen @Lothar: Danke fuer die Infos ! Das Gebiet ist eben doch noch sehr neu fuer mich :) MfG, balze
Datum: 13.12.2007 15:18
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
Datum: 20.12.2007 11:38
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!
Datum: 20.12.2007 11:38
Hier noch ein Bild dazu
Datum: 20.12.2007 11:41
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)
Datum: 23.12.2007 19:16
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.
Datum: 02.01.2008 17:58
Ein Schaltplan wäre nett :-) Ich habe die Schaltung nachgebaut, es funktioniert allerdings nicht. Das Display bleibt ohne Text oder Bild.
Datum: 02.01.2008 19:48
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.
Datum: 02.01.2008 20:52
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 ...
Datum: 02.01.2008 21:16
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
Datum: 02.01.2008 21:23
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.
Datum: 28.01.2008 10:38
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.
Datum: 28.01.2008 13:47
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
Datum: 23.02.2008 10:19
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
Datum: 23.02.2008 12:48
@ 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 ;-)
Datum: 23.02.2008 16:12
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
Datum: 24.02.2008 19:26
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
Datum: 03.03.2008 16:26
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.
Datum: 18.03.2008 04:02
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?
Datum: 17.04.2008 11:45
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







