hi zusammen
ich hab nun die stelle gefunden wo mein ATmega16 stehen bleibt:
nach der init für die RS232 und dem lcd-display sollte er eigendlich den RFM12 inititalisieren.
er ruft die funktion auf in der folgende einstellungen gemacht werden sollen:
Code:
register_setzen_an_rfm12(0x80D7); //433Mhz
register_setzen_an_rfm12(0x82B9); //enable transmitter enable synthesizer enable crystal oszilator disable CLK-PIN
register_setzen_an_rfm12(0xA4B0); //433Mhz
register_setzen_an_rfm12(0xC6BD); //9600Baud
mit den werten gehts dann ab in diese funktion:
Code:
void register_setzen_an_rfm12(int wert)
{
PORTB &= ~(1<<SS);
senden_mit_rfm12(wert);
PORTB |= (1<<SS);
}
dann weiter hier hinein
Code:
void senden_mit_rfm12(int wert)
{
cursor_auf_startpos();
text_schreiben("teilen rfm12");
PORTC |= (1<<PC3);
int werte_array[16];
int pruefung = wert;
int i = 0;
for(i = 0; i<=15; i=i+1)
{
pruefung=pruefung - pow(2,i);
if (pruefung >=0)
{
werte_array[i]=1;
}
else
{
pruefung=pruefung + pow(2,i);
werte_array[i]=0;
}
}
cursor_auf_startpos();
text_schreiben("sending rfm12");
while(!(PIND & (1<<nIRQ)))
{
}
int j = 0;
for(j = 0; j<=15; j=j+1)
{
if(werte_array[j] == 1);
{
PORTB |= (1<<MOSI);
}
if(werte_array[j] == 0);
{
PORTB &= ~(1<<MOSI);
}
PORTB |= (1<<SCK);
_delay_ms(1);
PORTB &= ~(1<<SCK);
}
PORTC &= ~(1<<PC3);
}
so und in der funktion "senden_mit_rfm12(int wert)" bleibt der AVR stehen und zwar genau in an dieser stelle:
Code:
while(!(PIND & (1<<nIRQ)))
{
}
kann es sein das der nIRQ verkehrt herum gepolt ist sprich das er wenn er was empfängt auf LOW springt und wenn der RFM12 sendebereit ist dann ist er auf HIGH?
jedenfalls is bei mir der nIRQ dauerhaft auf 1 weshalb die schleife sich nicht beendet
jemand ne idee? die schleife is ja da drin um zu verhindern das wärend ich empfange gesendet wird bzw andersrum
grüße
Lesezeichen