Hallo zusammen!
Ich stehe mal wieder vor einem Rätsel:
In meinem Programm gibt es eine globale Variable (ein zweidimensionales Feld mit Zeichendefinitionen), das auszugsweise so aussieht:
const static uint8_t glyphs[128][11] PROGMEM =
{
...
{ 0x00, 0x00, 0x10, 0x28, 0x44, 0x7C, 0x44, 0x44, 0x44, 0x00, 0x00 }, // 65 (A)
...
}
In einer Funktion möchte ich nun auf dieses Feld zugreifen, um den Buchstaben A auf ein Display zu bringen:
void putC(uint8_t xCoord_, uint8_t yCoord_, uint8_t asciiCode_)
{
Serial.print("[putC()] glyphs[65][5]="); // Diese Zeilen erzeugen die Ausgabe
Serial.println(glyphs[65][5], HEX); // [putC()] glyphs[65][5]=7C
Serial.println();
for(uint8_t line=0; line != 11; line++)
{
Serial.print ("[putC()] glyphs["); //
Serial.print (asciiCode_); //
Serial.print ("]["); //
Serial.print (line); //
Serial.print ("]="); // Diese Zeilen erzeugen die Ausgabe
Serial.println(glyphs[asciiCode_][line], HEX); // [putC()] glyphs[65][5]=0
uint8_t testBit=1;
for(uint8_t bitPos=0; bitPos != 8; bitPos++)
{
if((uint8_t)(glyphs[asciiCode_][line] & testBit) != 0)
{
displ.setPixel(xCoord_+bitPos, yCoord_+line);
}
testBit=testBit*2;
}
}
}
Wenn ich die Funktion mit 'putC(0, 0, 65)' aufrufe, erhalte ich jedoch unterschiedliche Ergebnisse für IMO identische Zugriffe (s. Kommentare im Code).
Stehe ich mal wieder auf der Leitung?
Gruß
Gregor