uint8_tbuffer[32];//Zum Lesen des Sende-Registers mit readRegBuf.
2
unsignedcharBuffer[10];//->>> für ITOA
3
4
uint8_treceivePayload(uint8_t*payload)
5
{
6
uint8_tlen;
7
readRegBuf(RFM70_CMD_RD_RX_PLOAD,payload,len);
8
}
9
10
11
voidreadRegBuf(uint8_treg,uint8_t*buf,uint8_tlen)
12
{
13
buf[byte_ctr]=transmitSPI(0);
14
{
15
16
intmain(void)
17
{
18
readRegBuf(0x10,buffer,5);
19
}
Was nicht funktioniert, ist die Übergabe der Werte, auf die der Pointer
"buf" zeigt, durch die verschiedenen Funktionen bis zur Ausgabe von
"buffer" auf das UART. Innerhalb der Schleife in "readRegBuf" gelingt
die Ausgabe der gelesenen fünf Bytes allerdings einwandfrei.
Kann mir da jemand auf die Sprünge helfen bitte?
mfG
____________________________________________________________
in rfm70.c:
1
uint8_treceivePayload(uint8_t*payload)
2
{
3
uint8_tlen;
4
readRegBuf(RFM70_CMD_RD_RX_PLOAD,payload,len);
5
uart_puts((char*)buffer);//
6
uart_puts("\n");// neue Zeile und Rücklauf
7
}
8
9
10
//************************RFM COMMAND and REGISTER****************************************//
uint8_tstatus,byte_ctr,hilfsvariable;//byte_ctr dient zum Mitzählen der gelesenen Bytes.
16
status=transmitSPI(reg);// Select register to write, and read status UINT8
17
18
for(byte_ctr=0;byte_ctr<len;byte_ctr++)
19
buf[byte_ctr]=transmitSPI(0);// Perform SPI_RW to read UINT8 from RFM70 //Einfach Bytes mit Wert Null übertragen per SPI, bis die vorgegebene Anzahl erreicht ist.
20
21
/*
22
uart_puts("Register: ");
23
itoa( reg, Buffer, 10);
24
uart_puts((char*)Buffer);
25
uart_puts(" "); // neue Zeile und line feed
26
27
uart_puts("Anzahl: ");
28
itoa( len, Buffer, 10);
29
uart_puts((char*)Buffer);
30
uart_puts("\n\r"); // neue Zeile und line feed
31
32
33
for(byte_ctr = 0; byte_ctr < len; byte_ctr++)
34
{
35
hilfsvariable = transmitSPI(0); // Perform SPI_RW to read UINT8 from RFM70 //Einfach Bytes mit Wert Null übertragen per SPI, bis die vorgegebene Anzahl erreicht ist.
36
itoa( hilfsvariable, Buffer, 10);
37
uart_puts((char*)Buffer);
38
uart_puts(" ");
39
buf[byte_ctr] = hilfsvariable;
40
}
41
*/
42
43
/*
44
Ausgabe auf Terminal:
45
Register: 10 Anzahl: 5
46
52 67 16 16 1
47
Register: 11 Anzahl: 5
48
53 67 16 16 2
49
Register: 12 Anzahl: 5
50
195 195 195 195 195
51
Register: 13 Anzahl: 5
52
196 196 196 196 196
53
Register: 14 Anzahl: 5
54
197 197 197 197 197
55
Register: 15 Anzahl: 5
56
198 198 198 198 198
57
Register: 16 Anzahl: 5
58
52 67 16 16 1
59
*/
_____________________________________________
in main.c:
1
uint8_tbuffer[32];//Zum Lesen des Sende-Registers mit readRegBuf.
2
unsignedcharBuffer[10];//->>> für ITOA
3
//falls etwas nicht stimmt, das unsigned hier und in RC5.h entfernen.
Wer ruft denn diese Funktion hier auf?
uint8_t receivePayload(uint8_t *payload)
Der Aufrufer müsste meines Erachtens Speicher für das anlegen, worauf
der Zeiger uint8_t *payload zeigt. Wo passiert das?
Man kann also von main aus die 32 Bit an Daten, die das Modul empfangen
hat, sich anzeigen lassen mittels
if (receivePayload(buffer)) //für Empfänger ins Programm
{
uart_puts((char*)buffer); //für Empfänger ins Programm
uart_puts("\n"); //für Empfänger ins Programm
}
aber ein direkter Aufruf aus main
for(k = 0x0A; k < 0x11; k++)
{
readRegBuf (k, buffer, 5 );
//../main_sender_6.c:191: warning: passing argument 2 of 'readRegBuf'
from incompatible pointer type
uart_puts((char*)buffer);
}
geht nicht oder bringt kein plausibles Ergebnis. Ich blicke da leider
nicht durch. Habe schon einiges ausprobiert, aber es war nicht das
richtige dabei.
mfG