Problem mit SPI: RFM12 an ATTiny85

OP #2323876
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe mir eine Schaltung aufgebaut nach dem Schaltplan: 
http://obersomer.com/furios-power/images/atmel_projekte/rfm12/rfm12_empfaenger2_schaltplan.pdf 
, verwende jedoch statt dem ATTiny13 den ATTiny85. Im Prinzip ist die 
Schaltung denkbar einfach und das RFM12-Modul ist direkt per SPI an den 
ATTiny angeschlossen. Die Beschaltung ist minimal, es kommt daher auch 
kein Interrupteingang zum Einsatz. Um einen weiteren I/O-Port zu 
erhalten, habe ich nSEL (Chip-Select) auf GND gezogen (es sollen keine 
weiteren SPI-Geräte angeschlossen werden).

Ich verwende allerdings nicht die Quellcodes auf der Homepage. Als SPI 
kommt aktuell noch ein Software-SPI zum Einsatz:
1
unsigned short rf12_trans(unsigned short wert)
2
{  unsigned short werti=0;
3
  unsigned char i;
4
  cbi(RF_PORT, CS);
5
  for (i=0; i<16; i++)
6
  {  if (wert&32768)
7
      sbi(RF_PORT, SDI);
8
    else
9
      cbi(RF_PORT, SDI);
10
    werti<<=1;
11
    if (RF_PIN&(1<<SDO))
12
      werti|=1;
13
    sbi(RF_PORT, SCK);
14
    wert<<=1;
15
    _delay_us(0.3);
16
    cbi(RF_PORT, SCK);
17
  }
18
  sbi(RF_PORT, CS);
19
  return werti;
20
}

Soweit so gut. Das Senden von Daten klappt vermutlich auch, zumindest 
kann ich mit einem Funkscanner ein entsprechendes "Knacken" hören. 
Allerdings empfange ich keine Daten. Ich vermute, dass etwas bei der 
SPI-Kommunikation schief läuft.

Der ATTiny pollt regelmäßig den FIFO-Puffer des RFM12. Eine solche 
Kommunikation habe ich mittels Logic-Analyzer aufgezeichnet und an 
meinen Beitrag angehängt. Schön zu sehen sind die Daten, welche an das 
RFM12 gesendet werden:

0x82C8 //RX on
0xCA81 //Set FIFO mode
0xCA83 //Enable FIFO
0xB000 //Abfrage des ersten Byte
0xB000 //Abfrage des zweiten Byte
0xB000 //Abfrage des dritten Byte
0xB000 //Abfrage des vierten Byte
0X8208 //RX deaktivieren

Das Problem ist aber nun, dass scheinbar auf jeden Befehl eine Antwort 
gesendet wird. Nach meinem Verständnis sollte eine Antwort nur dann 
gesendet werden, wenn Statusregister abgefragt werden. Die Antworten 
variieren dabei scheinbar zufällig und sind mal 0xF8F8, 0xF9F9 etc.

Ich bin nun schon das ganze Wochenende mit dem Problem beschäftigt, habe 
schon das Forum durchsucht und auch Google bringt mich nicht wirklich 
weiter. Leider ist das Pollin-Datenblatt auch extrem kurz gehalten :(

Hat jemand von euch einen Tipp für mich? Sehe ich den Wald vor lauter 
Bäumen nicht?

viele Grüße
Stephan
Angehängte Dateien:
OP #2323884
Lesenswert?
• ▲
▼
Noch als Ergänzung:

Initialisiert wurde der RFM12-Chip mit folgenden Befehlen:
1
  rf12_trans(0x80D7); // Enable FIFO
2
  rf12_trans(0xC2AB); // Data Filter: internal
3
  rf12_trans(0xCA81); // Set FIFO mode
4
  rf12_trans(0xE000); // disable wakeuptimer
5
  rf12_trans(0xC800); // disable low duty cycle
6
  rf12_trans(0xC4F7); // AFC settings: autotuning: -10kHz...+7,5kHz

Der ATTiny85 läuft über den internen Oszillator mit 8 MHz (eine 
Verringerung auf 1 MHz führte zu keiner Verbesserung).
OP #2370302
Lesenswert?
• ▲
▼
Für alle, die dasselbe Problem haben:

* CS darf nicht dauerhaft auf GND gezogen werden. Eine Änderung wird 
benötigt um eine Kommunikation zu beenden
* Man sollte auch in der Lage sein, die Anzahl der Nullen bei F_CPU 
richtig abzuzählen. Dann klappt es auch mit den Timings ;)


Mein Problem ist also gelöst!

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.