1WVERIFY/de
Aus MCS Wiki AVR
Inhaltsverzeichnis |
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 |
---|