1WVERIFY/de
From MCS Wiki AVR
< 1WVERIFY(Difference between revisions)
(Created page with "= <span class="f_Header">Action</span> = This verifies if an ID is available on the 1wire bus. <span style="font-family: Arial;"> </span> <span style="font-family: Ari...") |
(→Siehe auch) |
||
(9 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | + | = <span class="f_Header">Funktion</span> = | |
− | + | Überprüft, ob eine ID am 1-wire-Bus vorhanden ist. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
Line 17: | Line 17: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | = <span class="f_Header"> | + | = <span class="f_Header">Beschreibung</span> = |
<div style="padding: 0px; margin: 0px 0px 0px 4px;"> | <div style="padding: 0px; margin: 0px 0px 0px 4px;"> | ||
{| width="604" cellspacing="0" cellpadding="1" border="1" style="border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;" | {| width="604" cellspacing="0" cellpadding="1" border="1" style="border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;" | ||
Line 25: | Line 25: | ||
| valign="top" width="100%" style="width: 502px; border: 1px solid rgb(0, 0, 0);" | | | valign="top" width="100%" style="width: 502px; border: 1px solid rgb(0, 0, 0);" | | ||
− | + | Ein Byte-Array, welches die ID enthält, die überprüft werden soll. | |
|- style="vertical-align: top;" | |- style="vertical-align: top;" | ||
Line 32: | Line 32: | ||
| valign="top" width="100%" style="width: 502px; border: 1px solid rgb(0, 0, 0);" | | | valign="top" width="100%" style="width: 502px; border: 1px solid rgb(0, 0, 0);" | | ||
− | + | Der Name des PORT PINx Registers wie z.B. PINB oder PIND. | |
|- style="vertical-align: top;" | |- style="vertical-align: top;" | ||
Line 39: | Line 39: | ||
| valign="top" width="100%" style="width: 502px; border: 1px solid rgb(0, 0, 0);" | | | valign="top" width="100%" style="width: 502px; border: 1px solid rgb(0, 0, 0);" | | ||
− | + | Die Pin-Nummer im Bereich von 0-7. Darf eine numerische Konstante oder Variable sein. | |
|} | |} | ||
Line 45: | Line 45: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | + | Der Rückgabewert der Variable ERR ist 0 wenn die ID auf dem Bus gefunden wurde, ansonsten ist ERR = 1. | |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
Line 53: | Line 53: | ||
= <span class="f_Header">ASM</span> = | = <span class="f_Header">ASM</span> = | ||
− | + | Folgende Assembler-Routinen werden von der mcs.lib aufgerufen. | |
− | _1wire_Search_Next : ( | + | _1wire_Search_Next : (ruft auf _1WIRE, _ADJUST_PIN , _ADJUST_BIT_ADDRESS) |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
Line 61: | Line 61: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | = <span class="f_Header"> | + | = <span class="f_Header">Siehe auch</span> = |
− | [[1WWRITE]] , [[1WRESET]] , [[1WREAD|1WREAD ]], [[1WSEARCHFIRST]], [[1WIRECOUNT]] | + | [[CONFIG 1WIRE]] , [[1WWRITE]] , [[1WRESET]] , [[1WREAD|1WREAD ]] , [[1WSEARCHFIRST]] , [[1WSEARCHNEXT]] , [[1WIRECOUNT]] , [[Using the 1 WIRE protocol|Using the 1wire protocol]] |
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
Line 69: | Line 69: | ||
<span style="font-family: Arial;"> </span> | <span style="font-family: Arial;"> </span> | ||
− | = <span class="f_Header"> | + | = <span class="f_Header">Beispiel</span> = |
<br/><source lang="bascomavr"> | <br/><source lang="bascomavr"> | ||
Line 80: | Line 80: | ||
'commercial addon needed : no | 'commercial addon needed : no | ||
'-------------------------------------------------------------------------------- | '-------------------------------------------------------------------------------- | ||
+ | |||
$regfile = "m48def.dat" | $regfile = "m48def.dat" | ||
$crystal = 4000000 | $crystal = 4000000 | ||
− | |||
− | |||
− | |||
− | + | $hwstack = 32 'Grundeinstellung 32 für den Hardware Stack | |
− | ' | + | $swstack = 10 'Grundeinstellung 10 für den Software Stack |
+ | $framesize = 40 'Grundeinstellung 40 für den Frame Space | ||
− | ' | + | |
− | '___1w_bitstorage , Byte | + | Config 1wire = Portb.0 'Angabe des Pins |
− | ' lastdeviceflag | + | 'Am STK200 muß Jumper B.0 gesteckt sein |
− | ' id_bit | + | |
− | ' cmp_id_bit | + | 'Folgende Bytes werden von der Scan-Routine benötigt |
− | ' search_dir | + | '___1w_bitstorage , Byte zur Speicherung von Bits : |
+ | ' lastdeviceflag Bit 0 | ||
+ | ' id_bit Bit 1 | ||
+ | ' cmp_id_bit Bit 2 | ||
+ | ' search_dir Bit 3 | ||
'___1wid_bit_number, Byte | '___1wid_bit_number, Byte | ||
'___1wlast_zero, Byte | '___1wlast_zero, Byte | ||
'___1wlast_discrepancy , Byte | '___1wlast_discrepancy , Byte | ||
− | '___1wire_data , | + | '___1wire_data , String * 7 (8 Bytes) |
− | '[DIM | + | |
− | ' | + | '[DIM benutzte Variablen] |
+ | 'Mindestens 8 Bytes zur Speicherung der ID werden gebraucht | ||
Dim Reg_no(8) As Byte | Dim Reg_no(8) As Byte | ||
− | ' | + | 'ein Schleifenzähler und ein Word/Integer für die Anzahl der IDs am Bus |
Dim I As Byte , W As Word | Dim I As Byte , W As Word | ||
− | ' | + | |
+ | 'Suchen des ersten Teilnehmers am Bus | ||
Reg_no(1) = 1wsearchfirst() | Reg_no(1) = 1wsearchfirst() | ||
− | For I = 1 To 8 ' | + | |
+ | For I = 1 To 8 'Ausgabe der ID im Hex-Format | ||
Print Hex(reg_no(i)); | Print Hex(reg_no(i)); | ||
Next | Next | ||
Print | Print | ||
+ | |||
Do | Do | ||
− | ' | + | 'Suche nach anderen Teilmnehmern |
Reg_no(1) = 1wsearchnext() | Reg_no(1) = 1wsearchnext() | ||
For I = 1 To 8 | For I = 1 To 8 | ||
Line 124: | Line 131: | ||
Next | Next | ||
Print | Print | ||
− | Loop Until Err = 1 | + | Loop Until Err = 1 'Schleife bis zum ersten Fehler am Bus |
− | + | 'Wenn ERR = 1 ist, wurde kein weiterer Teilnehmer gefunden | |
− | ' | + | 'Man kann auch die Anzahl der Teilnehmer am Bus zählen lassen |
− | ' | + | |
W = 1wirecount() | W = 1wirecount() | ||
− | ' | + | 'Es ist WICHTIG zu beachten, daß die 1wirecount-Function ein Word/Integer zurückgibt |
− | ' | + | 'Die Ergebnis-Variable muß vom Typ Word oder Integer sein |
− | ' | + | 'Man kann sie natürlich in eine Byte-oder Long-Variable übertragen |
Print W | Print W | ||
− | ' | + | 'als Bonus die nächste Routine : |
− | ' | + | ' zuerst das Array mit einer existierenden ID füllen |
Reg_no(1) = 1wsearchfirst() | Reg_no(1) = 1wsearchfirst() | ||
− | ' | + | ' um ein Byte zu ändern und das Err-Flag zu testen, nächste Zeile auskommentieren |
'Reg_no(1) = 2 | 'Reg_no(1) = 2 | ||
− | ' | + | 'jetzt eine Prüfung, ob die ID existiert |
1wverify Reg_no(1) | 1wverify Reg_no(1) | ||
Print Err | Print Err | ||
− | 'err =1 | + | 'err =1 wenn die ID, welche mit Reg_no() übergeben wurde, nicht existiert |
− | ' | + | 'optionaler Aufruf mit Angabe der Pinnummer: 1wverify reg_no(1),pinb,1 |
+ | |||
− | ' | + | 'wie bei den anderen 1-Wire Befehlen/Funktionen, wird die Angabe von Port und Pinnummer unterstützt |
− | 'W = 1wirecount(pinb , 1) ' | + | 'W = 1wirecount(pinb , 1) 'als Beispiel am Pin PINB.1 |
End | End | ||
</source><br/>{{Languages}} | </source><br/>{{Languages}} | ||
[[Category:BASCOM Language Reference/de]] | [[Category:BASCOM Language Reference/de]] |
Latest revision as of 19:30, 1 March 2013
Contents |
Funktion
Überprüft, ob eine ID am 1-wire-Bus vorhanden ist.
Syntax
1WVERIFY ar(1)
1WVERIFY ar(1) , port, pin
Beschreibung
Ar(1) |
Ein Byte-Array, welches die ID enthält, die überprüft werden soll. |
port |
Der Name des PORT PINx Registers wie z.B. PINB oder PIND. |
pin |
Die Pin-Nummer im Bereich von 0-7. Darf eine numerische Konstante oder Variable sein. |
Der Rückgabewert der Variable ERR ist 0 wenn die ID auf dem Bus gefunden wurde, ansonsten ist ERR = 1.
ASM
Folgende Assembler-Routinen werden von der mcs.lib aufgerufen.
_1wire_Search_Next : (ruft auf _1WIRE, _ADJUST_PIN , _ADJUST_BIT_ADDRESS)
Siehe auch
CONFIG 1WIRE , 1WWRITE , 1WRESET , 1WREAD , 1WSEARCHFIRST , 1WSEARCHNEXT , 1WIRECOUNT , Using the 1wire protocol
Beispiel
'-------------------------------------------------------------------------------- 'name : 1wireSearch.bas 'copyright : (c) 1995-2005, MCS Electronics 'purpose : demonstrates 1wsearch 'micro : Mega48 'suited for demo : yes 'commercial addon needed : no '-------------------------------------------------------------------------------- $regfile = "m48def.dat" $crystal = 4000000 $hwstack = 32 'Grundeinstellung 32 für den Hardware Stack $swstack = 10 'Grundeinstellung 10 für den Software Stack $framesize = 40 'Grundeinstellung 40 für den Frame Space Config 1wire = Portb.0 'Angabe des Pins 'Am STK200 muß Jumper B.0 gesteckt sein 'Folgende Bytes werden von der Scan-Routine benötigt '___1w_bitstorage , Byte zur Speicherung von Bits : ' lastdeviceflag Bit 0 ' id_bit Bit 1 ' cmp_id_bit Bit 2 ' search_dir Bit 3 '___1wid_bit_number, Byte '___1wlast_zero, Byte '___1wlast_discrepancy , Byte '___1wire_data , String * 7 (8 Bytes) '[DIM benutzte Variablen] 'Mindestens 8 Bytes zur Speicherung der ID werden gebraucht Dim Reg_no(8) As Byte 'ein Schleifenzähler und ein Word/Integer für die Anzahl der IDs am Bus Dim I As Byte , W As Word 'Suchen des ersten Teilnehmers am Bus Reg_no(1) = 1wsearchfirst() For I = 1 To 8 'Ausgabe der ID im Hex-Format Print Hex(reg_no(i)); Next Print Do 'Suche nach anderen Teilmnehmern Reg_no(1) = 1wsearchnext() For I = 1 To 8 Print Hex(reg_no(i)); Next Print Loop Until Err = 1 'Schleife bis zum ersten Fehler am Bus 'Wenn ERR = 1 ist, wurde kein weiterer Teilnehmer gefunden 'Man kann auch die Anzahl der Teilnehmer am Bus zählen lassen W = 1wirecount() 'Es ist WICHTIG zu beachten, daß die 1wirecount-Function ein Word/Integer zurückgibt 'Die Ergebnis-Variable muß vom Typ Word oder Integer sein 'Man kann sie natürlich in eine Byte-oder Long-Variable übertragen Print W 'als Bonus die nächste Routine : ' zuerst das Array mit einer existierenden ID füllen Reg_no(1) = 1wsearchfirst() ' um ein Byte zu ändern und das Err-Flag zu testen, nächste Zeile auskommentieren 'Reg_no(1) = 2 'jetzt eine Prüfung, ob die ID existiert 1wverify Reg_no(1) Print Err 'err =1 wenn die ID, welche mit Reg_no() übergeben wurde, nicht existiert 'optionaler Aufruf mit Angabe der Pinnummer: 1wverify reg_no(1),pinb,1 'wie bei den anderen 1-Wire Befehlen/Funktionen, wird die Angabe von Port und Pinnummer unterstützt 'W = 1wirecount(pinb , 1) 'als Beispiel am Pin PINB.1 End
Languages | English • Deutsch |
---|