PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RF12 - 433Mhz Funkmodul von Pollin. Fragen zum Code



Kai.s0r
03.06.2010, 22:27
Hallo,

ein Freund und ich beschäftigen uns seit einigen Tagen mit den 433 - Mhz - Funkmodulen vom Pollin. Nun haben wir im Internet gestöbert und ein Programm gefunden und das nun unseren Bedürfnissen angepasst. Aber irgendwie Funktioniert das nicht so ganz! So wie wir das geplant haben, müsste der Empfänger eigentlich, nachdem er Initialisiert wurde die Empfangenen Werte an den Computer senden. Aber er sendet nur :

0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-

was ja eigentlich schonmal nicht so schlecht ist, aber es bedeutet ja, das er nichts empfängt. Nun wollen wir auf Fehlersuche gehen, aber wir wissen nicht genau, wo wir anfangen sollen, da es ja eigentlich überall dran liegen könnte (Programm, Anschlussbelegung, Antenne etc.)

Hier wollte ich nun einmal Fragen, ob das Proggramm zum senden, sowie zum Empfangen soweit vernünftig ist, oder ob wir irgendetwas falsch gemacht haben (wiegesagt..wir sind eher Bascom - Anfänger und müssen noch viel lernen )

Danke euch schonmal für eure Hilfe ](*,) ](*,)

Kai.s0r
03.06.2010, 22:31
Hallo,

ein Freund und ich beschäftigen uns seit einigen Tagen mit den 433 - Mhz - Funkmodulen vom Pollin. Nun haben wir im Internet gestöbert und ein Programm gefunden und das nun unseren Bedürfnissen angepasst. Aber irgendwie Funktioniert das nicht so ganz! So wie wir das geplant haben, müsste der Empfänger eigentlich, nachdem er Initialisiert wurde die Empfangenen Werte an den Computer senden. Aber er sendet nur :

0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-

was ja eigentlich schonmal nicht so schlecht ist, aber es bedeutet ja, das er nichts empfängt. Nun wollen wir auf Fehlersuche gehen, aber wir wissen nicht genau, wo wir anfangen sollen, da es ja eigentlich überall dran liegen könnte (Programm, Anschlussbelegung, Antenne etc.)

Hier wollte ich nun einmal Fragen, ob das Proggramm zum senden, sowie zum Empfangen soweit vernünftig ist, oder ob wir irgendetwas falsch gemacht haben (wiegesagt..wir sind eher Bascom - Anfänger und müssen noch viel lernen )

Danke euch schonmal für eure Hilfe ](*,) ](*,)

Edit

Bei den Programmen sind einige sachen vom "Ursprungsprogramm" noch als Kommentare. Wir haben sie mal drin gelassen um da noch was draus zu lernen, aber nur als Kommentare halt. Nicht weiter stören lassen

Eisbaeeer
04.06.2010, 07:52
Hallo,

ein Freund und ich beschäftigen uns seit einigen Tagen mit den 433 - Mhz - Funkmodulen vom Pollin. Nun haben wir im Internet gestöbert und ein Programm gefunden und das nun unseren Bedürfnissen angepasst. Aber irgendwie Funktioniert das nicht so ganz!
Danke euch schonmal für eure Hilfe ](*,) ](*,)

Herzlich willkommen bei den RFM12 Nutzern :-)

Es ist um einiges einfacher, die fertige LIB zu benutzen. Dort findet ihr auch Programmbeispiele für das Modul und bestimmt auch Hilfe.
http://comwebnet.weimars.net/forum/showthread.php?tid=325&pid=2147#pid2147

Gruß Eisbaeeer

Kai.s0r
05.06.2010, 00:18
Danke schonmal! Wir haben jetzt etwas am Programm verändert und denken, dass es jetzt eigentlich auch klappen sollte! Nur der Empfänger empfängt immernoch nur 0-0-0 usw.

