Gast
#1583685
Wieso ist a) true ?
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
Quellcode ist ISO-xxx kodiert
|
Anzeige
|
Ausdruck, Zeichen, Byte, Null: 0 != '\0' ?
Gast
#1583685
Wieso ist a) true ?
Quellcode ist ISO-xxx kodiert Wenn du vergleichen willst, solltest du das mit == machen. Und array liegt nicht im Flash, nur weil es const ist. Es braucht noch das Attribut PROGMEM.
Gast
#1583693
Weder a) noch b) sind TRUE, nur ist es kein Vergleich und pgm_read_byte ist falsch. Oder hast du PROGMEM vergessen?
Gast
#1583695
Kann sein, dass ich mich irre, aber beim gcc bewirkt const allein nicht, dass die Daten im Flash landen. Daher liest du mit pgm_read_byte wahrscheinlich aus dem Nirvana. Der Datenmüll landet dann (wegen einfachem '=') in string[0] und ist mit einer Wahrscheinlichkeit von 255/256 nicht null. Weil das Array nicht da landet, wo Du annimst. Es als const zu deklarieren, genügt nicht, damit es im Flash-ROM abgelegt wird, Du musst zusätzlich PROGMEM angeben.
Gast
#1583703
Wieso sollte
im Flash stehen ? Wieso sollte Lesen im Flash mit der Adresse einer SRAM Variable ein nicht-zufälliges Ergebnis liefern?
Gast
#1583716
Verzeihung. Bitte nochmal:
Gast
#1583726
siehe 1.Antwort, 1.Satz! = ist eine Zuweisung == ist ein Vergleich
Gast
#1583736
Die Aussage ist korrekt, aber nicht der Grund. Der Ausdruck string[0] = pgm_read_byte(&array[0]) hat den Wert pgm_read_byte(&array[0]) und sollte somit für die Bedingung wahr sein, wenn der Rückgabewert != 0 ist. Nun ist ja eigentlich 0 == 0 == '\0'. Oder?
Gast
#1583740
> Die Aussage ist korrekt, aber nicht der Grund.
Nehme ich an. Liege ich falsch?
Gast
#1583812
Ursache: falsche (alte) Daten im Flash. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|