rolfw20
03.10.2009, 22:16
Hallo
ich habe mir einen Bausatz für einen RFID leser gekauft. Er funktioníert auch wunderbar. Als ich jedoch das Basicprogramm auf meine bedürfnisse ändern wollte bekam ich von Bascom folgende Fehlermeldungen:
"Unknown CONFIG parameter [HITAG]"
"Unknown CONFIG parameter [DEMOD]"
"Unknown CONFIG parameter [INT]"
Hat jemand eine Ahnung was ich falsch mache?
Ist vieleicht meine Bascom Version veraltet?
Version 1.11.8.3 document build 7
'-------------------------------------------------------------------------------
' Beispielprogramm für den Pollin-Electronic RFID-Bausatz, ArtNr:810059
' Es dient zum Auslesen einer HITAG RFID-Karte mittels eines Atmel U2270B.
' Âusschnitte des Codes wurden von der Beispielsoftware für den Em4095 von
' www.mcselec.de übernommen und für den U2270B abgeändert
' Als Controller wird ein AT-Tiny 2313 verwendet.
' Sie handeln auf eigene Gefahr!
' Bei diesen Daten handelt es sich um Beispielanwendungen die nicht für den produktiven
' Einsatz geacht sind.
' Pollin Electronic gibt keine Garantien irgendeiner Art , weder ausdrücklich
' noch implizit , einschließlich unbegrenzt aller Garantien der Verwendbarkeit
' dieser Daten für einen bezeichneten oder nicht bezeichneten Zweck.
' Pollin Electronic ist nicht haftbar für jedwede Folgeschäden die aufgrund
' der Benutzung dieser Daten entstehen. Dies gilt auch dann, wenn
' Pollin Electronic von der Möglichkeit eines solchen Schadens unterrichtet worden ist.
' Firma: Pollin-Electronic-GmbH
' Autor: Christian Schmailzl
'------------------------------------------------------------------------------------------------------------------
$regfile = "2313def.dat" ' Controller : Tiny 2313
$baud = 9600 ' Übertragungsrate der UART-Schnittstelle
$crystal = 8000000 ' Taktfrequenz des Controllers
Dim Tags(5) As Byte '"Tags" als Array mit 5 Bytes definieren bytes
Dim Zaehler As Byte '"Zähler" als Byte definieren
Dim Wert As String * 5 '"Wert" als String mit 5 Hexwerten definieren
Config Portb = Output 'Port B als Ausgang definieren
Config Hitag = 64 , Type = Em4095 , Demod = Pind.3 , Int = @int1 'konfiguriert den Timer und die Variablen für HITAG
Config Lcdpin = Pin , Rs = Portb.5 , E = Portb.4 , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 'konfiguriert die LCD-Belegung
Config Lcd = 16 * 2 'konfiguriert die Displaygröße
_cfe Alias Portd.2 '_cfe wird dem Portd.2 zugewiesen
Config _cfe = Output '_cfe wird als Ausgand definiert
_cfe = 1 '_cfe wird high
Config Debounce = 30 'Tastenentprellung = 30ms
On Int1 Checkints Nosave 'Int1 wird als Eingang für HITAG verwendet
Mcucr.isc10 = 1 ' entspricht: config INT1 = changing ( der Befehl wird vom MC unterstützt,
Mcucr.isc11 = 0 ' beim 2313 aber nicht von Bascom)
Enable Interrupts 'Enable all interrupts
Locate 1 , 1 'Cursor am Display in Zeile 1, ganz links
Lcd "RFID-Modul" ' Text schreiben
Locate 2 , 1 'Cursor am Display in Zeile 1, ganz links
Lcd "with U2270B" ' Text schreiben
Set Portb.6 ' Led 1 einschalten
Set Portb.7 ' Led 2 einschalten
Wait 2 ' Warte 2 Sekunden
Reset Portb.6 'Led 1 ausschalten
Reset Portb.7 ' Led 2 ausschalten
Main: ' ab hier beginnt das Hauptprogramm
Do ' Do-Schleife
Cls 'Display löschen
Lcd "Check..." ' Text schreiben
If Readhitag(tags(1)) = 1 Then ' INT1 wird enabled
For Zaehler = 5 To 1 Step -1 ' For-Schleife beginnend von 5 nach 1; rückwärts zählend
Wert = Wert + Hex(tags(zaehler)) ' "Wert" = bestehender inhalt in der Variable + gerade gelesenen
' Tag an Position vom Zähler
Next ' Ende For-Schleife
Toggle Portb.6 ' Led 1 Zustand wechseln
Gosub Senden ' gehe zu Unterroutine
Toggle Portb.6 ' Led 1 Zustand wechseln
End If ' Ende der If-Abfrage
Debounce Pind.4 , 1 , Taste1 , Sub ' Taste 1 entprellen; wenn gerdückt, zur Unterroutine "Taste1" springen
Debounce Pind.5 , 1 , Taste2 , Sub ' Taste 2 entprellen; wenn gerdückt, zur Unterroutine "Taste2" springen
Debounce Pind.6 , 1 , Taste3 , Sub ' Taste 3 entprellen; wenn gerdückt, zur Unterroutine "Taste3" springen
Waitms 100 ' Warte 500 ms
Loop ' Sprunganweisung zum Anfang Do-Schleife
Taste1: ' Unterroutine "Taste1"
Cls ' Lcd löschen
Locate 1 , 1 ' Cursor in Zeile 1, Position 1
Lcd " T1 " ' Text schreiben
Wait 1 ' warte 1s
Cls ' Lcd löschen
Locate 1 , 1 'Cursor in Zeile 1, Position 1
Lcd " RFID " ' Text schreiben
If _cfe = 1 Then ' If-Abfrage
Locate 2 , 1 ' Cursor in Zeile 2, Position 1
Lcd "ausgeschaltet" ' Text schreiben
Print "ausgeschaltet" ' Text über UART ausgeben
_cfe = 0 ' _cfe auf low setzen -> Treiberstufen des U2270b abschalten
Bitwait Pind.4 , Reset ' Warte bis Pind.4 = low
Waitms 30 ' Warte 30ms ( Entprellung)
Bitwait Pind.4 , Set 'Warte bis Pind.4 = high
Locate 2 , 1 ' Cursor in Zeile 2, Position 1
Lcd "eingeschaltet" ' Text schreiben
Print "eingeschaltet" ' Text über UART ausgeben
_cfe = 1 ' _cfe auf high setzen -> Treiberstufen des U2270b einschalten
Wait 1 ' Warte 1s
Gosub Main ' Sprunganweisung zum Anfang der Hauptschleife
End If ' Ende der If-Anweisung
Return ' Sprunganweisung in die Hauptschleife
Taste2: ' Unterroutine "Taste2"
Cls ' Display löschen
Locate 1 , 1 ' Cursor in Zeile 1, Position 1
Lcd " T2 " ' Text schreiben
Toggle Portb.6 ' Led 1 Zustand wechseln
Wert = "T2" ' Wert = "T2"
Gosub Senden ' Sprungbefehl zur Unterroutine "Senden"
Bitwait Pind.5 , Reset ' Warte bis Pind.5 = low
Return 'Sprunganweisung in die Hauptschleife
Taste3: ' Unterroutine "Taste3"
Cls 'Display löschen
Locate 1 , 1 ' Cursor in Zeile 1, Position 1
Lcd " T3 " ' Text schreiben
Toggle Portb.7 ' Led 2 Zustand wechseln
Wert = "T3" ' Wert = "T3"
Gosub Senden ' Sprungbefehl zur Unterroutine "Senden"
Bitwait Pind.6 , Reset ' Led 2 Zustand wechseln
Return ' Sprunganweisung in die Hauptschleife
Checkints: ' Unterroutine "Checkints:"
Call _checkhitag ' Eine ausgelagerte Unterroutine aufrufen
Return ' Sprunganweisung in die Hauptschleife
Senden: ' Unterroutine "Senden"
Cls ' Display löschen
Locate 1 , 1 ' Cursor in Zeile 1, Position 1
Lcd "send..." ' Text schreiben
Locate 2 , 1 ' Cursor in Zeile 2, Position1
Lcd Wert ' Variable "Wert" schreiben
Print Wert ' Variable "Wert" über Uart ausgeben
Wert = "" ' Inhalt von Variable "Wert" = ""
'Waitms 500 ' warte 500ms
Return 'Sprunganweisung in die Hauptschleife
Ich bin für jede Hilfe Dankbar
Gruß
Rolf
ich habe mir einen Bausatz für einen RFID leser gekauft. Er funktioníert auch wunderbar. Als ich jedoch das Basicprogramm auf meine bedürfnisse ändern wollte bekam ich von Bascom folgende Fehlermeldungen:
"Unknown CONFIG parameter [HITAG]"
"Unknown CONFIG parameter [DEMOD]"
"Unknown CONFIG parameter [INT]"
Hat jemand eine Ahnung was ich falsch mache?
Ist vieleicht meine Bascom Version veraltet?
Version 1.11.8.3 document build 7
'-------------------------------------------------------------------------------
' Beispielprogramm für den Pollin-Electronic RFID-Bausatz, ArtNr:810059
' Es dient zum Auslesen einer HITAG RFID-Karte mittels eines Atmel U2270B.
' Âusschnitte des Codes wurden von der Beispielsoftware für den Em4095 von
' www.mcselec.de übernommen und für den U2270B abgeändert
' Als Controller wird ein AT-Tiny 2313 verwendet.
' Sie handeln auf eigene Gefahr!
' Bei diesen Daten handelt es sich um Beispielanwendungen die nicht für den produktiven
' Einsatz geacht sind.
' Pollin Electronic gibt keine Garantien irgendeiner Art , weder ausdrücklich
' noch implizit , einschließlich unbegrenzt aller Garantien der Verwendbarkeit
' dieser Daten für einen bezeichneten oder nicht bezeichneten Zweck.
' Pollin Electronic ist nicht haftbar für jedwede Folgeschäden die aufgrund
' der Benutzung dieser Daten entstehen. Dies gilt auch dann, wenn
' Pollin Electronic von der Möglichkeit eines solchen Schadens unterrichtet worden ist.
' Firma: Pollin-Electronic-GmbH
' Autor: Christian Schmailzl
'------------------------------------------------------------------------------------------------------------------
$regfile = "2313def.dat" ' Controller : Tiny 2313
$baud = 9600 ' Übertragungsrate der UART-Schnittstelle
$crystal = 8000000 ' Taktfrequenz des Controllers
Dim Tags(5) As Byte '"Tags" als Array mit 5 Bytes definieren bytes
Dim Zaehler As Byte '"Zähler" als Byte definieren
Dim Wert As String * 5 '"Wert" als String mit 5 Hexwerten definieren
Config Portb = Output 'Port B als Ausgang definieren
Config Hitag = 64 , Type = Em4095 , Demod = Pind.3 , Int = @int1 'konfiguriert den Timer und die Variablen für HITAG
Config Lcdpin = Pin , Rs = Portb.5 , E = Portb.4 , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 'konfiguriert die LCD-Belegung
Config Lcd = 16 * 2 'konfiguriert die Displaygröße
_cfe Alias Portd.2 '_cfe wird dem Portd.2 zugewiesen
Config _cfe = Output '_cfe wird als Ausgand definiert
_cfe = 1 '_cfe wird high
Config Debounce = 30 'Tastenentprellung = 30ms
On Int1 Checkints Nosave 'Int1 wird als Eingang für HITAG verwendet
Mcucr.isc10 = 1 ' entspricht: config INT1 = changing ( der Befehl wird vom MC unterstützt,
Mcucr.isc11 = 0 ' beim 2313 aber nicht von Bascom)
Enable Interrupts 'Enable all interrupts
Locate 1 , 1 'Cursor am Display in Zeile 1, ganz links
Lcd "RFID-Modul" ' Text schreiben
Locate 2 , 1 'Cursor am Display in Zeile 1, ganz links
Lcd "with U2270B" ' Text schreiben
Set Portb.6 ' Led 1 einschalten
Set Portb.7 ' Led 2 einschalten
Wait 2 ' Warte 2 Sekunden
Reset Portb.6 'Led 1 ausschalten
Reset Portb.7 ' Led 2 ausschalten
Main: ' ab hier beginnt das Hauptprogramm
Do ' Do-Schleife
Cls 'Display löschen
Lcd "Check..." ' Text schreiben
If Readhitag(tags(1)) = 1 Then ' INT1 wird enabled
For Zaehler = 5 To 1 Step -1 ' For-Schleife beginnend von 5 nach 1; rückwärts zählend
Wert = Wert + Hex(tags(zaehler)) ' "Wert" = bestehender inhalt in der Variable + gerade gelesenen
' Tag an Position vom Zähler
Next ' Ende For-Schleife
Toggle Portb.6 ' Led 1 Zustand wechseln
Gosub Senden ' gehe zu Unterroutine
Toggle Portb.6 ' Led 1 Zustand wechseln
End If ' Ende der If-Abfrage
Debounce Pind.4 , 1 , Taste1 , Sub ' Taste 1 entprellen; wenn gerdückt, zur Unterroutine "Taste1" springen
Debounce Pind.5 , 1 , Taste2 , Sub ' Taste 2 entprellen; wenn gerdückt, zur Unterroutine "Taste2" springen
Debounce Pind.6 , 1 , Taste3 , Sub ' Taste 3 entprellen; wenn gerdückt, zur Unterroutine "Taste3" springen
Waitms 100 ' Warte 500 ms
Loop ' Sprunganweisung zum Anfang Do-Schleife
Taste1: ' Unterroutine "Taste1"
Cls ' Lcd löschen
Locate 1 , 1 ' Cursor in Zeile 1, Position 1
Lcd " T1 " ' Text schreiben
Wait 1 ' warte 1s
Cls ' Lcd löschen
Locate 1 , 1 'Cursor in Zeile 1, Position 1
Lcd " RFID " ' Text schreiben
If _cfe = 1 Then ' If-Abfrage
Locate 2 , 1 ' Cursor in Zeile 2, Position 1
Lcd "ausgeschaltet" ' Text schreiben
Print "ausgeschaltet" ' Text über UART ausgeben
_cfe = 0 ' _cfe auf low setzen -> Treiberstufen des U2270b abschalten
Bitwait Pind.4 , Reset ' Warte bis Pind.4 = low
Waitms 30 ' Warte 30ms ( Entprellung)
Bitwait Pind.4 , Set 'Warte bis Pind.4 = high
Locate 2 , 1 ' Cursor in Zeile 2, Position 1
Lcd "eingeschaltet" ' Text schreiben
Print "eingeschaltet" ' Text über UART ausgeben
_cfe = 1 ' _cfe auf high setzen -> Treiberstufen des U2270b einschalten
Wait 1 ' Warte 1s
Gosub Main ' Sprunganweisung zum Anfang der Hauptschleife
End If ' Ende der If-Anweisung
Return ' Sprunganweisung in die Hauptschleife
Taste2: ' Unterroutine "Taste2"
Cls ' Display löschen
Locate 1 , 1 ' Cursor in Zeile 1, Position 1
Lcd " T2 " ' Text schreiben
Toggle Portb.6 ' Led 1 Zustand wechseln
Wert = "T2" ' Wert = "T2"
Gosub Senden ' Sprungbefehl zur Unterroutine "Senden"
Bitwait Pind.5 , Reset ' Warte bis Pind.5 = low
Return 'Sprunganweisung in die Hauptschleife
Taste3: ' Unterroutine "Taste3"
Cls 'Display löschen
Locate 1 , 1 ' Cursor in Zeile 1, Position 1
Lcd " T3 " ' Text schreiben
Toggle Portb.7 ' Led 2 Zustand wechseln
Wert = "T3" ' Wert = "T3"
Gosub Senden ' Sprungbefehl zur Unterroutine "Senden"
Bitwait Pind.6 , Reset ' Led 2 Zustand wechseln
Return ' Sprunganweisung in die Hauptschleife
Checkints: ' Unterroutine "Checkints:"
Call _checkhitag ' Eine ausgelagerte Unterroutine aufrufen
Return ' Sprunganweisung in die Hauptschleife
Senden: ' Unterroutine "Senden"
Cls ' Display löschen
Locate 1 , 1 ' Cursor in Zeile 1, Position 1
Lcd "send..." ' Text schreiben
Locate 2 , 1 ' Cursor in Zeile 2, Position1
Lcd Wert ' Variable "Wert" schreiben
Print Wert ' Variable "Wert" über Uart ausgeben
Wert = "" ' Inhalt von Variable "Wert" = ""
'Waitms 500 ' warte 500ms
Return 'Sprunganweisung in die Hauptschleife
Ich bin für jede Hilfe Dankbar
Gruß
Rolf