mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MMC Lin von Ulrich radig


Autor: Jenzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Ich bin gerade dabei die eine MMC mit der LIB von Ulrich Radig
anzusteuern. Ich habe überall wo Mega32 steht Mega16 reingeschrieben
(sind ja PIN kompatibel)
(ich nutze die beispiel funktion)
Dann hab ich noch ein paar zusätzliche UART-Debug strings hinzugefügt.
(und eine funtkion die Wartet bis eine Taste gedrückt wird:
  //Initzialisierung der seriellen Schnittstelle
  IOInit();
  
  //öffnet einen kanal für printf
  fdevopen (uart_putchar, NULL, 0);

  DDRC = 0x00;
  PORTC = 0xFF;
  printf ("~");  //Debug String
  while ((PINC|0b11111110)==0xFF); //Warte bis taste gedrückt

  //Initialisierung der MMC/SD-Karte
  printf ("System OK\n\n");    //Debug String
  while ( mmc_init() !=0) //ist der Rückgabewert ungleich NULL ist ein
Fehler aufgetreten
    {
    printf("** Keine MMC/SD Karte gefunden!! **\n");  
    }
    
  printf("Karte gefunden!!\n");  //Debug String
  printf("0");  //Debug String
  Cluster_Data_Store();//laden Cluster OFFSET und Size ins EEPROM
  //Initialisierung der MMC/SD-Karte ENDE!
  printf("1");  //Debug String
  unsigned char Buffer[512];
  unsigned int tmp;
........

über den UART komt folgende rein: (solange ich die taste Drücke)
~System OK
Karte gefunden!!
0~System OK
Karte gefunden!!
0~System OK
Karte gefunden!!
0~

d.h nach der Funktion Cluster_Data_Store(); wird ein Reset ausgelöst (/
die funktion main beginnt von vorne)

Wodurch könnte das zu stande kommen ?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat der Mega16 dafür überhaupt genügend SRAM???

...

Autor: Jenzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ka....Kann schon sein, das der nicht reicht....wie kann ich das
feststellen ? und warum wird dann ein Reset ausgelöst (ich denk mal des
is n Reset)

Autor: Jenzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, hab des Porgramm jetzt aufn mega32 geladen....und es geht ohne
probleme. Lag wahrscheilich wirklich am speicher. Wiso ist der Speicher
eigentlich zu klein ? /was ist an dem FAT16 System zu gross ?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
FAT16 erfordert, dass du immer einen gesamten Sektor im SRAM liegen hast
(wenn ich mich nicht irre, sogar zweimal). Und das sind schonmal 512
Bytes (je Sektor). Dann noch die Variablen, das läppert sich zusammen.

FAT ist nunmal nicht das optimale System, dafür leider das
verbreitetste. Ist nunmal die Rache von Onkel Bill...

...

Autor: Manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Grund da das FAT Dateisystem nicht auf jedem Controller funktioniert
 liegt tatsächlich an den Buffer - Variablen
FAT16 ---> Sektorgröße = 512Byte macht x2 1024Byte und ist somit zu
groß für zB Mega8 mit 1K SRAM-Speicher.


MfG

Autor: Martin Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fuer "die Kleinen" einen Test wert:
http://elm-chan.org/fsw/ff/00index_e.html in der "Tiny-FatFs"
Konfigration.

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also 512Byte Buffer sind immer fuer SD-Ram/MMC Karte notwendig wenn man
sie beschreiben will. Egal ob mit Filesystem oder nicht. Es waere
qsicherlich auch denkbar sich ein FAT12/FAT16/FAT16BIG zu schreiben das
auch nur mit 512Byte Buffer und vermutlich so 100Byte fuer bestimmte
Variablen auskommt.
Es waer sicherlich grottenlahm und total ineffizient, aber machbar
sollte es sein. Es wird aber auch einiges an Flashrom brauchen.

Wollte ich bei Gelegenheit mal machen, allerdings reicht es in den
meisten Faellen doch aus ein einziges File zu beschreiben. Das kann man
dann auch direkt und linear und  spart sich viel Aufwand.

Olaf

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.