Hallo zusammen, ich programmiere einen Atmega2560 mit dem zugehörigen tft shield und einem Display mit SSD1963 Controller. Am Display ist ein SD-Karten Slot. Ich versuche die SD-Karte mithilfe der FAT32 library zu beschreiben aber leider geht das überhaupt nicht und ich weiß nicht, wo der Fehler liegt. Hat jemand so etwas schonmal gemacht? Bzw kann ich den SD-Slot am Display überhaupt mit der FAT32 library nutzen?
Die Fat32 Lib weiss nur, wie man ein Dateisytem liest, aber sie weiss nicht, wie man eine SD Karte anspricht. Das muss noch zusätzlich hinzugefügt werden. Die SD Karte muss in 512 Byte Blocks gelesen und geschrieben werden können, damit die Fat32 Lib was machen kann. Bei deinem Display muss das im SPI Modus gemacht werden. Schau dir die Beispiele zu dem Adafruit 1.8 18-bit Color TFT Shield w/microSD and Joystick an. Gruß, dasrotemopped.
dasrotemopped schrieb: > Bei deinem Display muss das im SPI Modus > gemacht werden. Das verstehe ich leider nicht ganz. In der FAT32 lib konfiguriere ich doch in den einzelnen Librarys meine Pins für CS/MISO/MOSI/CLK?
Hallo, ich bekomme die programmierung der sd-karte einfach nicht hin. Hat jemand eventuell ein Code-Beispiel? Ich programmiere den Atmega2560 in Atmel Studio, dort funktioniert die SD-Card-library von arduino nicht. Langsam verzweifle ich...
Servus, Ich kann mir aus deiner Beschreibung nicht vorstellen, wie das ganze aufgebaut ist. Der SSD1963 ist ein Touch Screen Controller. Was hat der mit SD Karten zu tun? Zeichen bitte ein etwas detaillierteres Blockschaltbild, damit man sich vorstellen kann, was wo dran hängt. z.B. woraus ersichtlich ist, wie der SD Slot angesprochen wird, wie der Touch Bereich, wie der TFT Schirm etc .... Wie immer: Gut gezeichnet ist halb programmiert .... Mario
mario eduardo schrieb: > damit man sich vorstellen kann, was wo dran hängt. z.B. > woraus ersichtlich ist, wie der SD Slot angesprochen wird Hallo, genau das ist mein Problem. Ich habe dieses Display https://eckstein-shop.de/50-MIT-Touchscreen-800480-MCU-Bus-TFT-LCD-Display-SSD1963-Kompatibel-Arduino?googlede=1&gclid=Cj0KEQjwrsDIBRDX3JCunOrr_YYBEiQAifH1FgKsYJeW2h1LPZGwkJPXgx0LyG331oPtCp22S8epBlEaAoNs8P8HAQ Dort ist auch ein SD-Slot. Leider gibt es keine Dokumentation, wie dieser angesprochen wird. Deshalb frage ich, ob jemand diesen schonmal erfolgreich angesprochen hat
Matthias H. schrieb: > Leider gibt es keine Dokumentation, wie > dieser angesprochen wird. Wozu soll es dazu extra eine Doku geben? Der SD Slot ist völlig separat als SPI Gerät auf den Stecker des Displays herausgeführt und kann dort ohne Probleme oder Störungen an den SPI Controller deines Vertrauens angeschlossen und betrieben werden. Wenn du in der Fahrschule Auto fahren gelernt hast wirst du nicht nochmal in die Fahrschule gehen wenn du dir ein neues Auto kaufst? Wenn dir etwas mit dem Anschliessen eines SD Slots an ein SPI nicht klar ist dann frage diesbezüglich. Auf den Displays und Shields sind jedenfalls alle SPI Anschlüsse benannt, diese sind in der Software natürlich zu berücksichtigen.
Arduinoquäler schrieb: > Der SD Slot ist völlig separat als SPI Gerät auf den > Stecker des Displays herausgeführt und kann dort ohne > Probleme oder Störungen an den SPI Controller deines > Vertrauens angeschlossen und betrieben werden Okay das wusste ich nicht Arduinoquäler schrieb: > Wenn dir etwas mit dem Anschliessen eines SD Slots an > ein SPI nicht klar ist dann frage diesbezüglich. > Auf den Displays und Shields sind jedenfalls alle SPI > Anschlüsse benannt, diese sind in der Software natürlich > zu berücksichtigen. Ich habe bis jetzt immer versucht die FAT32_library zu benutzen. Natürlich habe ich die Pins entsprechend des Atmega2560 geändert. Leider überhaupt nichts. Mir scheint es fehlt noch irgendetwas. Deswegen habe ich nach einem Code-Beispiel gefragt
Hi, Zum Display gibt habe ich eine ZIP Datei mit guter Beschreibung gefunden. So wie es auf der Zeichnung aussieht, ist der SD Slot am Shield untergebracht. Zu dem hab ich nichts gefunden. Evtl an den Verkäufer wenden und um einen Schaltplan bitten. Mario
Ich habe zwar keine Ahnung wie die Arduino Welt funktioniert, aber zum SPI Bus gehört mindestens ein ChipSelect Signal, das auf ?? Port liegt, und so ich mich richtig erinnere, gibt es noch 2 Leitungen (Card Present und WriteProtect) die ebenso auf ?? Port liegen. Bei einer ordentlichen Doku ist das auf der HomePage des Produktes herunterzuladen. Mario
Matthias H. schrieb: > Natürlich habe ich die Pins entsprechend des Atmega2560 geändert. Matthias H. schrieb: > Okay das wusste ich nicht Na was jetzt? Du hast die Pins angepasst und wusstest von nichts? So so, tolles Chaos hier wieder ....
Hallo, ich habe versucht die SD-Karte anzusprechen. Habe die FAT32 Library genommen und die Pins an den Atmega2560 angepasst. Das hat aber nicht funktioniert, deswegen hatte ich hier gefragt, wie ich die SD-Karte ansprechen kann. Vielleicht sieht jemand meinen Fehler in meiner Main.
:
Bearbeitet durch User
Wenn du es nicht für nötig hältst die Anpassungen zu posten (auf die es ja schliesslich ankommt, die Lib darf ja als funktionfähig betrachtet werden) dann ist wohl Hopfen und Malz verloren.
Arduinoquäler schrieb: > Wenn du es nicht für nötig hältst die Anpassungen zu posten > (auf die es ja schliesslich ankommt, die Lib darf ja als > funktionfähig betrachtet werden) dann ist wohl Hopfen und > Malz verloren. In der Library mmc.h habe ich folgende Dinge geändert:
1 | define MMC_Write PORTB //Port an der die MMC/SD-Karte angeschlossen ist also des SPI |
2 | #define MMC_Read PINB
|
3 | #define MMC_Direction_REG DDRB
|
4 | |
5 | #if defined (__AVR_ATmega2560__)
|
6 | #define SPI_MISO 3 //Port Pin an dem Data Output der MMC/SD-Karte angeschlossen ist (DO)
|
7 | #define SPI_MOSI 2 //Port Pin an dem Data Input der MMC/SD-Karte angeschlossen ist (DI)
|
8 | #define SPI_Clock 1 //Port Pin an dem die Clock der MMC/SD-Karte angeschlossen ist (clk)
|
9 | #define SPI_SS 0 //Port Pin an dem Chip Select der MMC/SD-Karte angeschlossen ist (CS)
|
10 | #endif
|
Matthias H. schrieb: > In der FAT32 lib konfiguriere ich > doch in den einzelnen Librarys meine Pins für CS/MISO/MOSI/CLK? Wieso das denn? Einzig CS musst du definieren. Der Rest ist von der SPI Hardware deines Mega vorgegeben. Meist liegt der CS des SD-Slot auf Arduino Pin 4
Arduino F. schrieb: > Meist liegt der CS des SD-Slot auf Arduino Pin 4 Er will / muss aber ohne Arduino (Framework) auskommen. Er benutzt (offensichtlich) die hier downloadbare FAT Sourcen-Ansammlung.
Matthias H. schrieb: > In der Library mmc.h habe ich folgende Dinge geändert: in deiner main.c steht // timer0 config ************************************************** // initialisierung, auf jeden fall vor mmc_init(), ...und wo steht dann das "mmc_init()"?
Arduinoquäler schrieb: > Er benutzt (offensichtlich) die hier downloadbare FAT > Sourcen-Ansammlung. Und dennoch sind die meisten/alle, für Arduino vorgefertigten SD_Slots, für den Betrieb an der Hardware SPI des betreffenden Boards angepasst/vorgesehen. Wenn er SoftwareSPI auf ganz anderen Pins nutzen möchte, dann muss umgelötet werden. Und genau das halte ich für eine völlig unsinnige Baustelle. Der Umbau ist unsinnig. SoftSPI zu verwenden ist unsinnig.
Matthias H. schrieb: > In der Library mmc.h habe ich folgende Dinge geändert:
1 | #define SPI_MISO 3 //Port Pin an dem Data Output der MMC/SD-Karte angeschlossen ist (DO)
|
2 | #define SPI_MOSI 2 //Port Pin an dem Data Input der MMC/SD-Karte angeschlossen ist (DI)
|
3 | #define SPI_Clock 1 //Port Pin an dem die Clock der MMC/SD-Karte angeschlossen ist (clk)
|
4 | #define SPI_SS 0 //Port Pin an dem Chip Select der MMC/SD-Karte angeschlossen ist (CS)
|
Die Pin-Zuordnungen sind richtig, bis auf die Frage ob eventuell SPI_MISO und SPI_MOSI vertauscht sind. Dies muss man mit einem Multimeter durchmessen. Sie Bild. SD_DO sollte also MISO sein, und SD_DIN sollte MOSI sein.
Arduino F. schrieb: > Und dennoch sind die meisten/alle, für Arduino vorgefertigten SD_Slots, > für den Betrieb an der Hardware SPI des betreffenden Boards > angepasst/vorgesehen. Das ist hiermit auch der Fall. ArduinoMega, Shield und TFT zusammen gewährleisten das. Arduino F. schrieb: > Wenn er SoftwareSPI auf ganz anderen Pins nutzen möchte, Wo hat er davon gesprochen / geschrieben?
Jan L. schrieb: > ...und wo steht dann das "mmc_init()"? Ich hoffe, dass das nicht mein Fehler war. Kann das leider erst heute Abend testen. Muss ich noch etwas anderes initialisieren?
Arduinoquäler schrieb: > Wo hat er davon gesprochen Hier: > #define SPI_SS 0 Damit ist doch sicherlich PB0 gemeint. Arduinoquäler schrieb: > ArduinoMega, Shield und TFT zusammen gewährleisten das. Wie gesagt: Die meisten SD Dinger verwenden Arduino Pin 4 (bitte bei dem Shield überprüfen) Und Pin 4 ist PG5 und nicht PB0 PB0 sollte dann aber trotzdem auf OUTPUT gestellt werden. Alternativ, dauerhaft auf HIGH gehalten werden.
Arduino F. schrieb: > PB0 sollte dann aber trotzdem auf OUTPUT gestellt werden. > Alternativ, dauerhaft auf HIGH gehalten werden. Das ist ja nicht zum Aushalten. Schau dir die Sourcen an, da ist alles geregelt. Hier wird nicht Arduino gesprochen sondern ATMEL-AVR. Sprich: Ports und Pin-Wertigkeiten, keine Board-Nummern. Arduino F. schrieb: > Wie gesagt: Die meisten SD Dinger verwenden Arduino Pin 4 > (bitte bei dem Shield überprüfen) Arduinoquäler schrieb: > Das ist hiermit auch der Fall. > ArduinoMega, Shield und TFT zusammen gewährleisten das.
Arduinoquäler schrieb: > Arduino F. schrieb: >> Wenn er SoftwareSPI auf ganz anderen Pins nutzen möchte, Arduino F. schrieb: > Hier: >> #define SPI_SS 0 Nein hat er nicht. Und jetzt hör auf mit dem haltlosen rumgelabere.
Arduinoquäler schrieb: > Und jetzt hör auf mit dem haltlosen rumgelabere. Du scheinst dir ja sehr sicher zu sein, dass CS der SD Karte an PB0 geht. Ich kann dir nur sagen, dass meist PG5 verwendet wird. Leider kenne ich das Layout/Schaltplan des Shields nicht,... Arduinoquäler schrieb: > Sprich: Ports und Pin-Wertigkeiten, keine Board-Nummern. ?
Arduino F. schrieb: > Du scheinst dir ja sehr sicher zu sein, dass CS der SD Karte an PB0 > geht. Ich scheine nicht sicher zu sein, sondern ich weiss es. Arduino F. schrieb: > Ich kann dir nur sagen, dass meist PG5 verwendet wird. Du kannst mir viel sagen wenn der Tag lang ist. Und das ist wieder mal völlig nutzlos weil an den Bedürfnissen des TO vorbei. Arduino F. schrieb: > Leider kenne ich das Layout/Schaltplan des Shields nicht,... Dann lerne ihn kennen. Und labere nicht weiter hier herum sondern interpretiere den Inhalt des Schaltplans.
Matthias H. schrieb: > Jan L. schrieb: >> ...und wo steht dann das "mmc_init()"? > > Ich hoffe, dass das nicht mein Fehler war. Kann das leider erst heute > Abend testen. > Muss ich noch etwas anderes initialisieren? Okay okay, ich bin dumm, aber dafür überglücklich. Es lag wirklich am fehlenden mmc_init. Tausend dank dir und euch allen die mir helfen wollten!!!:)))))
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.