RFM12 von HopeRF/Pollin für AVR

30/12/2007 - 12:30 von Andreas Weber | Report spam
Hallo NG,
ich bin eben über den Thread "Sammelbestellung Funkmodule" von Michael
Eggert gestolpert.

Ich habe meine wohl zu teuer bei Pollin bestellt, der Beipackzettel
enthàlt übrigens Fehler. Ich habe über Weihnachten einen Treiber für
Atmel AVRs mit SPI Hardware geschrieben:

www.tech-chat.de/files/rf12.tar.gz

Momentan verwende ich Atmega32 und AT90S8515(in der Bastelkiste gefunden)

Ist eine alpha version, eine hamming(7,4,3) Kanalcodierung ist
zuschaltbar. Momentan verwende ich eine Übertragungsrate von 38.4kbaud
und die Verbindung làuft gut.

Siehe der Thread "ECC mit AVR" habe ich auch mal über Reed-Solomon
nachgedacht, was aber wohl zu viel des Guten ist. Vielleicht kommt noch
Trellis/Viterbi oder Meggitt dazu (danke nochmal an Oliver Bartels)

Da ich dem Thread entnehmen konnte, dass den Chip noch andere verwenden,
möchte ich fragen ob wir zusammen irgendwo eine "Entwicklungsplattform"
aufsetzen sollen oder ob ihr euch schon irgendwo eingenistet habt.

www.mikrocontroller.net hat ja auch einiges zu dem Thema RF12

Ich habe noch vor in den nàchsten Tagen einen Stack dafür zu schreiben
mit ping, Sendewiederholung, listen before talk, automatische Kanalsuche
usw.

Gruß von Andy
 

Lesen sie die antworten

#1 Olaf Kaluza
30/12/2007 - 13:31 | Warnen spam
Andreas Weber wrote:

Da ich dem Thread entnehmen konnte, dass den Chip noch andere verwenden,
möchte ich fragen ob wir zusammen irgendwo eine "Entwicklungsplattform"
aufsetzen sollen oder ob ihr euch schon irgendwo eingenistet habt.



Was meinst du mit Entwicklungsplattform? Hardware? Die ist doch
relativ belanglos. (hehe, kann ich jetzt ja sagen)

Da ich das ganze privat und aus Spass mache gebe ich mich aber nicht
mehr mit den mickrigen AVRs hab. Hier ist ein M16 mit 96kbFLash / 10kb Ram
angesagt und mein Bedienterminal wird ein alter Palmpilot mit Dragonball.
Wenn man bedenkt das so ein M16 gerade mal 5Euro kostet dann muss ich
mich nicht mehr mit den 1kb Ram eines AVRs rumaergern.

Oder Software? Ich hatte an ein groesseres Bussystem fuer alle
Lebenslagen gedacht. Hier mal zwei Ausschnitte aus meiner
multibus.h welche die grobe Idee verdeutlichen:

/* Wir Definieren hier eine Struktur fuer Fehlerflags. */
/* Dabei wird aber noch keine Variable erzeugt! */
struct errbit_def {
char Timeout:1; /* Es kam zu einer Zeitueberschreitung */
char TxErr:1; /* Fehler beim senden eines Datenblocks */
char RxErr:1; /* Fehler beim Empfang eines Datenblocks */
char Crc:1; /* Falsche Pruefsumme */
char b4:1;
char b5:1;
char b6:1;
char b7:1;
};

union {
struct errbit_def bit;
char byte;
} MultiErr;


union status_def{
struct status_mbitdef bit;
char byte;
};

#define MDATLEN 16
struct multibustype{
unsigned char Crc; /* Pruefsumme, muss immer als erstes kommen! */
unsigned char BlockType; /* Gibt an ob es ein Master oder Slave Block ist */
unsigned char DeviceID; /* Was ist es fuer ein GeraeteTyp */
unsigned char DeviceNr; /* Geraetenummer */
unsigned char DatenType; /* Was sendet das Geraet fuer Daten? */
struct ticker Ticker; /* Tickervariable */
union status_def Status; /* StatusBits */
unsigned char Len; /* Laenge der Nutzdaten */
unsigned char Daten[MDATLEN]; /* Die Nutzdaten */
};


struct ticker{
char counter:4; /* Upcounter, wird mit jedem Kommando hochgezaehlt 0-15 */
char answer:4; /* Die Nummer des letzten counter auf dem sich die Antwort bezieht */
};


/* Datentyp fuer die Nutzdaten */
typedef unsigned char MultiDataTyp[MDATLEN];

/* Hier werden die einzelnen Geraete definiert die es gibt */
#define BUS_CONTROLER 0x01 /* Der Boss von dem Laden */
#define BUS_MCU 0x02 /* Microcontroller fuer allgemeine Anwendung */
#define BUS_MMET 0x03 /* Multimeter */
#define BUS_THERMO 0x04 /* Thermometer */
#define BUS_CLOCK 0x05 /* Uhr */
#define BUS_KEY 0x06 /* Tastatur */
#define BUS_GPIB 0x07 /* GPIB-Bus Controller */
#define BUS_RS232 0x08 /* RS232 Schnittstelle */
#define BUS_I2C 0x09 /* I2C-Bus Schnittstelle */
#define BUS_SPI 0x0a /* SPI-Bus Schnittstelle */
#define BUS_TLCD 0x0b /* Text-LCD */
#define BUS_GLCD 0x0c /* Grafik-LCD */
#define BUS_SUPPLY 0x0d /* Labornetzteil */
#define BUS_CAR 0x0e /* Ein Auto :-) */


Ist aber alles noch Theorie. Ich hatte nur schonmal ein bisschen
vorprogrammiert weil die Chinesen so lange mit der Lieferung gewartet
haben.

Olaf

Ähnliche fragen