1WIRECOUNT/de

(Difference between revisions)
Jump to: navigation, search
m (1 revision)
Line 1: Line 1:
−
== (**COPIED FROM ENGLISH PAGE**) === <span class="f_Header">Action</span><br/> =
+
= <span class="f_Header">Action</span><br/> =
  
−
This statement reads the number of 1wire devices attached to the bus.
+
Dieser Befehl ermittelt die Anzahl von 1wire-Slaves am Bus.
  
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
Line 17: Line 17:
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
  
−
= <span class="f_Header">Remarks</span><br/> =
+
= <span class="f_Header">Beschreibung</span><br/> =
 
<div style="text-align: left;  text-indent: 0px;  padding: 0px 0px 0px 0px;  margin: 0px 0px 0px 4px">
 
<div style="text-align: left;  text-indent: 0px;  padding: 0px 0px 0px 0px;  margin: 0px 0px 0px 4px">
 
{| style="border: solid 2px #000000;  border-spacing:0px;  border-collapse: collapse" border="1" cellpadding="1" cellspacing="0" width="604"
 
{| style="border: solid 2px #000000;  border-spacing:0px;  border-collapse: collapse" border="1" cellpadding="1" cellspacing="0" width="604"
Line 25: Line 25:
  
 
| style="width:100%;  border: solid 1px #000000" valign="top" width="100%" |  
 
| style="width:100%;  border: solid 1px #000000" valign="top" width="100%" |  
−
A WORD variable that is assigned with the number of devices on the bus.
+
Eine WORD-Variable, die die Anzahl Geräte am Bus anzeigt.
  
 
|- style="text-align:left;  vertical-align:top"
 
|- style="text-align:left;  vertical-align:top"
Line 32: Line 32:
  
 
| style="width:100%;  border: solid 1px #000000" valign="top" width="100%" |  
 
| style="width:100%;  border: solid 1px #000000" valign="top" width="100%" |  
−
The PIN port name like PINB or PIND.
+
Der Name des PORT PINx Registers wie z.B. PINB oder PIND.
  
 
|- style="text-align:left;  vertical-align:top"
 
|- style="text-align:left;  vertical-align:top"
Line 39: Line 39:
  
 
| style="width:100%;  border: solid 1px #000000" valign="top" width="100%" |  
 
| style="width:100%;  border: solid 1px #000000" valign="top" width="100%" |  
−
The pin number of the port. 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';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
  
−
The variable must be of the type word or integer.
+
Die Variable muß vom Typ Word oder Integer sein.
  
−
You can use the 1wirecount() function to know how many times the 1wsearchNext() function should be called to get all the Id's on the bus.
+
Die 1wirecount()-Funktion kann benutzt werden, um zu ermitteln, wie oft die 1wsearchNext()-Funktion aufgerufen werden muß, um alle IDs vom Bus zu bekommen.
  
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
  
−
The 1wirecount function will take 4 bytes of SRAM.
+
Die 1wirecount-Function benötigt 4 Bytes vom SRAM.
  
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
  
−
___1w_bitstorage , Byte used for bit storage&nbsp;:
+
___1w_bitstorage , Byte zur Speicherung von Bits&nbsp;:
  
−
lastdeviceflag bit 0
+
lastdeviceflag Bit 0
  
−
id_bit bit 1
+
id_bit Bit 1
  
−
cmp_id_bit bit 2
+
cmp_id_bit Bit 2
  
−
search_dir bit 3
+
search_dir Bit 3
  
 
___1wid_bit_number, Byte
 
___1wid_bit_number, Byte
Line 81: Line 81:
 
= <span class="f_Header">ASM</span><br/> =
 
= <span class="f_Header">ASM</span><br/> =
  
−
The following asm routines are called from mcs.lib.
+
Folgende Assembler-Routinen werden von der mcs.lib aufgerufen.
  
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
  
−
_1wire_Count&nbsp;: (calls _1WIRE, _1WIRE_SEARCH_FIRST , _1WIRE_SEARCH_NEXT)
+
_1wire_Count&nbsp;: (ruft auf _1WIRE, _1WIRE_SEARCH_FIRST , _1WIRE_SEARCH_NEXT)
  
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
  
−
Parameters passed&nbsp;: R24&nbsp;: pin number, R30&nbsp;: port , Y+0,Y+1&nbsp;: 2 bytes of soft stack, X&nbsp;: pointer to the frame space
+
Übergebene Parameter&nbsp;: R24&nbsp;: Pin-Nummer, R30&nbsp;: Port , Y+0,Y+1&nbsp;: 2 Bytes vom Software-Stack, X&nbsp;: Zeiger auf den Frame Space
  
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
  
−
Returns Y+0 and Y+1 with the value of the count. This is assigned to the target variable.
+
Rückgabe von Y+0 und Y+1 mit dem Zählerwert. Wird auf die Zielvariable kopiert.
  
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
Line 99: Line 99:
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
  
−
= <span class="f_Header">See also</span><br/> =
+
= <span class="f_Header">Siehe auch</span><br/> =
  
 
[[1WWRITE]] , [[1WRESET]] , [[1WREAD|1WREAD ]], [[1WSEARCHFIRST]], [[1WSEARCHNEXT]] , [[Using the 1 WIRE protocol|Using the 1wire protocol]]
 
[[1WWRITE]] , [[1WRESET]] , [[1WREAD|1WREAD ]], [[1WSEARCHFIRST]], [[1WSEARCHNEXT]] , [[Using the 1 WIRE protocol|Using the 1wire protocol]]
Line 109: Line 109:
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
 
<span style="font-family: 'Arial';  color: #000000">&nbsp;</span>
  
−
= <span class="f_Header">Example</span><br/> =
+
= <span class="f_Header">Beispiel</span><br/> =
  
 
<source lang="bascomavr">
 
<source lang="bascomavr">
Line 126: Line 126:
 
   
 
   
  
−
$hwstack = 32 ' default use 32 for the hardware stack
+
$hwstack = 32 'Grundeinstellung 32 für den Hardware Stack
−
$swstack = 10 'default use 10 for the SW stack
+
$swstack = 10 'Grundeinstellung 10 für den Software Stack
−
$framesize = 40 'default use 40 for the frame space
+
$framesize = 40 'Grundeinstellung 40 für den Frame Space
 
   
 
   
  
−
Config 1wire = Portb.0 'use this pin
+
Config 1wire = Portb.0 'Angabe des Pins
−
'On the STK200 jumper B.0 must be inserted
+
'Am STK200 muß Jumper B.0 gesteckt sein
 
   
 
   
−
 
+
'Folgende Bytes werden von der Scan-Routine benötigt
−
'The following internal bytes are used by the scan routines
+
'___1w_bitstorage , Byte zur Speicherung von Bits :
−
'___1w_bitstorage , Byte used for bit storage :
+
' lastdeviceflag Bit 0
−
' lastdeviceflag bit 0
+
' id_bit Bit 1
−
' id_bit bit 1
+
' cmp_id_bit Bit 2
−
' cmp_id_bit bit 2
+
' search_dir Bit 3
−
' 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]
+
'[DIM benutzte Variablen]
−
'we need some space from at least 8 bytes to store the ID
+
'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
Line 166: Line 165:
  
 
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 172: Line 171:
 
Next
 
Next
 
Print
 
Print
−
Loop Until Err = 1
+
Loop Until Err = 1 'Schleife bis zum ersten Fehler am Bus
 
   
 
   
  
−
'When ERR = 1 is returned it means that no device is found anymore
+
'Wenn ERR = 1 ist, wurde kein weiterer Teilnehmer gefunden
−
'You could also count the number of devices
+
'Man kann auch die Anzahl der Teilnehmer am Bus zählen lassen
 
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 änern 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
−
' optinal 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
+
−
'W = 1wirecount(pinb , 1) 'for example look at pin 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
 
End
 
</source><br/>{{Languages}}
 
</source><br/>{{Languages}}
  
 
[[Category:BASCOM_Language_Reference/de]]
 
[[Category:BASCOM_Language_Reference/de]]

Revision as of 14:46, 19 February 2013

Contents

Action

Dieser Befehl ermittelt die Anzahl von 1wire-Slaves am Bus.

 

 

Syntax

var2 = 1WIRECOUNT()

var2 = 1WIRECOUNT( port , pin)

 

 

Beschreibung

var2

Eine WORD-Variable, die die Anzahl Geräte am Bus anzeigt.

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.

 

Die Variable muß vom Typ Word oder Integer sein.

Die 1wirecount()-Funktion kann benutzt werden, um zu ermitteln, wie oft die 1wsearchNext()-Funktion aufgerufen werden muß, um alle IDs vom Bus zu bekommen.

 

Die 1wirecount-Function benötigt 4 Bytes vom SRAM.

 

___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

 

 

 

 

ASM

Folgende Assembler-Routinen werden von der mcs.lib aufgerufen.

 

_1wire_Count : (ruft auf _1WIRE, _1WIRE_SEARCH_FIRST , _1WIRE_SEARCH_NEXT)

 

Übergebene Parameter : R24 : Pin-Nummer, R30 : Port , Y+0,Y+1 : 2 Bytes vom Software-Stack, X : Zeiger auf den Frame Space

 

Rückgabe von Y+0 und Y+1 mit dem Zählerwert. Wird auf die Zielvariable kopiert.

 

 

Siehe auch

1WWRITE , 1WRESET , 1WREAD , 1WSEARCHFIRST, 1WSEARCHNEXT , 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 änern 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