Hallo zusammen,
ich werd noch doof hier... Hier ein Auszug aus dem Quellcode:
Code:
void putaintoled (void)
{
unsigned char Pos_2;
unsigned char Pos_1;
Pos_1 = 0;
Pos_2 = 0;
while(Pos_1 <=4)
{
LEDTable_text[Pos_2] = char_A[Pos_2];
Pos_1 = Pos_1 +1;
Pos_2 = Pos_1;
}
LEDTable_text[5] = 0b10000000;
}
Wenn ich den jetz so ändere:
Code:
void putaintoled (void)
{
unsigned char Pos_2;
unsigned char Pos_1;
Pos_1 = 0;
Pos_2 = 0;
while(Pos_1 <=4)
{
LEDTable_text[Pos_2] = char_A[Pos_2];
Pos_1 = Pos_1 +1;
Pos_2 = Pos_2 +1;
}
LEDTable_text[5] = 0b10000000;
}
(es wird nur der rote Teil geändert)
Dann funktioniert nichts mehr! Bzw. in das Array LEDTable_text wird Anstatt
Code:
0b00111111
0b01001000
0b01001000
0b01001000
0b00111111
das hier reinkopiert:
Code:
0b00000011
0b00000000
0b00000000
0b00000000
0b00100000
Ich checks einfach nicht... Pos_1 wird doch genauso behandelt wie Pos_2?!?
Ich hab erst schon gedacht, das kommt von einem Ram-Überlauf oder sowas (Das Programm ist schon relativ groß), aber wohl eher nicht:
Code:
$ avr-size --mcu=atmega32 -C main.elf
AVR Memory Usage
----------------
Device: atmega32
Program: 2262 bytes (6.9% Full)
(.text + .data + .bootloader)
Data: 296 bytes (14.5% Full)
(.data + .bss + .noinit)
EEPROM: 250 bytes (24.4% Full)
(.eeprom)
Weis jemand Rat?
Viele Grüße
-schumi-
PS: Das ganze ist für eine LED-Board mit 336 LEDs, um dann einen Text anzuzeigen. Leider habe ich derzeit keine guten Debugmöglichkeiten, da der FTDI-Chip noch nicht so will... Aber der Fehler äußerst sich dadurch, dass bei Code 1 ein "A" angezeigt wird (siehe Array) und bei Code 2 eben nur diese 3 LEDs leuchten...
[EDIT] Codebeispiele übersichtlicher gemacht
Lesezeichen