Beide MC sind auf externen Clock, und laufen auch, daher hoffe ich einfach mal, dass die nicht, warum auch immer kaputt sind und vernüntig funktionieren.

Kann es an sachen, wie antenne oder so liegen? Wir benutzen einfach nur so einen ca 15 cm langen draht :-D

wkrug
05.06.2010, 09:42
Nutzt Ihr den FiFo Puffer beim Empfänger.
Der kann auf verschiedene Weise getriggert werden, braucht aber bei manchen Modi des "Aufsperrcode" 0xAA 0xAA 0xAA 0x2D 0xD4 bevor die eigentliche Übertragung beginnt. Eventuell ist ja das euer Problem ?
Das 0x bedeutet, das die folgende Sequenz eine HEX Zahl ist - Das wird ja soweit ich weiß bei Bascom anders deklariert.
Also 0xAA = 170 Dezimal!

Kai.s0r
05.06.2010, 10:02
Danke dir!

Temp = Rf12_trans(&Hb8aa)
Temp = Rf12_trans(&Hb8aa)
Temp = Rf12_trans(&Hb8aa)
Temp = Rf12_trans(&Hb82d)
Temp = Rf12_trans(&Hb8d4)

Dürfte das doch sein, oder? Wenn das soweit stimmt, ist das leider nicht die Lösung, da wir das bereits "eingebaut" haben :)

wkrug
05.06.2010, 10:13
Bin leider kein BASCOM Jünger und kann deshalb mit eueren Codes nicht so viel anfangen sorry !

Eisbaeeer
06.06.2010, 13:33
Kann es an sachen, wie antenne oder so liegen? Wir benutzen einfach nur so einen ca 15 cm langen draht :-D

Also nein, an der Antenne liegt es nicht. 15cm sind zwar nicht optimal, aber sollte gehen.

