1WVERIFY/de

From MCS Wiki AVR
< 1WVERIFY(Difference between revisions)
Jump to: navigation, search
(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:
== (**COPIED FROM ENGLISH PAGE**) === <span class="f_Header">Action</span> =
+
= <span class="f_Header">Funktion</span> =
  
This verifies if an ID is available on the 1wire bus.
+
Überprüft, ob eine ID am 1-wire-Bus vorhanden ist.
  
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
Line 17: Line 17:
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
  
= <span class="f_Header">Remarks</span> =
+
= <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);" |  
A byte array that holds the ID to verify.
+
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);" |  
The name of the PORT PINx register like PINB or PIND.
+
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);" |  
The pin number in the range from 0-7. May be a numeric constant or variable.
+
Die Pin-Nummer im Bereich von 0-7. Darf eine numerische Konstante oder Variable sein.
  
 
|}
 
|}
Line 45: Line 45:
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
  
Returns ERR set to 0 when the ID is found on the bus otherwise it will be 1.
+
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;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
Line 53: Line 53:
 
= <span class="f_Header">ASM</span> =
 
= <span class="f_Header">ASM</span> =
  
The following asm routines are called from mcs.lib.
+
Folgende Assembler-Routinen werden von der mcs.lib aufgerufen.
  
_1wire_Search_Next&nbsp;: (calls _1WIRE, _ADJUST_PIN , _ADJUST_BIT_ADDRESS)
+
_1wire_Search_Next&nbsp;: (ruft auf _1WIRE, _ADJUST_PIN , _ADJUST_BIT_ADDRESS)
  
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
Line 61: Line 61:
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
  
= <span class="f_Header">See also</span> =
+
= <span class="f_Header">Siehe auch</span> =
  
[[1WWRITE]]&nbsp;,&nbsp;[[1WRESET]]&nbsp;,&nbsp;[[1WREAD|1WREAD&nbsp;]],&nbsp;[[1WSEARCHFIRST]],&nbsp;[[1WIRECOUNT]]
+
[[CONFIG 1WIRE]] , [[1WWRITE]]&nbsp;,&nbsp;[[1WRESET]]&nbsp;,&nbsp;[[1WREAD|1WREAD&nbsp;]]&nbsp;,&nbsp;[[1WSEARCHFIRST]]&nbsp;,&nbsp;[[1WSEARCHNEXT]]&nbsp; ,&nbsp;[[1WIRECOUNT]]&nbsp;,&nbsp;[[Using the 1 WIRE protocol|Using the 1wire protocol]]
  
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
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]]

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  
Personal tools
Namespaces
Variants
Actions
Navigation
In other languages
Language