Hallo,
ich komme zwar aus der PIC Welt aber vielleicht kann mir ja jemand
helfen, C ist ja überall ähnlich.
Ich habe mir von Hope ein paar Samples des RFM12 Transceiver schicken
lassen. Der mitgelieferte Code entsprach wenig meinen Vorstellungen von
sauberer Programmierung, daher meine eigenen Zeilen geschrieben. Ich
möchte zunächst den Sender ansteuern und zwar über das Datenregister,
FSK liegt über 10k auf Plus, benutzt werden nur nIRQ und die SPI
Leitungen. Leider reden die Module nicht, dass sich etwas tut sieht man
ja nur auf dem Oszi, wenn man zB den Clock Out umstellt. Nach endloser
Fehlersuche merkte ich zunächst, dass man die SPI mit CKE=1 betreiben
muss (SDO valid before SCK, Sample bei steigender Flanke). Konfigurieren
lässt es sich jetzt erst einmal hoffe ich.
Jetzt der Pferdefuss: Schickt man Daten in das TX Register soll nach
Datenblatt die SDO leitung zappeln, wenn ein neues Byte geladen werden
kann und invers dazu nIRQ. SDO zeigt auf dem Oszi nur kleine Peaks, nIRQ
bleibt artig High und verändert sich gar nicht. Habe mit verschiedenen
Baudraten gespielt, alternativ Pausen beim Senden eingefügt, nichts! ich
dreh noch ab, denn den Fehler finde ich einfach nicht. EL Bit ist auch
gesetzt.
Was kann es denn noch sein?
Sorry, vergessen, die SPI Routine... zur Erklärung oben: ChipSelect ist
eine Routine, die über einen 8 aus 3 Decoder (74HC138) arbeitet, ich
habe 6 unterschiedliche Slaves (3 x uC´, RTC, MMC usw) an einem SPI Bus.
Getestet und arbeitet einwandfrei.
1
byteSPIRF(bytedata)
2
{
3
byterec;
4
5
// Solange SPI beschäftigt ist hämmere ihr die Daten ein bis frei wird
6
7
LED_AKTIV=1;
8
do{
9
SSPCON1_WCOL=0;
10
SSPBUF=data;// Sende Register beschreiben
11
}while(SSPCON1_WCOL);
12
13
// Datentransfer läuft, jetzt warten bis Byte vom Slave reingekommen