www.mikrocontroller.net

Forum: Codesammlung Digitaler Bilderrahmen mit mega8 S65 Display und SD-Karte

Autor: M. Bode (mbode001)
Datum: 29.09.2007 16:26
Dateianhang: Bilderrahmen001_mega8.zip (80,8 KB, 1186 Downloads)

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).
Autor: M. Bode (mbode001)
Datum: 29.09.2007 17:04
Dateianhang: Vorderseite.jpg (143,7 KB, 2421 Downloads)
preview image for Vorderseite.jpg

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
Autor: M. Bode (mbode001)
Datum: 29.09.2007 17:05
Dateianhang: R_ckseite.jpg (151,9 KB, 2199 Downloads)
preview image for R_ckseite.jpg

So sieht's von hinten aus...
Autor: M. Bode (mbode001)
Datum: 29.09.2007 17:07
Dateianhang: Error.jpg (176,6 KB, 1675 Downloads)
preview image for Error.jpg

...und so, wenn keine Karte drinsteckt...
Autor: M. Bode (mbode001)
Datum: 29.09.2007 17:08
Dateianhang: MitDateinamen.jpg (173 KB, 1623 Downloads)
preview image for MitDateinamen.jpg

...beim Laden des Bildes wird der Dateiname eingeblendet.
Autor: Basta Basta (basti_der_erste)
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?
Autor: M. Bode (mbode001)
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!)
Autor: Simon K. (simon) Benutzerseite
Datum: 30.09.2007 13:00

Nur als Tipp: IrfanView ist Freeware, kann eine ganze Menge Bildformate
lesen und ebenfalls Batch-Konvertierung.
Autor: Dirk Broßwick (sharandac)
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
Autor: Iller (Gast)
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.
Autor: M. Bode (Gast)
Datum: 08.10.2007 11:04

Ich bin gerade dabei eine Schematic zu zeichnen.

Matthias
Autor: Avr Noob (balze)
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
Autor: Thomas (Gast)
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
Autor: Michael Schneider (snickers)
Datum: 28.10.2007 10:20

Super Projekt.

Wäre auch an kleinen einem Schalplan interessiert.
Autor: M. Bode (Gast)
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
Autor: Thomas (Gast)
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
Autor: Michael Iller (iller)
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
Autor: Willivonbienemaya .. (willivonbienemaya)
Datum: 09.11.2007 14:54

Wieviel Strom (bei welcher Spannung) braucht das Gerät?
Autor: Marius S. (lupin) Benutzerseite
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
Autor: Hans Dampf (Gast)
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
Autor: M. Bode (Gast)
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
Autor: Thomas (Gast)
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
Autor: Marius S. (lupin) Benutzerseite
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?
Autor: Thomas (Gast)
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
Autor: Willivonbienemaya .. (willivonbienemaya)
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 ;-)
Autor: Thomas (Gast)
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??
Autor: M. Bode (Gast)
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
Autor: Willivonbienemaya .. (willivonbienemaya)
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.
Autor: Thomas (Gast)
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
Autor: Thomas (Gast)
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
Autor: Patric N. (patric-)
Datum: 25.11.2007 02:38
Dateianhang: Bilderrahmen001.hex (20,6 KB, 145 Downloads)

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
Autor: Thomas (Gast)
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
Autor: Patric N. (patric-)
Datum: 25.11.2007 14:25
Dateianhang: Bilderrahmen001.hex (20,6 KB, 127 Downloads)

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...
Autor: Patric N. (patric-)
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();}
  }
}
Autor: Thomas (Gast)
Datum: 25.11.2007 19:29
Dateianhang: Makefile (14,1 KB, 129 Downloads)

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
Autor: Patric N. (patric-)
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...
Autor: Avr Noob (balze)
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
Autor: Lothar Lehmann (lole)
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.
Autor: Michi Müller (Gast)
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.
Autor: Avr Noob (balze)
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
Autor: Hauke Radtki (lafkaschar) Benutzerseite
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
Autor: Avr Noob (balze)
Datum: 11.12.2007 12:25

Danke fuer die (nuetzliche :) Information.

Eine garantie, dass das immer klappt gibt es demnach aber nicht.

MfG,

balze
Autor: Michael U. (amiga)
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
Autor: Avr Noob (balze)
Datum: 12.12.2007 08:24

Hallo

@Michael: THX!

Das bedutet dann auch, dass der mega8L evtl. auch mit 16Mhz laufen
koennte?!

MfG,

balze
Autor: Lothar Lehmann (lole)
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
Autor: Avr Noob (balze)
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
Autor: Lothar Lehmann (lole)
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
Autor: Marc Meise (bytewood) Benutzerseite
Datum: 20.12.2007 11:38
Dateianhang: Bilderrahmen.zip (141,9 KB, 287 Downloads)

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!
Autor: Marc Meise (bytewood) Benutzerseite
Datum: 20.12.2007 11:38
Dateianhang: P1010027.JPG (50,3 KB, 377 Downloads)
preview image for P1010027.JPG

Hier noch ein Bild dazu
Autor: Marc Meise (bytewood) Benutzerseite
Datum: 20.12.2007 11:41
Dateianhang: P1010028.JPG (61,2 KB, 472 Downloads)
preview image for P1010028.JPG

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)
Autor: Michael Schneider (snickers)
Datum: 23.12.2007 19:16
Dateianhang: AVR_Bild_Steck.jpg (110,4 KB, 643 Downloads)
preview image for AVR_Bild_Steck.jpg

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.
Autor: Gast (Gast)
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.
Autor: Michi Müller (Gast)
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.
Autor: Michi Müller (Gast)
Datum: 02.01.2008 20:52
Dateianhang: AVR_Bild_R_V0_2.JPG (34,3 KB, 405 Downloads)
preview image for AVR_Bild_R_V0_2.JPG

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 ...
Autor: Pete (Gast)
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
Autor: Michi Müller (Gast)
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.
Autor: Jörg P. (zwiebackfraeser)
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.
Autor: Avr Nix (avrnix) Benutzerseite
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
Autor: Michael U. (amiga)
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
Autor: Marc Meise (bytewood) Benutzerseite
Datum: 23.02.2008 12:48
Dateianhang: Bilderrahmen.zip (100,4 KB, 133 Downloads)

@ 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 ;-)
Autor: Michael U. (amiga)
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
Autor: Michael U. (amiga)
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
Autor: Simon Lehmayr (Gast)
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.
Autor: Tamme D. (tamme)
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?
Autor: Mi Gö (ducky)
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
Autor: