Hi PicNick, hi Slein
danke für eure Antworten :-D
Frage eine unwissenden: was macht diese Funktion ?
Die Funktion wartet darauf, dass das RFM12-Funkmodul etwas empfangen hat. Dabei wird die Timeout-Zeit in us übergeben:
Code:
char RF12_READY_TIMEOUT_RX (unsigned long time)
{
RF12_TRANS(0x82C8); // RX on
RF12_TRANS(0xCA81); // set FIFO mode
RF12_TRANS(0xCA83); // enable FIFO
unsigned long timer=0;
cbi(RF_PORT, CS);
while (!(RF_PIN&(1<<SDO)))
{
_delay_us(1);
timer++;
if(timer>time)
return 0;
}
return 1;
}
Von den 128 byte benutzt du alleine im oben aufgeführten Codefragment ca. 60 für strings.
Wird der Platz nach dem der Text rausgeschrieben wurde nicht mehr freigegeben?
Der betreffende Teil aus der UART.c:
Code:
void UART_SEND (unsigned char data)
{
while(!(UCSRA & (1 << UDRE))); // warten bis UDR bereit ist
UDR = data; // sende Zeichen
}
void UART_STRING(char *string)
{
while(*string)
{
UART_SEND(*string++);
_delay_ms(2);
}
}
Danke für den Link, werd ich mir mal zu Gemüte führen
Wer sich den ganzen Quellcode ansehen möchte, hier ist der Projektordner:
https://www.dropbox.com/s/7m7i9zfife...erpruefung.zip
(Grob umschrieben: Ein Atmega88 sendet an den Attiny2313 eine Text ("Das ist ein Test"). Der Attiny sendet dann den Text via RFM12 an einen Atmega16 weiter (Mit Fehlerkorrektur) und gibt am UART Debugginginfos aus. Der Atmega16 gibts dann am UART aus)
Gruß
-schumi-
Lesezeichen