Damit Euch geholfen werden kann, solltet ihr noch ein paar Infos bekanntgeben. Aus Eurem Script kann ich erahnen, dass ihr keinen FIFO benutzt. [-X Einfacher wäre es, wenn ihr die Daten aus dem RFM12 per FIFO auslest. Dazu muss aber dann der FFIT an einen Interrupt.

Wenn ihr mal sagen würded, was ihr überhaupt vorhabt, könnte man Euch auch eine Empfehlung aussprechen, wie der RFM12 angeschlossen werden soll und wie das Programm aussehen könnte. Es gibt nämlich zahlreiche Möglichkeiten.
Weiterhin ist die Frage, ob ihr mehere RFM12 vernetzen möchtet oder nur eine 2-Wege Kommunikation?

Wie in meinem ersten Post erwähnt, ist es am einfachsten, wenn ihr mit Bascom arbeiten möchete, die Include zu nehmen. Und Datenblätter lesen.

Gruß Eisbaeeer

Kai.s0r
06.06.2010, 13:56
Eigentlich haben wir nur vor eine 2-Wege Kommunikation zu basteln und damit dann immoment einfach mal nur einige Zahlen vom einen Funkmodul zum anderen zu senden. Dieses soll die dann an den PC ausgeben.

Das Initialisieren der beiden Funkmodule klappt auch und nun geht es ans senden, bzw ans Empfangen. Wir benutzen im Prinzip die selben Code-Stücke, wie aus der Datei, die du verlinkt hast, nur ohne Rf12-Ready, sowie Rf12-Readys, da ich den genauen sinn von denen nicht verstehe :-D Weiterhin glaube ich, dass der Sender zumindest irgendetwas sendet, da, wenn man ein anderes elektronisches Funkgerät daneben legt, dieses nichtmehr richtig von seiner Funkfernbedienung gesteuert werden kann.

Was ist denn als Antenne optimal?

Gurß

Eisbaeeer
06.06.2010, 14:31
Was ist denn als Antenne optimal?
Gurß

Bei 433 MHz wäre das Lambda/4 = 17cm

Also meine RFM12 werden so intialisiert. Dazu ist es aber nötig, den FFIT an einen Interrupt zu hängen. Immer wenn der RFM12 Daten im FIFO hat, wird die Interrupt Schleife eingesprungen und der RFM12 ausgelesen.


Sub Rf12_init()
Waitms 150
Temp = Rf12_trans(&H0000) ': print Temp '0000 -Status
Temp = Rf12_trans(&Hc0e0) ': print Temp 'C0E0 -Clock Output 10MHz
Temp = Rf12_trans(&H80d7) ': print Temp '80D7 -Datareg used,FIFO enabled,433MHz,CL=15pF
Temp = Rf12_trans(&Hc2ab) ': print Temp 'C2AB -Datafilter:Autolock-slow mode-Digital Filter,f1=1;f0=1
Temp = Rf12_trans(&Hca81) ': print Temp 'CA81 -FIFO/ResetMode (Brownoutdektion ausgeschaltet)
Temp = Rf12_trans(&He000) ': print Temp 'E000 -WakeUP Timer
Temp = Rf12_trans(&Hc800) ': print Temp 'C800 -LowDuty Cycle
Temp = Rf12_trans(&Hc4f7) ': print Temp 'C4F7 -AFC-command -eingeschaltet
End Sub

So wird der Empfänger eingeschaltet:



'-------------------------------------------------------------------------------
' RF12 einschalten
'-------------------------------------------------------------------------------
Rf12_rxd_on:
Lv = 1
Rf_sync = 0 'sync-Flag
Rf_rxd = 0
Rf12_string = ""
Framelength = 6 'erst mit 3.Byte kann die Framelänge berechnet werden
Temp = Rf12_trans(&H82c8) 'Power CMD: Empfänger an, Quarz-clk läuft weiter
Temp = Rf12_trans(&Hca81) 'FIFO&Reset CMD: sensitiver Reset aus (Brownout)
Temp = Rf12_trans(&Hca83) 'FIFO&Reset CMD: Synchroner Zeichenemfang (warte auf Startzeichen: 2DD4)
Enable Int0
Return

Es gibt schon ein fertiges Programm für den RFM12 für eine Funkbrücke.

Grüße Eisbaeeer

Kai.s0r
08.06.2010, 18:11
Ist der Interrupt denn zwingend nötig? Wenn wir doch mit einer loop den spi_sdo abfragen, ist das doch ähnlich, oder?



Das Initialisieren haben wir genauso wie Eisbaeeer gemacht. Ist das eigentlich normal, dass der Wert Temp dann immer den Wert 0 hat?



Wir haben im Programm außerdem im sub tx_data die statusabfrage gemacht (&H0000) und bekommen komische (zufalls)zahlen zurück, welche aber nur ca. 10 bit groß sind. Leider sind sie immer verschieden. Das ist immerhin der erste Beweis, das die funkmodule wenigstens irgendetwas machen =D> =D>



Vielleicht liegt der Fehler auch im Anschluss. Wir haben die Module so angeschlossen:

SDI über 1k an MOSI
SDO über 1k an MISO
SCK über 1k an SCK
nSEL über 1k an SS
FSK/DATA/nFFS über 10k an VDD
VDD an +5V
GND an GND (beide GND's)
CLK an XTAL1
ANT an ca. 15cm Draht

Könnte der Fehler an den 1k's liegen? Aber immerhin bekommen wir bei der statusabfrage eine Zahl zurück, an den anderen Befehlen aber nicht. Das würde ja dagegen sprechen...

Vielen Dank schonmal [-o<

mat-sche
08.06.2010, 20:31
Hi Ihr's,

leider kann ich dem Fragenstellenden keine Antwort geben aber vielleicht kann uns gemeinsam geholfen werden.

Also ich versuche nun auch schon seit geraumer Zeit meine RFM12S 868Mhz zum Laufen zu bringen. Erfolge habe ich auch, eine funktionierende Funkbrücke läuft. Nun wollt ich aber nun die Lib, wie Eisbaeeer beschrieben, nutzen. Habe alle wichtigen Variablen an meine Umgebung angepasst. als Sender nutze ich einen Mega128 (Auszüge):


$regfile = "m128def.DAT"
$crystal = 16000000
$baud = 38400
$hwstack = 100
$swstack = 100
$framesize = 100
Const Rf12freq = 868.35 'Kanal-Einstellung
Const Rf12baud = 19200 'Baudrate
Const Myadress = 10 'NodeAdress
Const Snap_sync = &H54
'Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 16 , Noss = 0 , Spiin = 0
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 128 , Noss = 1

Spi_cs Alias Portb.0 : Ddrb.0 = 1 'Config Spi_cs = Output chipselect
Spi_sdo Alias Pinb.3 ' MISO-PIN
Set Spi_cs
Spiinit
Dim Lv As Byte
Dim Temp_rfm As Word
Dim Rf12_data(40) As Byte , Rf12_s As String * 40 At Rf12_data Overlay
Dim Byteanzahl As Byte , Framelength As Byte , Crclength As Byte 'Anzahl Sendebytes
'Uart-Variablen
Dim Rx_data As Byte , N As Byte , Rxd_ready As Bit
Dim Buffer(40) As Byte , S_buffer As String * 40 At Buffer Overlay
Goto Startup
$include "inc_RF12-Treiber.bas"
Startup:
Call Rf12_init ' ein paar Register setzen (z.B. CLK auf 10MHz)
Call Rf12_setfreq(rf12freq) ' Sende/Empfangsfrequenz auf 433,92MHz einstellen
Call Rf12_setbandwith(4 , 1 , 4) ' 200kHz Bandbreite, -6dB Verstärkung, DRSSI threshold: -79dBm
Call Rf12_setbaud(rf12baud) ' 19200 baud
Call Rf12_setpower(0 , 6)

.....
Print "RFM daten senden "
Byteanzahl = Rnd(10) 'zum Test zufällige Nutzdatenlänge 0...32Byte
Rf12_err = 0 'Error Flag löschen
Gosub Sendsnapframe
If Rf12_err = 1 Then
Print "Timeout beim Senden aufgetreten" 'DebugInfo: Problem beim senden
End If


Der Code läuft soweit durch, ein Timeout beim Senden bekomme ich nicht. Den Sender auf Funktion kann ich nicht durch ext. Möglichkeiten prüfen.

Als Empfänger nutze ich ebenfalls den RFM12S 868Mhz:


$regfile = "m644pdef.DAT"
$crystal = 14745600
$baud = 57600
Baud = 57600
$hwstack = 40
$swstack = 40
$framesize = 40
$lib "glcdKS108.lbx" 'Include the library for the KS-108 controler

'$sim

'------------------------------------------------------------------------------- Grafik LCD
Config Graphlcd = 128 * 64sed , Dataport = Portc , Controlport = Porta , Ce = 0 , Ce2 = 1 , Cd = 2 , Rd = 3 , Reset = 5 , Enable = 4
Cls
Setfont Font5x5
'------------------------------------------------------------------------------- Autoflash über RS232
Dim Rs232_flash As Byte
Dim Rs232_str As Byte
'-------------------------------------------------------------------------------SNAP
Const Rf12freq = 868.35 'Kanal-Einstellung
Const Rf12baud = 19200 'Baudrate
Const Myadress = 20 'Nodeadresse vom Teilnehmer
Const Snap_sync = &H54 'Synczeichen SNAP-Protokoll
Const Maxchar = 32

Dim Lv As Byte
Dim Temp As Word
Dim Rf12_data(40) As Byte , Rf12_s As String * Maxchar At Rf12_data Overlay
Dim Rf_rxd As Bit , Rf_sync As Bit
Dim Ndb As Byte , Framelength As Byte , Crc As Byte
Dim Byteanzahl As Byte 'Anzahl Sendebytes
Dim S As String * 10
Sync Alias Rf12_data(1)
Hdb1 Alias Rf12_data(2)
Hdb2 Alias Rf12_data(3)
Dab1 Alias Rf12_data(4)
Sab1 Alias Rf12_data(5)

'----------[Hardwaresetup für Pollin Funkboard]---------------------------------------------
'PortD.3-->INT1 an FFIT --Interrupt(High) wenn FiFO-Buffer voll (ef-Bit set)

Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 128 , Noss = 1
' werden benötigt für rf12_ready
' Achtung je nach µC anpassen !!!
' für M8: Spi_cs Alias Portb.2 : Spi_sdo Alias Pinb.4 ' SS-Pin
'M32:
Config Portb.2 = Input
Nirq Alias Pinb.2
Config Portb.1 = Output
Fsk Alias Portb.1
Set Fsk
Spi_cs Alias Portb.4 : Ddrb.4 = 1 'Config Spi_cs = Output chipselect
Spi_sdo Alias Pinb.6 ' MISO-PIN
Set Spi_cs
Spiinit 'init the spi pins
Goto Startup

$include "inc_RF12-Treiber.bas" 'RF12 Treiber einbinden

'--------[Initialisierung]------------------------------------------------
Startup:
Config Int1 = Rising
On Int1 Ffit_isr:
On Urxc Rxd_isr: 'Interrupt Empfange String von RXD
Enable Urxc 'Einschalten
Enable Interrupts 'Zulassen


Print "Init RF12 ..."
Call Rf12_init ' ein paar Register setzen (z.B. CLK auf 10MHz)
Call Rf12_setfreq(rf12freq) ' Sende/Empfangsfrequenz auf 433,92MHz einstellen
Call Rf12_setbandwith(4 , 1 , 4) ' 200kHz Bandbreite, -6dB Verstärkung, DRSSI threshold: -79dBm
Call Rf12_setbaud(rf12baud) ' 19200 baud
Call Rf12_setpower(0 , 6) ' 1mW Ausgangangsleistung, 120kHz Frequenzshift
Print "Init RF12 Done"


'----------[Mainloop]------------------------------------------------------
Rf12_s = ""
Gosub Rf12_rxd_on

Do
'************************************************* ****************************** 'Automatisches Flashen über RS232

Rs232_flash = Ischarwaiting()
If Rs232_flash = 1 Then 'wurde was über RS232 empfangen?
Rs232_str = Inkey() 'Empfangspuffer auslesen
If Rs232_str = 123 Then 'vom MCS-Programmer geschickte "123" empfangen?
Goto &HF800 'Sprungadresse zum Startbereich des Bootloaders
End If
End If

If Rf_rxd = 1 Then
Print "RX ready, Framelength: " ; Framelength
Gosub Framehandler
Gosub Rf12_rxd_on
End If
'do anything....



Print "neuer Mainloop"
Wait 1
Loop
End

'----------[Frameverarbeitung SNAP-Protokoll]------------------------------------
Framehandler:

Print "Frame: "; 'Debugausgabe
For Lv = 1 To Framelength
Print Hex(rf12_data(lv)) ; " ";
Next Lv
Print
If Sync = Snap_sync Then 'sync.Zeichen IO?
If Hdb2 = &H50 Then '1Byte Adressierung?
'if HDB2= NDB then '0..32 Datenbyte
If Dab1 = Myadress Then 'Adresse prüfen
Print "Das war für mich!...von Nr.:" ; Rf12_data(5) 'Datenverarbeitung
Swap Dab1 , Sab1 'Adressen umdrehen für Rücksenden
Crc = Framelength - 2 'nur temporär Länge für crc-Check
Crc = Crc8(rf12_data(2) , Crc)
If Crc = Rf12_data(framelength) Then 'CRC OK?
Print "CRC OK! => " ; Crc
' Send ACK (i.e tell master that packet was OK)
' Set ACKs bit in HDB2 (xxxxxx10)
Hdb2 = Hdb2 Or &B00000010
Hdb2 = Hdb2 And &B11111110
'do ...
Gosub Senden 'Anwortframe senden--> nur als Slave
Gosub Cmd_handler
'RF12_data(2 <--- ackno machen
Else
Print "CRC Bad => " ; Crc
' Send NAK (i.e tell master that packet was bad)
' Set ACK bits in HDB2 (xxxxxx11)
Hdb2 = Hdb2 Or &B00000011
Gosub Senden 'Anwortframe senden--> nur als Slave
End If
Else
Print "geht mich nix an!...von Nr.:" ; Rf12_data(5)
End If
'else
'print "Framelength NIO!!!"
'end IF
Else
Print "no 1Byte Adress!!!"
End If
Else
Print "no Syncbyte!!!"
End If
Waitms 10

Return



'------[CMD-Interpreter]-------------------------------------
Cmd_handler: 'Auswertung der Nutzdaten.... nur als Denkhilfe :)
'(
Select Case Rf12_data(7)
Case 0 :
Case 1 : Gosub Rolloaufmachen
Case 2 : Gosub Rollozumachen
Case 10 : Gosub Holetemperatur
End Select
')
For Lv = 1 To 20
'mache was...
Waitms 100
Next Lv
Return




'----------[RF12 Empfänger einschalten]---------------------------
Rf12_rxd_on:
Lv = 1
Rf_sync = 0 'sync-Flag
Rf_rxd = 0
Rf12_s = ""
Framelength = 6 'erst mit 3.Byte kann die Framelänge berechnet werden
Temp = Rf12_trans(&H82c8) 'Power CMD: Empfänger an, Quarz-clk läuft weiter
Temp = Rf12_trans(&Hca81) 'FIFO&Reset CMD: sensitiver Reset aus (Brownout)
Temp = Rf12_trans(&Hca83) 'FIFO&Reset CMD: Synchroner Zeichenemfang (warte auf Startzeichen: 2DD4)
Enable Int1
Return

'----------[RF12 Daten Senden]-------------------------------------
Senden:

' Waitms 1
Print "Sende: "
For Lv = 1 To Framelength
Print Hex(rf12_data(lv)) ; " ";
Next Lv
Call Rf12_txdata(framelength)
Waitms 10

Return

'----------[Uart ISR(Daten vom PC)]--------------------------------
Rxd_isr:
S = S + Chr(udr)
Return

'----------[INT1 ISR(Daten vom RF12)]--------------------------------
Ffit_isr:
Temp = Rf12_trans(&Hb000)
Temp = Temp And &H00FF
If Temp = &H54 And Rf_sync = 0 Then 'Synchronzeichen empfangen-->an 1 Stelle
Rf_sync = 1
Lv = 1
End If
Rf12_data(lv) = Temp 'Empfangsbyte in Buffer legen
If Lv = 3 Then 'ermitteln der Anzahl Datenbytes (SNAP)
Ndb = Temp And &H0F 'unteres Nipple von HDB1 enthält Datenlänge
Select Case Ndb '6Byte<=sync+HDB2+HDB1+DAB+SAB+CRC
Case 0 To 8 : Framelength = 6 + Ndb '6-14 (0--8 Datebyte)
Case 9 : Framelength = 6 + 16 '22 (16 Datenbyte)
Case 10 : Framelength = 6 + 32 '38 (32 Datenbyte)
End Select
End If
If Lv >= Framelength Then 'alles eingetroffen
Rf_rxd = 1 'Flag setzen und Empfänger abschalten
Temp = Rf12_trans(&H8208) 'Power_CMD: Empfänger aus, Quarz-clk läuft weiter
Disable Int1
End If
Incr Lv 'Zeiger incr
Return

$include "font5x5.font"


Leider bringt mir der Empfänger keine Informationen. So wie ich es sehe, trifft leider kein Interrupt auf und somit kommt es nicht zur Auswertung.

@Eisbaeeer:

Kannst Du mir ein paar Tips geben wie ich weiter machen kann? Im Übrigen sind es die fertigen Cods aus comwebnet.weimars.net/forum.

DAnke & Gruß MAT

Eisbaeeer
09.06.2010, 06:35
Ist der Interrupt denn zwingend nötig? Wenn wir doch mit einer loop den spi_sdo abfragen, ist das doch ähnlich, oder?


Nein, Interrupt ist nicht nötig, vereinfacht aber die Anbindung ungemein.



Das Initialisieren haben wir genauso wie Eisbaeeer gemacht. Ist das eigentlich normal, dass der Wert Temp dann immer den Wert 0 hat?


Wenn Ihr den so initialisiert wie ich, dann habt ihr den Ausgang am RFM12 für Interrupt eingeschaltet.

@mat-sche
Hast du vorher auch schon mit dem SNAP-Protokoll gearbeitet (bei deiner Funkbrücke?) oder willst du das jetzt zusätzlich implementieren?

Mit dem SNAP kannst du ein Master-Slave Netzwerk bauen und gezielt Slaves ansprechen. Dazu ist ToAdress und MyAdress gedacht. Ich kann ja mal über deinen Code drüberschauen. Hier posten oder per Mail.

Einer meiner RFM12 Nodes kann hier angeschaut werden. Läuft mit dem SNAP-Protokoll. http://weimars.dyndns.org

Hinter den Kulissen: http://www.weimars.net/index.php/hobby

Grüße Eisbaeeer

Kai.s0r
09.06.2010, 13:37
Hallo,

wie macht man das denn ohne Interrupts? Bzw was muss man im Programm (also beim Initialisieren) für Zahlen ändern, sodass es auch ohne Interrups funktioniert ? (Kann man das denn dann so einfach ändern und funktioniert das dann :-D, denn es soll langsam endlich mal klappen) :cry: :cry:

Eisbaeeer
09.06.2010, 18:43
Hallo,

wie macht man das denn ohne Interrupts?

Das müsstet ihr in den Datenblättern nachseheh. Auf jeden Fall muss die Initialisierung andere Hex-Werte beinhalten. Ich kann euch nochmals nur empfehlen, die Interrupts zu nutzen. Ist um einiges einfacher.

Gruß Eisbaeeer

Kai.s0r
10.06.2010, 16:27
Hallo,

wir haben uns nun entschlossen es, wie du gesagt hast, mit interrupts zu machen. Was macht der Interrupt denn genau, bzw wann in welchem Fall wird der Interrupt ausgelöst?

Weiterhin verstehen wir die genaue Funktion des Fifos nicht? Kann uns vielleicht jemand die genau Funktionsweise erklären (nach einiger Zeit im Datenblatt, wissen wir, dass es eine Art Speicher für die Empfangen, bzw die zu sendenden Daten sind, welche man dann irgendwie auslesen kann)

Abschließend wäre es echt sehr nett von euch, uns zu verraten, welche Pins wir noch zusätzlich anschließen müssen (ich habe oben ja bereits gepostet, was wir bereits angeschlossen haben)

Ich hoffe einfach, dass ihr uns helfen könnt und wir das Ding endlich ans Laufen bekommen! Gruß

Richard
10.06.2010, 17:37
fifo steht für first in first out also was zuerst abgespeichert ist/wurde,
wird auch zuerst wieder ausgelesen. Anders würde z.B. "hallo"
"ollah" ergeben. Bei C kann ich euch nicht helfen, unter Bascom
reichen wenige Zeilen um den 05 auszulesen....siehe Beispielcode
von Robotic Hardware.

Gruß Richard