www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik avr mega8, Bascom und rfm01/rfm02


Autor: Steve Bennet (stevensen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuchs mal mit einem neuem Thread. Wie im Betreff, möchte gerne 2 
mega8 mit Bascom funkmäßig verbinden. Dazu nutze ich den Sender rfm02 
und den empfänger rfm01. Jetzt soll der Empfänger die Syncsequenz AA AA 
AA 2Dd4 .. Daten vom Sender erkennen, macht er aber nicht. ich weiss 
nicht wo es hängt hiermal der Quellcode in Bascom für den Sender:

$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600


Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , 
Polarity = Low , Phase = 0 , Clockrate = 128 , Noss = 1

Config Debounce = 30

Declare Function Rf12_trans(byval Wert As Word) As Word
Declare Function Low_trans(byval Mywert As Byte ) As Byte
Ddrc = &B11111000
Ddrd = &B00011111
Ddrb = &B00101110
Spi_cs Alias Portb.2                                        ' SS-Pin

Spiinit

Dim Temp As Word
Dim Temp_byte As Byte
Dim A(8) As Byte

 Set Spi_cs
 A(1) = &HAA
 A(2) = &HAA
 A(3) = &HAA
 A(4) = &H2D
 A(5) = &HD4

 A(6) = &H45
 A(7) = &H46
 A(8) = &H47

 Waitms 150
'initsequenz
  Temp = Rf12_trans(&Hc0e0)
  Temp = Rf12_trans(&H8f80)
  Temp = Rf12_trans(&Hc2a0)
  Temp = Rf12_trans(&Ha620)
  Temp = Rf12_trans(&Hb400)
  Temp = Rf12_trans(&H8f80)
  Temp = Rf12_trans(&Hd2c0)
  Temp = Rf12_trans(&Hc823)
  Temp = Rf12_trans(&Hc038)

   Reset Spi_cs
      Temp_byte = &HC6
      Spiout Temp_byte , 1
    Set Spi_cs
  Waitms 100

Do
 Waitms 100
    Reset Spi_cs
      Temp_byte = &HC6
      Spiout Temp_byte , 1
    Set Spi_cs
  Waitms 100

   Reset Spi_cs

   Spiout A(1) , 1
   Waitus 10
   Spiout A(2) , 1
   Waitus 10
   Spiout A(3) , 1
   Waitus 10
   Spiout A(4) , 1
   Waitus 10
   Spiout A(5) , 1
   Waitus 10
   Spiout A(6) , 1
   Waitus 10
   Spiout A(7) , 1
   Waitus 10
   Spiout A(8) , 1
   Waitus 10

   Set Spi_cs


  Set Spi_cs
  Waitms 100
  Reset Spi_cs
  Waitms 100

 Waitms 100
    Reset Spi_cs
      Temp_byte = &HC4
      Spiout Temp_byte , 1
    Set Spi_cs
  Waitms 100
Waitms 100
    Reset Spi_cs
      Temp_byte = &H64
      Spiout Temp_byte , 1
    Set Spi_cs
  Waitms 100


Loop

End

Function Rf12_trans(byval Wert As Word) As Word
  Local Lowbyte As Byte
  Local Highbyte As Byte

  Lowbyte = Wert And 255
  Shift Wert , Right , 8
  Reset Spi_cs

  Highbyte = Spimove(wert)
  Lowbyte = Spimove(lowbyte)
  Set Spi_cs

  Temp = Highbyte * 256
  Temp = Temp + Lowbyte
  Rf12_trans = Temp
End Function

Ist nicht der schönste Code, aber vielleicht fällt ja jamenden was 
gravierendes auf.
Der SDO im Empänger soll auf high springen wenn was im FIFO ist.

gruss stevensen

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steve Bennet wrote:
> Ist nicht der schönste Code, aber vielleicht fällt ja jamenden was
> gravierendes auf.

Ja, der RF02 hat kein FIFO. Du kannst nicht einfach die Daten senden, 
sondern musst Bit für Bit anlegen. Siehe RF02 Datenblatt, Seite 14.

Autor: bascom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Steve Bennet (stevensen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo benedikt,

danke für den Tipp, die Aussage das Rfm02 kein FIFO hat, hatte ich in 
verschiedenen Threads gelesen, habe das aber nicht einordenen können. 
Leider kann ich auch nicht gut C, besonders nicht diese sehr krytpischen 
Ausdrücke. Ich habe mir deine Beispiele in C angeschaut, aber noch nicht 
ganz verstanden. Gibt es eine Delayzeit (z.b. abhängig von der 
einsgestellten Baudzeit) wenn ich die einzelnen Bits schicke? Und wann 
ändert sich nIRQ?
Das "Data Transmit Command" muß ich ja, kurz bevor ich Daten schicken, 
senden. Das wäre dann noch ein "normaler" SPI-Versand, danach die Daten 
bitweise?
Wenn ich deine RFM01/RFM02 Beispiele ausprobieren möchte, kann ich da 
die Taktfrequenz von 10 auf 8 MHz ändern, ohne das es Timingprobleme 
gibt? Wären sie auch auf einem Mega8 lauffähig, wenn ich die Ports 
ändere? Ich hoffe ich verschwende nicht zu sehr deine Zeit und würde 
mich freuen wenn Du mir die Anzworten geben könntest.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.