Hallo, Ich verwende eine AtMega16 programmiere mit WinAVR. ich denke das ich ein Problem mit dem Array habe aber schaut mal selbst darüber. unsigned long speicherblock = 10; unsigned char write_ok = 0; unsigned char wert[512]; wert[0] = 0; wert[1] = 0; int einer = 0; // Ändert sich im Programmverlauf int zehner = 0; // Ändert sich im Programmverlauf if ( !(PIND & (1<<1)) ) { wert[0] = abt; wert[1] = xxy; mmc_write_sector(speicherblock, wert); } if ( !(PIND & (1<<2)) ) { mmc_read_sector(speicherblock, wert); abt = wert[0]; xxy = wert[1]; { Leider werden die werte nicht wie ich es vorhatte auf die MMC abgelegt oder ausgelesen, kann mir jemand sagen warum? Vielen Dank
Du mußt sagen, welcher wert gespeichert oder gelesen werden soll. Z.B mmc_read_sector(speicherblock, wert[17]); oder: for(i=0;i<512;i++) { mmc_read_sector(speicherblock, wert[i]); } MW
@Michael W.: Liest nicht mmc_read_sector einen vollständigen Sektor in den Speicher ein? @Phasemän: Was sind abt und xxy? Wozu sind die einer und zehner da? Mal mit 'nem Debugger den Inhalt des Arrays wert angesehen? Oder mal als Hexdump auf eine serielle Schnittstelle ausgegeben?
Hallo, Stimmt Rufus hat recht mmc_read_sector liest einen follständigen sector ein. mmc_read_sector(speicherblock, wert[17]); dürfte dann nicht funktionieren habe ich aber auch versucht dann beschwärt sich aber der compiler sofort! Sorry mein Fehler abt ist einer und xxy ist zehner hab die falschen kopiert, also int abt = 0; // Ändert sich im Programmverlauf int xxy = 0; // Ändert sich im Programmverlauf <<Mal mit 'nem Debugger den Inhalt des Arrays wert angesehen? <<Oder mal als Hexdump auf eine serielle Schnittstelle ausgegeben? Sorry nein, bin anfänger damit komm ich noch gar nich klar, habe aber festgestellt das es an der speicherung liegt, lade ich denn code ohne die mmc_read_sector / mmc_write_sector funktioniert die ausgabe. Aber ich brauch ja die speicherrung
Hi, würde dann der Code so funktionieren oder hab ich da noch nen fehler drin? Wie gesagt die werte von abt und xxy werden koreckt an wert[0] und wert[1] übergeben, fehler ist irgendwo bei der speicherrung. Worauf ich auch noch nicht wirklich eine Antwort gefunden habe ist wie die Karte nun formatiert werden muss, Fat16 nutze ich ja nicht. unsigned long speicherblock = 10; unsigned char write_ok = 0; unsigned char wert[512]; wert[0] = 0; wert[1] = 0; int abt = 0; // Ändert sich im Programmverlauf int xxy = 0; // Ändert sich im Programmverlauf if ( !(PIND & (1<<1)) ) { wert[0] = abt; wert[1] = xxy; mmc_write_sector(speicherblock, wert); } if ( !(PIND & (1<<2)) ) { mmc_read_sector(speicherblock, wert); abt = wert[0]; xxy = wert[1]; { Vielen Dank
Da du ein problem mit den routinen mmc_read_sector/mmc_write_sector hast wäre es schön diese mal zu sehen (meine Glaskugel ist im Urlaub) Was genau liest du aus ? Schon mal versucht einen anderen Sektor zu beschreiben (eventuell ist die MMC auch noch schreibgeschützt) ? Gruss
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.