1WVERIFY/de
(Difference between revisions)
(→(**COPIED FROM ENGLISH PAGE**) =) |
(→Example) |
||
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]] |
Revision as of 16:52, 20 February 2013
Contents |
Funktion
Überprüft, ob eine ID am 1-wire-Bus vorhanden ist.
Syntax
1WVERIFY ar(1)
1WVERIFY ar(1) , port, pin
Remarks
Ar(1) |
A byte array that holds the ID to verify. |
port |
The name of the PORT PINx register like PINB or PIND. |
pin |
The pin number in the range from 0-7. May be a numeric constant or variable. |
Returns ERR set to 0 when the ID is found on the bus otherwise it will be 1.
ASM
The following asm routines are called from mcs.lib.
_1wire_Search_Next : (calls _1WIRE, _ADJUST_PIN , _ADJUST_BIT_ADDRESS)
See also
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 |
---|