Ich hab das ganze Projekt jetzt mal kopiert und alles rausgeschmissen, was ich nicht brauche. Hier die LED-Board.c:
Code:
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <stdlib.h>
#include <util/delay.h>
#include "ledboard.h"
const prog_char char_A[6] = { 0b00111111,
0b01001000,
0b01001000,
0b01001000,
0b00111111};
const prog_char char_B[6] = { 0b01111111,
0b01001001,
0b01001001,
0b01001001,
0b00110110};
const prog_char char_C[6] = { 0b00111110,
0b01000001,
0b01000001,
0b01000001,
0b00100010};
unsigned char LEDTable_text[30];
void putaintoled (void)
{
unsigned char Pos_2;
unsigned char Pos_1;
Pos_1 = 0;
Pos_2 = 0;
while(Pos_2 <=4)
{
LEDTable_text[Pos_1] = char_A[Pos_2];
Pos_1 = Pos_1 +1;
Pos_2 = Pos_2 +1;
}
LEDTable_text[5] = 0b10000000;
}
// ------------------------------- Ab hier nur noch Funktionen um den Text mit den LEDs auszugeben -----------------------
void PrintByte2LEDs (unsigned char data, unsigned char posonboard) // Spalte der LED-Matrix ansteuern
{
unsigned char Data_for_Block_dez = 0;
if(1)
{
BOARDHORIZ_PORT = BOARDHORIZ_PORT & ~BOARDHORIZ1 & ~BOARDHORIZ2 & ~BOARDHORIZ3 & ~BOARDHORIZ4 & ~BOARDHORIZ5 & ~BOARDHORIZ6 & ~BOARDHORIZ7;
if(data & 0b00000001)
BOARDHORIZ_PORT = BOARDHORIZ_PORT | BOARDHORIZ1;
if(data & 0b00000010)
BOARDHORIZ_PORT = BOARDHORIZ_PORT | BOARDHORIZ2;
if(data & 0b00000100)
BOARDHORIZ_PORT = BOARDHORIZ_PORT | BOARDHORIZ3;
if(data & 0b00001000)
BOARDHORIZ_PORT = BOARDHORIZ_PORT | BOARDHORIZ4;
if(data & 0b00010000)
BOARDHORIZ_PORT = BOARDHORIZ_PORT | BOARDHORIZ5;
if(data & 0b00100000)
BOARDHORIZ_PORT = BOARDHORIZ_PORT | BOARDHORIZ6;
if(data & 0b01000000)
BOARDHORIZ_PORT = BOARDHORIZ_PORT | BOARDHORIZ7;
if(posonboard<=8)
{
BLOCKENABLE_PORT = BLOCKENABLE_PORT &~BLOCKENABLE1;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE2;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE3;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE4;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE5;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE6;
Data_for_Block_dez = posonboard;
}
if((posonboard>8) && (posonboard<=16))
{
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE1;
BLOCKENABLE_PORT = BLOCKENABLE_PORT &~BLOCKENABLE2;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE3;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE4;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE5;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE6;
Data_for_Block_dez = posonboard - 8;
}
if((posonboard>16) && (posonboard<=24))
{
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE1;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE2;
BLOCKENABLE_PORT = BLOCKENABLE_PORT &~BLOCKENABLE3;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE4;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE5;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE6;
Data_for_Block_dez = posonboard - 16;
}
if((posonboard>24) && (posonboard<=32))
{
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE1;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE2;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE3;
BLOCKENABLE_PORT = BLOCKENABLE_PORT &~BLOCKENABLE4;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE5;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE6;
Data_for_Block_dez = posonboard - 24;
}
if((posonboard>32) && (posonboard<=40))
{
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE1;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE2;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE3;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE4;
BLOCKENABLE_PORT = BLOCKENABLE_PORT &~BLOCKENABLE5;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE6;
Data_for_Block_dez = posonboard - 32;
}
if((posonboard>40) && (posonboard<=48))
{
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE1;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE2;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE3;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE4;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE5;
BLOCKENABLE_PORT = BLOCKENABLE_PORT &~BLOCKENABLE6;
Data_for_Block_dez = posonboard - 40;
}
unsigned char Data_for_Block_bin = 1<<(Data_for_Block_dez-1);
BLOCKDATA_PORT = BLOCKDATA_PORT & ~BLOCKDATA1 & ~BLOCKDATA2 & ~BLOCKDATA3 & ~BLOCKDATA4 & ~BLOCKDATA5 & ~BLOCKDATA6 & ~BLOCKDATA7 & ~BLOCKDATA8;
if(Data_for_Block_bin & 0b00000001)
BLOCKDATA_PORT = BLOCKDATA_PORT | BLOCKDATA1;
if(Data_for_Block_bin & 0b00000010)
BLOCKDATA_PORT = BLOCKDATA_PORT | BLOCKDATA2;
if(Data_for_Block_bin & 0b00000100)
BLOCKDATA_PORT = BLOCKDATA_PORT | BLOCKDATA3;
if(Data_for_Block_bin & 0b00001000)
BLOCKDATA_PORT = BLOCKDATA_PORT | BLOCKDATA4;
if(Data_for_Block_bin & 0b00010000)
BLOCKDATA_PORT = BLOCKDATA_PORT | BLOCKDATA5;
if(Data_for_Block_bin & 0b00100000)
BLOCKDATA_PORT = BLOCKDATA_PORT | BLOCKDATA6;
if(Data_for_Block_bin & 0b01000000)
BLOCKDATA_PORT = BLOCKDATA_PORT | BLOCKDATA7;
if(Data_for_Block_bin & 0b10000000)
BLOCKDATA_PORT = BLOCKDATA_PORT | BLOCKDATA8;
}
}
void PrintText2LEDs (void) //LEDTable_text auf die LED-Matrix ausgeben (muss periodisch aufgerufen werden)
{
unsigned char Pos_in_LEDTable_text;
for(Pos_in_LEDTable_text = 0; LEDTable_text[Pos_in_LEDTable_text]!=0b10000000; Pos_in_LEDTable_text++)
{
PrintByte2LEDs(0, Pos_in_LEDTable_text+1);
_delay_us(1);
PrintByte2LEDs(LEDTable_text[Pos_in_LEDTable_text], Pos_in_LEDTable_text+1);
_delay_us(2);
}
}
void LEDInitIO (void)
{
BLOCKENABLE_DDR = BLOCKENABLE_DDR | BLOCKENABLE1 | BLOCKENABLE2 | BLOCKENABLE3 | BLOCKENABLE4 | BLOCKENABLE5 | BLOCKENABLE6;
BLOCKENABLE_PORT = BLOCKENABLE_PORT | BLOCKENABLE1 | BLOCKENABLE2 | BLOCKENABLE3 | BLOCKENABLE4 | BLOCKENABLE5 | BLOCKENABLE6;
BLOCKDATA_DDR = BLOCKDATA_DDR | BLOCKDATA1 | BLOCKDATA2 | BLOCKDATA3 | BLOCKDATA4 | BLOCKDATA5 | BLOCKDATA6 | BLOCKDATA7 | BLOCKDATA8;
BLOCKDATA_PORT = BLOCKDATA_PORT & ~BLOCKDATA1 & ~BLOCKDATA2 & ~BLOCKDATA3 & ~BLOCKDATA4 & ~BLOCKDATA5 & ~BLOCKDATA6 & ~BLOCKDATA7 & ~BLOCKDATA8;
BOARDHORIZ_DDR = BOARDHORIZ_DDR | BOARDHORIZ1 | BOARDHORIZ2 | BOARDHORIZ3 | BOARDHORIZ4 | BOARDHORIZ5 | BOARDHORIZ6 | BOARDHORIZ7;
BOARDHORIZ_PORT = BOARDHORIZ_PORT & ~BOARDHORIZ1 & ~BOARDHORIZ2 & ~BOARDHORIZ3 & ~BOARDHORIZ4 & ~BOARDHORIZ5 & ~BOARDHORIZ6 & ~BOARDHORIZ7;
}
Wie man sehen kann: Die Buchstaben A, B, und C liegen und bleiben im Flash, der LEDTable_text liegt im Ram (muss ja verändert werden)
Vielen Dank schonmal :-D
-schumi-
Lesezeichen