Hallo,
das Thema RFM70 ist ja hier schon öfter diskutiert worden, jetzt habe
ich mich auch mal daran versucht, die Teile mittels AVR zum laufen zu
bekommen.
Leider kommt auf der Gegenseite nur Mist an.
Ich habe auf einem Steckbrett mal einen Testaufbau gemacht, mit 2
ATMega48 und einem PTX und einem PRX RFM70. Da ich die RFM70-Bibliothek
von http://projects.weber-itam.de/?p=90 verwende, dachte ich eigentlich,
es sollte keine Probleme geben. Die Kommunikation beider Module mit dem
zugehörigen AVR funktioniert, ich habe mal testweise die Channels
ausgelesen und über UART ausgegeben, klappt alles wunderbar.
Die RX-Seite reagiert auf ein ankommendes Paket und sendet das Ergebnis
per UART ab, es kommen aber nur Linefeeds und Punkte (dez.: 10 und 46)
an...
Hier mein Code:
1 | //#define SEND
|
2 |
|
3 | #include <inttypes.h>
|
4 | #include <avr/io.h>
|
5 | #include <avr/interrupt.h>
|
6 | #include <util/delay.h>
|
7 | #include <stdlib.h>
|
8 |
|
9 | #include "uart.h"
|
10 | #include "rfm70.h"
|
11 |
|
12 | #define UART_BAUD_RATE 9600
|
13 |
|
14 | #ifndef SEND
|
15 | // ###################### RECEIVE CODE ######################
|
16 |
|
17 | int main()
|
18 | {
|
19 | uint8_t buffer[32];
|
20 | uint8_t val;
|
21 |
|
22 | sei();
|
23 |
|
24 | uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );
|
25 | uart_puts("System Ready\n");
|
26 |
|
27 | Begin();
|
28 | setMode(1);
|
29 | setChannel(25);
|
30 |
|
31 | while (1)
|
32 | {
|
33 | val = receivePayload(buffer);
|
34 |
|
35 | if (val) {
|
36 |
|
37 | uart_puts((char*) buffer);
|
38 | uart_puts("\n");
|
39 | }
|
40 | }
|
41 |
|
42 | return 0;
|
43 | }
|
44 |
|
45 | #else
|
46 | // ###################### SEND CODE ######################
|
47 |
|
48 | int main()
|
49 | {
|
50 | uint8_t value1 = 0;
|
51 |
|
52 | sei();
|
53 |
|
54 | uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );
|
55 | uart_puts("System Ready\n");
|
56 |
|
57 | Begin();
|
58 | setMode(0);
|
59 | setChannel(25);
|
60 |
|
61 | while (1) {
|
62 |
|
63 | value1 = (uint8_t)uart_getc();
|
64 |
|
65 | if(value1) {
|
66 |
|
67 | PORTB |= (1<<PB0);
|
68 |
|
69 | sendPayload(value1,1,0);
|
70 | uart_putc(value1);
|
71 |
|
72 | PORTB &= ~(1<<PB0);
|
73 | }
|
74 |
|
75 | }
|
76 |
|
77 | return 0;
|
78 | }
|
79 |
|
80 | #endif
|
Ich hoffe, ihr könnt mir helfen!
Viele Grüße,
Christoph