1WVERIFY/de

(Difference between revisions)
Jump to: navigation, search
((**COPIED FROM ENGLISH PAGE**) =)
(Example)
Line 69: Line 69:
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
  
= <span class="f_Header">Example</span> =
+
= <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 ' default use 32 for the hardware stack
 
$swstack = 10 'default use 10 for the SW stack
 
$framesize = 40 'default use 40 for the frame space
 
 
   
 
   
Config 1wire = Portb.0 'use this pin
+
$hwstack = 32 'Grundeinstellung 32 für den Hardware Stack
'On the STK200 jumper B.0 must be inserted
+
$swstack = 10 'Grundeinstellung 10 für den Software Stack
 +
$framesize = 40 'Grundeinstellung 40 für den Frame Space
 
   
 
   
'The following internal bytes are used by the scan routines
+
'___1w_bitstorage , Byte used for bit storage :
+
Config 1wire = Portb.0 'Angabe des Pins
' lastdeviceflag bit 0
+
'Am STK200 muß Jumper B.0 gesteckt sein
' id_bit bit 1
+
' cmp_id_bit bit 2
+
'Folgende Bytes werden von der Scan-Routine benötigt
' search_dir bit 3
+
'___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 , string * 7 (8 bytes)
+
'___1wire_data , String * 7 (8 Bytes)
 
   
 
   
'[DIM variables used]
+
'we need some space from at least 8 bytes to store the ID
+
'[DIM benutzte Variablen]
 +
'Mindestens 8 Bytes zur Speicherung der ID werden gebraucht
 
Dim Reg_no(8) As Byte
 
Dim Reg_no(8) As Byte
 
   
 
   
'we need a loop counter and a word/integer for counting the ID's on the bus
+
'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
 
   
 
   
'Now search for the first device on the bus
+
 +
'Suchen des ersten Teilnehmers am Bus
 
Reg_no(1) = 1wsearchfirst()
 
Reg_no(1) = 1wsearchfirst()
 
   
 
   
For I = 1 To 8 'print the number
+
 +
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
'Now search for other devices
+
'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
'When ERR = 1 is returned it means that no device is found anymore
+
'Man kann auch die Anzahl der Teilnehmer am Bus zählen lassen
'You could also count the number of devices
+
 
W = 1wirecount()
 
W = 1wirecount()
'It is IMPORTANT that the 1wirecount function returns a word/integer
+
'Es ist WICHTIG zu beachten, daß die 1wirecount-Function ein Word/Integer zurückgibt
'So the result variable must be of the type word or integer
+
'Die Ergebnis-Variable muß vom Typ Word oder Integer sein
'But you may assign it to a byte or long too of course
+
'Man kann sie natürlich in eine Byte-oder Long-Variable übertragen
 
Print W
 
Print W
 
   
 
   
 
   
 
   
'as a bonus the next routine :
+
'als Bonus die nächste Routine :
' first fill the array with an existing number
+
' zuerst das Array mit einer existierenden ID füllen
 
Reg_no(1) = 1wsearchfirst()
 
Reg_no(1) = 1wsearchfirst()
' unremark next line to chance a byte to test the ERR flag
+
' um ein Byte zu ändern und das Err-Flag zu testen, nächste Zeile auskommentieren
 
'Reg_no(1) = 2
 
'Reg_no(1) = 2
'now verify if the number exists
+
'jetzt eine Prüfung, ob die ID existiert
 
1wverify Reg_no(1)
 
1wverify Reg_no(1)
 
Print Err
 
Print Err
'err =1 when the ID passed n reg_no() does NOT exist
+
'err =1 wenn die ID, welche mit Reg_no() übergeben wurde, nicht existiert
' optional call it with pinnumber line 1wverify reg_no(1),pinb,1
+
'optionaler Aufruf mit Angabe der Pinnummer: 1wverify reg_no(1),pinb,1
 +
 
   
 
   
'As for the other 1wire statements/functions, you can provide the port and pin number as anoption
+
'wie bei den anderen 1-Wire Befehlen/Funktionen, wird die Angabe von Port und Pinnummer unterstützt
'W = 1wirecount(pinb , 1) 'for example look at pin 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  
Personal tools
Namespaces
Variants
Actions
Navigation
In other languages
Language