Array Problem

Gast #150828
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
Gast
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
Gast
@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?
Gast
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
Gast
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
Gast
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.