1WVERIFY

From MCS Wiki AVR
Jump to: navigation, search

Contents

Action

This verifies if an ID is available on the 1wire bus.

 

 

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 1WSEARCHFIRST1WIRECOUNT

 

 

Example


'--------------------------------------------------------------------------------
'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 ' 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
'On the STK200 jumper B.0 must be inserted
 
'The following internal bytes are used by the scan routines
'___1w_bitstorage , Byte used for bit storage :
' 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 variables used]
'we need some space from at least 8 bytes to store the ID
Dim Reg_no(8) As Byte
 
'we need a loop counter and a word/integer for counting the ID's on the bus
Dim I As Byte , W As Word
 
'Now search for the first device on the bus
Reg_no(1) = 1wsearchfirst()
 
For I = 1 To 8 'print the number
 Print Hex(reg_no(i));
Next
Print
 
Do
'Now search for other devices
Reg_no(1) = 1wsearchnext()
For I = 1 To 8
 Print Hex(reg_no(i));
Next
Print
Loop Until Err = 1
 
 
 
'When ERR = 1 is returned it means that no device is found anymore
'You could also count the number of devices
W = 1wirecount()
'It is IMPORTANT that the 1wirecount function returns a word/integer
'So the result variable must be of the type word or integer
'But you may assign it to a byte or long too of course
Print W
 
 
'as a bonus the next routine :
' first fill the array with an existing number
Reg_no(1) = 1wsearchfirst()
' unremark next line to chance a byte to test the ERR flag
'Reg_no(1) = 2
'now verify if the number exists
1wverify Reg_no(1)
Print Err
'err =1 when the ID passed n reg_no() does NOT exist
' optional call it with pinnumber line 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
End

Languages   English Deutsch  
Personal tools
Namespaces
Variants
Actions
Navigation
In other languages
Language