<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.mcselec.com/bavr/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.mcselec.com/bavr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Michael+K</id>
		<title>MCS Wiki AVR - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.mcselec.com/bavr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Michael+K"/>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Special:Contributions/Michael_K"/>
		<updated>2026-05-02T02:11:35Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.18.6</generator>

	<entry>
		<id>http://wiki.mcselec.com/bavr/STAND_%3FBERSETZUNG_(temor%3Fr)</id>
		<title>STAND ?BERSETZUNG (temor?r)</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/STAND_%3FBERSETZUNG_(temor%3Fr)"/>
				<updated>2013-03-01T18:16:57Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MAIN MENUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  *Installation/de&lt;br /&gt;
 Übersetzt Installation of BASCOM/de&lt;br /&gt;
 Übersetzt Installation on multiple computers/de&lt;br /&gt;
 Übersetzt Move to new PC/de&lt;br /&gt;
 Übersetzt Updates/de&lt;br /&gt;
&lt;br /&gt;
  *BASCOM Language Fundamentals/de&lt;br /&gt;
 Übersetzt ASCII chart/de&lt;br /&gt;
 Übersetzt Assembler mnemonics/de&lt;br /&gt;
 Übersetzt Changes compared to BASCOM-8051/de&lt;br /&gt;
 Übersetzt Error Codes/de&lt;br /&gt;
 Übersetzt Keyword reference/de&lt;br /&gt;
 IN ARBEIT Language Fundamentals/de&lt;br /&gt;
 Mixing ASM and BASIC/de&lt;br /&gt;
 Übersetzt Newbie problems/de&lt;br /&gt;
 Reserved Words/de&lt;br /&gt;
 Übersetzt Tips and tricks/de&lt;br /&gt;
&lt;br /&gt;
  *ASM Libraries and Add-Ons/de&lt;br /&gt;
 *AVR-DOS/de&lt;br /&gt;
 *BCCARD/de&lt;br /&gt;
 *CF Card/de&lt;br /&gt;
 *DATE TIME/de&lt;br /&gt;
 *Floating Point/de&lt;br /&gt;
 *I2C SLAVE/de&lt;br /&gt;
 *LCD/de&lt;br /&gt;
 *PS2-AT Mouse and Keyboard Emulation/de&lt;br /&gt;
 *SPI/de&lt;br /&gt;
 *USB/de&lt;br /&gt;
 EXTENDED I2C/de&lt;br /&gt;
 FM24C16/de&lt;br /&gt;
 FM24C64-256/de&lt;br /&gt;
 FM25C256/de&lt;br /&gt;
 HEXVAL lib/de&lt;br /&gt;
 I2C-TWI/de&lt;br /&gt;
 MCSBYTE/de&lt;br /&gt;
 MCSBYTEINT/de&lt;br /&gt;
 MODBUS Slave-Server/de&lt;br /&gt;
 TCPIP/de&lt;br /&gt;
&lt;br /&gt;
  *BASCOM HARDWARE/de&lt;br /&gt;
 *Chips/de&lt;br /&gt;
 *Reference Designs/de&lt;br /&gt;
 Adding XRAM to XMEGA using EBI/de&lt;br /&gt;
 Adding XRAM with External Memory Interface/de&lt;br /&gt;
 Additional Hardware/de&lt;br /&gt;
 Attaching an LCD Display/de&lt;br /&gt;
 AVR Internal Hardware Port B/de&lt;br /&gt;
 AVR Internal Hardware Port D/de&lt;br /&gt;
 AVR Internal Hardware TIMER0/de&lt;br /&gt;
 AVR Internal Hardware TIMER1/de&lt;br /&gt;
 AVR Internal Hardware Watchdog timer/de&lt;br /&gt;
 AVR Internal Hardware/de&lt;br /&gt;
 AVR Internal Registers/de&lt;br /&gt;
 Memory usage/de&lt;br /&gt;
 Power Up/de&lt;br /&gt;
 Using RS485/de&lt;br /&gt;
 Übersetzt Using the 1 WIRE protocol/de&lt;br /&gt;
 Using the I2C protocol/de&lt;br /&gt;
 Using the SPI protocol/de&lt;br /&gt;
 Using the UART/de&lt;br /&gt;
 Using USI (Universal Serial Interface)/de&lt;br /&gt;
&lt;br /&gt;
 *Tools/de&lt;br /&gt;
 LCD RGB-8 Converter/de&lt;br /&gt;
&lt;br /&gt;
 *BASCOM IDE/de&lt;br /&gt;
 *Options Compiler/de&lt;br /&gt;
 *Options Programmer/de&lt;br /&gt;
 *Plugins/de&lt;br /&gt;
 BASCOM Editor Keys/de&lt;br /&gt;
 Edit Copy/de&lt;br /&gt;
 Edit Cut/de&lt;br /&gt;
 Edit Encrypt Selected Code/de&lt;br /&gt;
 Edit Find Next/de&lt;br /&gt;
 Edit Find/de&lt;br /&gt;
 Edit Goto Bookmark/de&lt;br /&gt;
 Edit Goto/de&lt;br /&gt;
 Edit Indent Block/de&lt;br /&gt;
 Edit Paste/de&lt;br /&gt;
 Edit Redo/de&lt;br /&gt;
 Edit Remark Block/de&lt;br /&gt;
 Edit Replace/de&lt;br /&gt;
 Edit Toggle Bookmark/de&lt;br /&gt;
 Edit Undo/de&lt;br /&gt;
 Edit Unindent Block/de&lt;br /&gt;
 File Close/de&lt;br /&gt;
 File Exit/de&lt;br /&gt;
 File New/de&lt;br /&gt;
 File Open/de&lt;br /&gt;
 File Print Preview/de&lt;br /&gt;
 File Print/de&lt;br /&gt;
 File Project/de&lt;br /&gt;
 File Save As/de&lt;br /&gt;
 File Save/de&lt;br /&gt;
 Help About/de&lt;br /&gt;
 Help Credits/de&lt;br /&gt;
 Help Index/de&lt;br /&gt;
 Help Knowledge Base/de&lt;br /&gt;
 Help MCS Forum/de&lt;br /&gt;
 Help MCS Shop/de&lt;br /&gt;
 Help Support/de&lt;br /&gt;
 Help Update/de&lt;br /&gt;
 Options Communication/de&lt;br /&gt;
 Options Environment/de&lt;br /&gt;
 Options Monitor/de&lt;br /&gt;
 Options Printer/de&lt;br /&gt;
 Options Simulator/de&lt;br /&gt;
 Program Compile/de&lt;br /&gt;
 Program Development Order/de&lt;br /&gt;
 Program Send to Chip/de&lt;br /&gt;
 Program Show Result/de&lt;br /&gt;
 Program Simulate/de&lt;br /&gt;
 Program Syntax Check/de&lt;br /&gt;
 Running BASCOM-AVR/de&lt;br /&gt;
 Tools Batch Compile/de&lt;br /&gt;
 Tools Graphic Converter/de&lt;br /&gt;
 Tools LCD Designer/de&lt;br /&gt;
 Tools LIB Manager/de&lt;br /&gt;
 Tools PDF Update/de&lt;br /&gt;
 Tools Plugin Manager/de&lt;br /&gt;
 Tools Resource Editor/de&lt;br /&gt;
 Tools Stack Analyzer/de&lt;br /&gt;
 Tools Terminal Emulator/de&lt;br /&gt;
 View Code Explorer/de&lt;br /&gt;
 View Error Panel/de&lt;br /&gt;
 View PDF viewer/de&lt;br /&gt;
 View PinOut/de&lt;br /&gt;
 View Project Files/de&lt;br /&gt;
 View Tip/de&lt;br /&gt;
 Window Arrange Icons/de&lt;br /&gt;
 Window Cascade/de&lt;br /&gt;
 Window Minimize All/de&lt;br /&gt;
 Window Tile/de&lt;br /&gt;
 Windows Maximize All/de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 BASCOM-AVR Stichworte - DE Übersetzung&lt;br /&gt;
&lt;br /&gt;
 $AESKEY/de&lt;br /&gt;
 $ASM/de&lt;br /&gt;
 $BAUD/de&lt;br /&gt;
 $BAUD1/de&lt;br /&gt;
 $BGF/de&lt;br /&gt;
 $BIGSTRINGS/de&lt;br /&gt;
 $BOOT/de&lt;br /&gt;
 $CRYPT/de&lt;br /&gt;
 Übersetzt $CRYSTAL/de&lt;br /&gt;
 $DATA/de&lt;br /&gt;
 $DBG/de&lt;br /&gt;
 $DEFAULT/de&lt;br /&gt;
 $EEPLEAVE/de&lt;br /&gt;
 $EEPROM/de&lt;br /&gt;
 $EEPROMHEX/de&lt;br /&gt;
 $EEPROMSIZE/de&lt;br /&gt;
 $EXTERNAL/de&lt;br /&gt;
 $FILE/de&lt;br /&gt;
 $FRAMECHECK/de&lt;br /&gt;
 $FRAMEPROTECT/de&lt;br /&gt;
 $FRAMESIZE/de&lt;br /&gt;
 $HWCHECK/de&lt;br /&gt;
 $HWSTACK/de&lt;br /&gt;
 $INC/de&lt;br /&gt;
 $INCLUDE/de&lt;br /&gt;
 $INITMICRO/de&lt;br /&gt;
 $LCD/de&lt;br /&gt;
 $LCDPUTCTRL/de&lt;br /&gt;
 $LCDPUTDATA/de&lt;br /&gt;
 $LCDRS/de&lt;br /&gt;
 $LCDVFO/de&lt;br /&gt;
 $LIB/de&lt;br /&gt;
 $LOADER/de&lt;br /&gt;
 $LOADERSIZE/de&lt;br /&gt;
 $MAP/de&lt;br /&gt;
 $NOCOMPILE/de&lt;br /&gt;
 $NOFRAMEPROTECT/de&lt;br /&gt;
 $NOINIT/de&lt;br /&gt;
 $NORAMCLEAR/de&lt;br /&gt;
 $NORAMPZ/de&lt;br /&gt;
 $NOTRANSFORM/de&lt;br /&gt;
 $PROG/de&lt;br /&gt;
 $PROGRAMMER/de&lt;br /&gt;
 $PROJECTTIME/de&lt;br /&gt;
 $REGFILE/de&lt;br /&gt;
 $RESOURCE/de&lt;br /&gt;
 $ROMSTART/de&lt;br /&gt;
 $SERIALINPUT/de&lt;br /&gt;
 $SERIALINPUT1/de&lt;br /&gt;
 $SERIALINPUT2LCD/de&lt;br /&gt;
 $SERIALOUTPUT/de&lt;br /&gt;
 $SERIALOUTPUT1/de&lt;br /&gt;
 $SIM/de&lt;br /&gt;
 $SOFTCHECK/de&lt;br /&gt;
 $STACKDUMP/de&lt;br /&gt;
 $SWSTACK/de&lt;br /&gt;
 $TIMEOUT/de&lt;br /&gt;
 $TINY/de&lt;br /&gt;
 $VERSION/de&lt;br /&gt;
 $WAITSTATE/de&lt;br /&gt;
 $XA/de&lt;br /&gt;
 $XRAMSIZE/de&lt;br /&gt;
 $XRAMSTART/de&lt;br /&gt;
 $XTEAKEY/de&lt;br /&gt;
&lt;br /&gt;
 *AUTOCODE/de&lt;br /&gt;
 *IF ELSE ELSEIF ENDIF/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt 1WIRECOUNT/de&lt;br /&gt;
 Übersetzt 1WREAD/de&lt;br /&gt;
 Übersetzt 1WRESET/de&lt;br /&gt;
 Übersetzt 1WSEARCHFIRST/de&lt;br /&gt;
 Übersetzt 1WSEARCHNEXT/de&lt;br /&gt;
 Übersetzt 1WVERIFY/de&lt;br /&gt;
 Übersetzt 1WWRITE/de&lt;br /&gt;
&lt;br /&gt;
 ABS/de&lt;br /&gt;
 ACOS/de&lt;br /&gt;
 ADR/de&lt;br /&gt;
 ADR2/de&lt;br /&gt;
 AESDECRYPT/de&lt;br /&gt;
 AESENCRYPT/de&lt;br /&gt;
 ALIAS/de&lt;br /&gt;
 ASC/de&lt;br /&gt;
 ASIN/de&lt;br /&gt;
 ATN/de&lt;br /&gt;
 ATN2/de&lt;br /&gt;
&lt;br /&gt;
 BASE64DEC/de&lt;br /&gt;
 BASE64ENC/de&lt;br /&gt;
 BAUD/de&lt;br /&gt;
 BAUD1/de&lt;br /&gt;
 BCD/de&lt;br /&gt;
 BIN/de&lt;br /&gt;
 BIN2GRAY/de&lt;br /&gt;
 BINVAL/de&lt;br /&gt;
 BITS/de&lt;br /&gt;
 BITWAIT/de&lt;br /&gt;
 BLOAD/de&lt;br /&gt;
 BOX/de&lt;br /&gt;
 BOXFILL/de&lt;br /&gt;
 BSAVE/de&lt;br /&gt;
 BUFSPACE/de&lt;br /&gt;
 BYVAL/de&lt;br /&gt;
&lt;br /&gt;
 CALL/de&lt;br /&gt;
 CANBAUD/de&lt;br /&gt;
 CANCLEARALLMOBS/de&lt;br /&gt;
 CANCLEARMOB/de&lt;br /&gt;
 CANGETINTS/de&lt;br /&gt;
 CANID/de&lt;br /&gt;
 CANRECEIVE/de&lt;br /&gt;
 CANRESET/de&lt;br /&gt;
 CANSELPAGE/de&lt;br /&gt;
 CANSEND/de&lt;br /&gt;
 CHARPOS/de&lt;br /&gt;
 CHDIR/de&lt;br /&gt;
 CHECKFLOAT/de&lt;br /&gt;
 CHECKSUM/de&lt;br /&gt;
 CHECKSUMXOR/de&lt;br /&gt;
 CHR/de&lt;br /&gt;
 CIRCLE/de&lt;br /&gt;
 CLEAR/de&lt;br /&gt;
 CLOCKDIVISION/de&lt;br /&gt;
 CLOSE/de&lt;br /&gt;
 CLOSESOCKET/de&lt;br /&gt;
 CLS/de&lt;br /&gt;
 CONFIG/de&lt;br /&gt;
 Übersetzt CONFIG 1WIRE/de&lt;br /&gt;
 CONFIG ACI/de&lt;br /&gt;
 CONFIG ACXX/de&lt;br /&gt;
 CONFIG ADC/de&lt;br /&gt;
 CONFIG ADCX/de&lt;br /&gt;
 CONFIG ATEMU/de&lt;br /&gt;
 CONFIG BASE/de&lt;br /&gt;
 CONFIG BCCARD/de&lt;br /&gt;
 CONFIG CANBUS/de&lt;br /&gt;
 CONFIG CANMOB/de&lt;br /&gt;
 CONFIG CLOCK/de&lt;br /&gt;
 CONFIG CLOCKDIV/de&lt;br /&gt;
 CONFIG COM1/de&lt;br /&gt;
 CONFIG COM2/de&lt;br /&gt;
 CONFIG COMX/de&lt;br /&gt;
 CONFIG DACX/de&lt;br /&gt;
 CONFIG DATE/de&lt;br /&gt;
 CONFIG DCF77/de&lt;br /&gt;
 CONFIG DEBOUNCE/de&lt;br /&gt;
 CONFIG DMA/de&lt;br /&gt;
 CONFIG DMACHX/de&lt;br /&gt;
 CONFIG DMXSLAVE/de&lt;br /&gt;
 CONFIG DP/de&lt;br /&gt;
 CONFIG EEPROM/de&lt;br /&gt;
 CONFIG ERROR/de&lt;br /&gt;
 CONFIG EVENT SYSTEM/de&lt;br /&gt;
 CONFIG EXTENDED PORT/de&lt;br /&gt;
 CONFIG GRAPHLCD/de&lt;br /&gt;
 CONFIG HITAG/de&lt;br /&gt;
 CONFIG I2CDELAY/de&lt;br /&gt;
 CONFIG I2CSLAVE/de&lt;br /&gt;
 CONFIG INPUT/de&lt;br /&gt;
 CONFIG INTX/de&lt;br /&gt;
 CONFIG KBD/de&lt;br /&gt;
 CONFIG KEYBOARD/de&lt;br /&gt;
 CONFIG LCD/de&lt;br /&gt;
 CONFIG LCDBUS/de&lt;br /&gt;
 CONFIG LCDMODE/de&lt;br /&gt;
 CONFIG LCDPIN/de&lt;br /&gt;
 CONFIG OSC/de&lt;br /&gt;
 CONFIG PORT/de&lt;br /&gt;
 CONFIG POWERMODE/de&lt;br /&gt;
 CONFIG POWER REDUCTION/de&lt;br /&gt;
 CONFIG PRINT/de&lt;br /&gt;
 CONFIG PRINTBIN/de&lt;br /&gt;
 CONFIG PRIORITY/de&lt;br /&gt;
 CONFIG PS2EMU/de&lt;br /&gt;
 CONFIG RC5/de&lt;br /&gt;
 CONFIG SCL/de&lt;br /&gt;
 CONFIG SDA/de&lt;br /&gt;
 CONFIG SERIALIN/de&lt;br /&gt;
 CONFIG SERIALOUT/de&lt;br /&gt;
 CONFIG SERVOS/de&lt;br /&gt;
 CONFIG SHIFTIN/de&lt;br /&gt;
 CONFIG SINGLE/de&lt;br /&gt;
 CONFIG SPI/de&lt;br /&gt;
 CONFIG SPIX/de&lt;br /&gt;
 CONFIG SUBMODE/de&lt;br /&gt;
 CONFIG SYSCLOCK/de&lt;br /&gt;
 CONFIG TCPIP/de&lt;br /&gt;
 CONFIG TCXX/de&lt;br /&gt;
 CONFIG TIMER0/de&lt;br /&gt;
 CONFIG TIMER1/de&lt;br /&gt;
 CONFIG TIMER2/de&lt;br /&gt;
 CONFIG TWI/de&lt;br /&gt;
 CONFIG TWISLAVE/de&lt;br /&gt;
 CONFIG USB/de&lt;br /&gt;
 CONFIG VPORT/de&lt;br /&gt;
 CONFIG WAITSUART/de&lt;br /&gt;
 CONFIG WATCHDOG/de&lt;br /&gt;
 CONFIG X10/de&lt;br /&gt;
 CONFIG XPIN/de&lt;br /&gt;
 CONFIG XRAM/de&lt;br /&gt;
 CONST/de&lt;br /&gt;
 COS/de&lt;br /&gt;
 COSH/de&lt;br /&gt;
 COUNTER0/de&lt;br /&gt;
 COUNTER1/de&lt;br /&gt;
 CPEEK/de&lt;br /&gt;
 CPEEKH/de&lt;br /&gt;
 CRC16/de&lt;br /&gt;
 CRC16UNI/de&lt;br /&gt;
 CRC32/de&lt;br /&gt;
 CRC8/de&lt;br /&gt;
 CRYSTAL/de&lt;br /&gt;
 Übersetzt CURSOR/de&lt;br /&gt;
 &lt;br /&gt;
 DATA/de&lt;br /&gt;
 DATE$/de&lt;br /&gt;
 DATE/de&lt;br /&gt;
 DAYOFWEEK/de&lt;br /&gt;
 DAYOFYEAR/de&lt;br /&gt;
 DBG/de&lt;br /&gt;
 DCF77TIMEZONE/de&lt;br /&gt;
 DEBOUNCE/de&lt;br /&gt;
 DEBUG/de&lt;br /&gt;
 DECLARE FUNCTION/de&lt;br /&gt;
 DECLARE SUB/de&lt;br /&gt;
 DECR/de&lt;br /&gt;
 DEFLCDCHAR/de&lt;br /&gt;
 DEFXXX/de&lt;br /&gt;
 DEG2RAD/de&lt;br /&gt;
 Übersetzt DELAY/de&lt;br /&gt;
 DELCHAR/de&lt;br /&gt;
 DELCHARS/de&lt;br /&gt;
 DIM/de&lt;br /&gt;
 DIR/de&lt;br /&gt;
 DISABLE/de&lt;br /&gt;
 DISKFREE/de&lt;br /&gt;
 DISKSIZE/de&lt;br /&gt;
 DISPLAY/de&lt;br /&gt;
 Übersetzt DO-LOOP/de&lt;br /&gt;
 DTMFOUT/de&lt;br /&gt;
 DriveCheck/de&lt;br /&gt;
 DriveGetIdentity/de&lt;br /&gt;
 DriveInit/de&lt;br /&gt;
 DriveReadSector/de&lt;br /&gt;
 DriveReset/de&lt;br /&gt;
 DriveWriteSector/de&lt;br /&gt;
&lt;br /&gt;
 ECHO/de&lt;br /&gt;
 ELSE/de&lt;br /&gt;
 ENABLE/de&lt;br /&gt;
 ENCODER/de&lt;br /&gt;
 Übersetzt END/de&lt;br /&gt;
 EOF/de&lt;br /&gt;
 EXIT/de&lt;br /&gt;
 EXP/de&lt;br /&gt;
 &lt;br /&gt;
 FILEATTR/de&lt;br /&gt;
 FILEDATE/de&lt;br /&gt;
 FILEDATETIME/de&lt;br /&gt;
 FILELEN/de&lt;br /&gt;
 FILETIME/de&lt;br /&gt;
 FIX/de&lt;br /&gt;
 FLUSH/de&lt;br /&gt;
 Übersetzt FOR-NEXT/de&lt;br /&gt;
 FORMAT/de&lt;br /&gt;
 FOURTHLINE/de&lt;br /&gt;
 FRAC/de&lt;br /&gt;
 FREEFILE/de&lt;br /&gt;
 FUSING/de&lt;br /&gt;
&lt;br /&gt;
 GET/de&lt;br /&gt;
 GETADC/de&lt;br /&gt;
 GETATKBD/de&lt;br /&gt;
 GETATKBDRAW/de&lt;br /&gt;
 GETDSTIP/de&lt;br /&gt;
 GETDSTPORT/de&lt;br /&gt;
 GETKBD/de&lt;br /&gt;
 GETRC/de&lt;br /&gt;
 GETRC5/de&lt;br /&gt;
 GETREG/de&lt;br /&gt;
 GETSOCKET/de&lt;br /&gt;
 GETTCPREGS/de&lt;br /&gt;
 GLCDCMD/de&lt;br /&gt;
 GLCDDATA/de&lt;br /&gt;
 Übersetzt GOSUB/de&lt;br /&gt;
 Übersetzt GOTO/de&lt;br /&gt;
 GRAY2BIN/de&lt;br /&gt;
 &lt;br /&gt;
 HEX/de&lt;br /&gt;
 HEXVAL/de&lt;br /&gt;
 HIGH/de&lt;br /&gt;
 HIGHW/de&lt;br /&gt;
 HOME/de&lt;br /&gt;
 &lt;br /&gt;
 I2CINIT/de&lt;br /&gt;
 I2CRBYTE/de&lt;br /&gt;
 I2CRECEIVE/de&lt;br /&gt;
 I2CREPSTART/de&lt;br /&gt;
 I2CSEND/de&lt;br /&gt;
 I2CSTART/de&lt;br /&gt;
 I2CSTOP/de&lt;br /&gt;
 I2CWBYTE/de&lt;br /&gt;
 Übersetzt IDLE/de&lt;br /&gt;
 Übersetzt IF-THEN-ELSE-END IF/de&lt;br /&gt;
 INCR/de&lt;br /&gt;
 INITFILESYSTEM/de&lt;br /&gt;
 INITLCD/de&lt;br /&gt;
 INKEY/de&lt;br /&gt;
 INP/de&lt;br /&gt;
 INPUT/de&lt;br /&gt;
 INPUTBIN/de&lt;br /&gt;
 INPUTHEX/de&lt;br /&gt;
 INSERTCHAR/de&lt;br /&gt;
 INSTR/de&lt;br /&gt;
 INT/de&lt;br /&gt;
 IP2STR/de&lt;br /&gt;
 ISCHARWAITING/de&lt;br /&gt;
&lt;br /&gt;
 KILL/de&lt;br /&gt;
&lt;br /&gt;
 LCASE/de&lt;br /&gt;
 LCD/de&lt;br /&gt;
 LCDAT/de&lt;br /&gt;
 LCDAUTODIM/de&lt;br /&gt;
 LCDCMD/de&lt;br /&gt;
 LCDCONTRAST/de&lt;br /&gt;
 LCDDATA/de&lt;br /&gt;
 LEFT/de&lt;br /&gt;
 LEN/de&lt;br /&gt;
 LINE/de&lt;br /&gt;
 LINEINPUT/de&lt;br /&gt;
 LINE INPUT/de&lt;br /&gt;
 LOAD/de&lt;br /&gt;
 LOADADR/de&lt;br /&gt;
 LOADLABEL/de&lt;br /&gt;
 LOADWORDADR/de&lt;br /&gt;
 LOC/de&lt;br /&gt;
 LOCAL/de&lt;br /&gt;
 LOCATE/de&lt;br /&gt;
 LOF/de&lt;br /&gt;
 LOG/de&lt;br /&gt;
 LOG10/de&lt;br /&gt;
 LOOKDOWN/de&lt;br /&gt;
 LOOKUP/de&lt;br /&gt;
 LOOKUPSTR/de&lt;br /&gt;
 LOW/de&lt;br /&gt;
 LOWERLINE/de&lt;br /&gt;
 LTRIM/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt MACRO/de&lt;br /&gt;
 MAKEBCD/de&lt;br /&gt;
 MAKEDEC/de&lt;br /&gt;
 MAKEINT/de&lt;br /&gt;
 MAKEMODBUS/de&lt;br /&gt;
 MAKETCP/de&lt;br /&gt;
 MAX/de&lt;br /&gt;
 MEMCOPY/de&lt;br /&gt;
 MID/de&lt;br /&gt;
 MIN/de&lt;br /&gt;
 MKDIR/de&lt;br /&gt;
 MOD/de&lt;br /&gt;
&lt;br /&gt;
 NBITS/de&lt;br /&gt;
 &lt;br /&gt;
 ON INTERRUPT/de&lt;br /&gt;
 ON VALUE/de&lt;br /&gt;
 OPEN/de&lt;br /&gt;
 OUT/de&lt;br /&gt;
&lt;br /&gt;
 PEEK/de&lt;br /&gt;
 POKE/de&lt;br /&gt;
 POPALL/de&lt;br /&gt;
 POWER/de&lt;br /&gt;
 POWERDOWN/de&lt;br /&gt;
 POWERSAVE/de&lt;br /&gt;
 POWER MODE/de&lt;br /&gt;
 PRINT/de&lt;br /&gt;
 PRINTBIN/de&lt;br /&gt;
 PS2MOUSEXY/de&lt;br /&gt;
 PSET/de&lt;br /&gt;
 PULSEIN/de&lt;br /&gt;
 PULSEOUT/de&lt;br /&gt;
 PUSHALL/de&lt;br /&gt;
 PUT/de&lt;br /&gt;
&lt;br /&gt;
 QUOTE/de&lt;br /&gt;
 &lt;br /&gt;
 RAD2DEG/de&lt;br /&gt;
 RC5SEND/de&lt;br /&gt;
 RC5SENDEXT/de&lt;br /&gt;
 RC6SEND/de&lt;br /&gt;
 READ/de&lt;br /&gt;
 READEEPROM/de&lt;br /&gt;
 READHITAG/de&lt;br /&gt;
 READMAGCARD/de&lt;br /&gt;
 READSIG/de&lt;br /&gt;
 Übersetzt REM/de&lt;br /&gt;
 REPLACECHARS/de&lt;br /&gt;
 RESET/de&lt;br /&gt;
 RESTORE/de&lt;br /&gt;
 RETURN/de&lt;br /&gt;
 RIGHT/de&lt;br /&gt;
 RMDIR/de&lt;br /&gt;
 RND/de&lt;br /&gt;
 ROTATE/de&lt;br /&gt;
 ROUND/de&lt;br /&gt;
 RTRIM/de&lt;br /&gt;
 &lt;br /&gt;
 SECELAPSED/de&lt;br /&gt;
 SECOFDAY/de&lt;br /&gt;
 SEEK/de&lt;br /&gt;
 SELECT-CASE-END SELECT/de&lt;br /&gt;
 SENDSCAN/de&lt;br /&gt;
 SENDSCANKBD/de&lt;br /&gt;
 SERIN/de&lt;br /&gt;
 SEROUT/de&lt;br /&gt;
 SET/de&lt;br /&gt;
 SETFONT/de&lt;br /&gt;
 SETIPPROTOCOL/de&lt;br /&gt;
 SETREG/de&lt;br /&gt;
 SETTCP/de&lt;br /&gt;
 SETTCPREGS/de&lt;br /&gt;
 SGN/de&lt;br /&gt;
 SHIFT/de&lt;br /&gt;
 SHIFTCURSOR/de&lt;br /&gt;
 SHIFTIN/de&lt;br /&gt;
 SHIFTLCD/de&lt;br /&gt;
 SHIFTOUT/de&lt;br /&gt;
 SHOWPIC/de&lt;br /&gt;
 SHOWPICE/de&lt;br /&gt;
 SIN/de&lt;br /&gt;
 SINH/de&lt;br /&gt;
 SNTP/de&lt;br /&gt;
 SOCKETCLOSE/de&lt;br /&gt;
 SOCKETCONNECT/de&lt;br /&gt;
 SOCKETDISCONNECT/de&lt;br /&gt;
 SOCKETLISTEN/de&lt;br /&gt;
 SOCKETSTAT/de&lt;br /&gt;
 SONYSEND/de&lt;br /&gt;
 SORT/de&lt;br /&gt;
 SOUND/de&lt;br /&gt;
 SPACE/de&lt;br /&gt;
 SPC/de&lt;br /&gt;
 SPIIN/de&lt;br /&gt;
 SPIINIT/de&lt;br /&gt;
 SPIMOVE/de&lt;br /&gt;
 SPIOUT/de&lt;br /&gt;
 SPLIT/de&lt;br /&gt;
 SQR/de&lt;br /&gt;
 Übersetzt START/de&lt;br /&gt;
 STCHECK/de&lt;br /&gt;
 Übersetzt STOP/de&lt;br /&gt;
 STR/de&lt;br /&gt;
 STR2DIGITS/de&lt;br /&gt;
 STRING/de&lt;br /&gt;
 Übersetzt SUB/de&lt;br /&gt;
 SWAP/de&lt;br /&gt;
 SYSDAY/de&lt;br /&gt;
 SYSSEC/de&lt;br /&gt;
 SYSSECELAPSED/de&lt;br /&gt;
 &lt;br /&gt;
 TAN/de&lt;br /&gt;
 TANH/de&lt;br /&gt;
 TCPCHECKSUM/de&lt;br /&gt;
 TCPREAD/de&lt;br /&gt;
 TCPREADHEADER/de&lt;br /&gt;
 TCPWRITE/de&lt;br /&gt;
 TCPWRITESTR/de&lt;br /&gt;
 THIRDLINE/de&lt;br /&gt;
 TIME$/de&lt;br /&gt;
 TIME/de&lt;br /&gt;
 Übersetzt TOGGLE/de&lt;br /&gt;
 TRIM/de&lt;br /&gt;
 &lt;br /&gt;
 UCASE/de&lt;br /&gt;
 UDPREAD/de&lt;br /&gt;
 UDPREADHEADER/de&lt;br /&gt;
 UDPWRITE/de&lt;br /&gt;
 UDPWRITESTR/de&lt;br /&gt;
 UPPERLINE/de&lt;br /&gt;
 VAL/de&lt;br /&gt;
 VARPTR/de&lt;br /&gt;
 VER/de&lt;br /&gt;
 VERSION/de&lt;br /&gt;
 &lt;br /&gt;
 Übersetzt WAIT/de&lt;br /&gt;
 WAITKEY/de&lt;br /&gt;
 Übersetzt WAITMS/de&lt;br /&gt;
 Übersetzt WAITUS/de&lt;br /&gt;
 Übersetzt WHILE-WEND/de&lt;br /&gt;
 WRITE/de&lt;br /&gt;
 WRITEEEPROM/de&lt;br /&gt;
&lt;br /&gt;
 X10DETECT/de&lt;br /&gt;
 X10SEND/de&lt;br /&gt;
 XTEADECODE/de&lt;br /&gt;
 XTEAENCODE/de&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/1WVERIFY/de</id>
		<title>1WVERIFY/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/1WVERIFY/de"/>
				<updated>2013-03-01T17:30:28Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Siehe auch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Überprüft, ob eine ID am 1-wire-Bus vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;1WVERIFY&amp;lt;/span&amp;gt;&amp;amp;nbsp;ar(1)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;1WVERIFY&amp;lt;/span&amp;gt;&amp;amp;nbsp;ar(1) , port, pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beschreibung&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;604&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;16%&amp;quot; style=&amp;quot;width: 93px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Ar(1)&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 502px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Ein Byte-Array, welches die ID enthält, die überprüft werden soll.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;16%&amp;quot; style=&amp;quot;width: 93px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
port&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 502px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der Name des PORT PINx Registers wie z.B. PINB oder PIND. &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;16%&amp;quot; style=&amp;quot;width: 93px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
pin&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 502px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Die Pin-Nummer im Bereich von 0-7. Darf eine numerische Konstante oder Variable sein.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Rückgabewert der Variable ERR ist 0 wenn die ID auf dem Bus gefunden wurde, ansonsten ist ERR = 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Folgende Assembler-Routinen werden von der mcs.lib aufgerufen.&lt;br /&gt;
&lt;br /&gt;
_1wire_Search_Next&amp;amp;nbsp;: (ruft auf _1WIRE, _ADJUST_PIN , _ADJUST_BIT_ADDRESS)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[CONFIG 1WIRE]] , [[1WWRITE]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WRESET]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WREAD|1WREAD&amp;amp;nbsp;]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WSEARCHFIRST]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WSEARCHNEXT]]&amp;amp;nbsp; ,&amp;amp;nbsp;[[1WIRECOUNT]]&amp;amp;nbsp;,&amp;amp;nbsp;[[Using the 1 WIRE protocol|Using the 1wire protocol]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : 1wireSearch.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wsearch&lt;br /&gt;
'micro : Mega48&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot;&lt;br /&gt;
$crystal = 4000000&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 'Grundeinstellung 32 für den Hardware Stack&lt;br /&gt;
$swstack = 10 'Grundeinstellung 10 für den Software Stack&lt;br /&gt;
$framesize = 40 'Grundeinstellung 40 für den Frame Space&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config 1wire = Portb.0 'Angabe des Pins&lt;br /&gt;
'Am STK200 muß Jumper B.0 gesteckt sein&lt;br /&gt;
 &lt;br /&gt;
'Folgende Bytes werden von der Scan-Routine benötigt&lt;br /&gt;
'___1w_bitstorage , Byte zur Speicherung von Bits :&lt;br /&gt;
' lastdeviceflag Bit 0&lt;br /&gt;
' id_bit Bit 1&lt;br /&gt;
' cmp_id_bit Bit 2&lt;br /&gt;
' search_dir Bit 3&lt;br /&gt;
'___1wid_bit_number, Byte&lt;br /&gt;
'___1wlast_zero, Byte&lt;br /&gt;
'___1wlast_discrepancy , Byte&lt;br /&gt;
'___1wire_data , String * 7 (8 Bytes)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'[DIM benutzte Variablen]&lt;br /&gt;
'Mindestens 8 Bytes zur Speicherung der ID werden gebraucht&lt;br /&gt;
Dim Reg_no(8) As Byte&lt;br /&gt;
 &lt;br /&gt;
'ein Schleifenzähler und ein Word/Integer für die Anzahl der IDs am Bus&lt;br /&gt;
Dim I As Byte , W As Word&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'Suchen des ersten Teilnehmers am Bus&lt;br /&gt;
Reg_no(1) = 1wsearchfirst()&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8 'Ausgabe der ID im Hex-Format&lt;br /&gt;
 Print Hex(reg_no(i));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
'Suche nach anderen Teilmnehmern&lt;br /&gt;
Reg_no(1) = 1wsearchnext()&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(reg_no(i));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
Loop Until Err = 1 'Schleife bis zum ersten Fehler am Bus&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'Wenn ERR = 1 ist, wurde kein weiterer Teilnehmer gefunden&lt;br /&gt;
'Man kann auch die Anzahl der Teilnehmer am Bus zählen lassen&lt;br /&gt;
W = 1wirecount()&lt;br /&gt;
'Es ist WICHTIG zu beachten, daß die 1wirecount-Function ein Word/Integer zurückgibt&lt;br /&gt;
'Die Ergebnis-Variable muß vom Typ Word oder Integer sein&lt;br /&gt;
'Man kann sie natürlich in eine Byte-oder Long-Variable übertragen&lt;br /&gt;
Print W&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'als Bonus die nächste Routine :&lt;br /&gt;
' zuerst das Array mit einer existierenden ID füllen&lt;br /&gt;
Reg_no(1) = 1wsearchfirst()&lt;br /&gt;
' um ein Byte zu ändern und das Err-Flag zu testen, nächste Zeile auskommentieren&lt;br /&gt;
'Reg_no(1) = 2&lt;br /&gt;
'jetzt eine Prüfung, ob die ID existiert&lt;br /&gt;
1wverify Reg_no(1)&lt;br /&gt;
Print Err&lt;br /&gt;
'err =1 wenn die ID, welche mit Reg_no() übergeben wurde, nicht existiert&lt;br /&gt;
'optionaler Aufruf mit Angabe der Pinnummer: 1wverify reg_no(1),pinb,1&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'wie bei den anderen 1-Wire Befehlen/Funktionen, wird die Angabe von Port und Pinnummer unterstützt&lt;br /&gt;
'W = 1wirecount(pinb , 1) 'als Beispiel am Pin PINB.1&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/1WIRECOUNT/de</id>
		<title>1WIRECOUNT/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/1WIRECOUNT/de"/>
				<updated>2013-03-01T17:30:05Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Siehe auch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl ermittelt die Anzahl von 1wire-Slaves am Bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var2 = &amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;1WIRECOUNT&amp;lt;/span&amp;gt;()&lt;br /&gt;
&lt;br /&gt;
var2 = &amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;1WIRECOUNT&amp;lt;/span&amp;gt;( port , pin)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beschreibung&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: left;  text-indent: 0px;  padding: 0px 0px 0px 0px;  margin: 0px 0px 0px 4px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: solid 2px #000000;  border-spacing:0px;  border-collapse: collapse&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;604&amp;quot;&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:17%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;17%&amp;quot; | &lt;br /&gt;
var2&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Eine WORD-Variable, die die Anzahl Geräte am Bus anzeigt.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:17%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;17%&amp;quot; | &lt;br /&gt;
port&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Der Name des PORT PINx Registers wie z.B. PINB oder PIND.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:17%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;17%&amp;quot; | &lt;br /&gt;
pin&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Die Pin-Nummer im Bereich von 0-7. Darf eine numerische Konstante oder Variable sein. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Variable muß vom Typ Word oder Integer sein.&lt;br /&gt;
&lt;br /&gt;
Die 1wirecount()-Funktion kann benutzt werden, um zu ermitteln, wie oft die 1wsearchNext()-Funktion aufgerufen werden muß, um alle IDs vom Bus zu bekommen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die 1wirecount-Function benötigt 4 Bytes vom SRAM.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
___1w_bitstorage , Byte zur Speicherung von Bits&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
lastdeviceflag Bit 0&lt;br /&gt;
&lt;br /&gt;
id_bit Bit 1&lt;br /&gt;
&lt;br /&gt;
cmp_id_bit Bit 2&lt;br /&gt;
&lt;br /&gt;
search_dir Bit 3&lt;br /&gt;
&lt;br /&gt;
___1wid_bit_number, Byte&lt;br /&gt;
&lt;br /&gt;
___1wlast_zero, Byte&lt;br /&gt;
&lt;br /&gt;
___1wlast_discrepancy , Byte&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Folgende Assembler-Routinen werden von der mcs.lib aufgerufen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
_1wire_Count&amp;amp;nbsp;: (ruft auf _1WIRE, _1WIRE_SEARCH_FIRST , _1WIRE_SEARCH_NEXT)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Übergebene Parameter&amp;amp;nbsp;: R24&amp;amp;nbsp;: Pin-Nummer, R30&amp;amp;nbsp;: Port , Y+0,Y+1&amp;amp;nbsp;: 2 Bytes vom Software-Stack, X&amp;amp;nbsp;: Zeiger auf den Frame Space&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rückgabe von Y+0 und Y+1 mit dem Zählerwert. Wird auf die Zielvariable kopiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[CONFIG 1WIRE]] , [[1WWRITE]] , [[1WRESET]] , [[1WREAD|1WREAD ]] , [[1WSEARCHFIRST]] , [[1WSEARCHNEXT]] , [[1WVERIFY]] , [[Using the 1 WIRE protocol|Using the 1wire protocol]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : 1wireSearch.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wsearch&lt;br /&gt;
'micro : Mega48&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot;&lt;br /&gt;
$crystal = 4000000&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
$hwstack = 32 'Grundeinstellung 32 für den Hardware Stack&lt;br /&gt;
$swstack = 10 'Grundeinstellung 10 für den Software Stack&lt;br /&gt;
$framesize = 40 'Grundeinstellung 40 für den Frame Space&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Config 1wire = Portb.0 'Angabe des Pins&lt;br /&gt;
'Am STK200 muß Jumper B.0 gesteckt sein&lt;br /&gt;
 &lt;br /&gt;
'Folgende Bytes werden von der Scan-Routine benötigt&lt;br /&gt;
'___1w_bitstorage , Byte zur Speicherung von Bits :&lt;br /&gt;
' lastdeviceflag Bit 0&lt;br /&gt;
' id_bit Bit 1&lt;br /&gt;
' cmp_id_bit Bit 2&lt;br /&gt;
' search_dir Bit 3&lt;br /&gt;
'___1wid_bit_number, Byte&lt;br /&gt;
'___1wlast_zero, Byte&lt;br /&gt;
'___1wlast_discrepancy , Byte&lt;br /&gt;
'___1wire_data , String * 7 (8 Bytes)&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'[DIM benutzte Variablen]&lt;br /&gt;
'Mindestens 8 Bytes zur Speicherung der ID werden gebraucht&lt;br /&gt;
Dim Reg_no(8) As Byte&lt;br /&gt;
 &lt;br /&gt;
'ein Schleifenzähler und ein Word/Integer für die Anzahl der IDs am Bus&lt;br /&gt;
Dim I As Byte , W As Word&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'Suchen des ersten Teilnehmers am Bus&lt;br /&gt;
Reg_no(1) = 1wsearchfirst()&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
For I = 1 To 8 'Ausgabe der ID im Hex-Format&lt;br /&gt;
 Print Hex(reg_no(i));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Do&lt;br /&gt;
'Suche nach anderen Teilmnehmern&lt;br /&gt;
Reg_no(1) = 1wsearchnext()&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(reg_no(i));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
Loop Until Err = 1 'Schleife bis zum ersten Fehler am Bus&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'Wenn ERR = 1 ist, wurde kein weiterer Teilnehmer gefunden&lt;br /&gt;
'Man kann auch die Anzahl der Teilnehmer am Bus zählen lassen&lt;br /&gt;
W = 1wirecount()&lt;br /&gt;
'Es ist WICHTIG zu beachten, daß die 1wirecount-Function ein Word/Integer zurückgibt&lt;br /&gt;
'Die Ergebnis-Variable muß vom Typ Word oder Integer sein&lt;br /&gt;
'Man kann sie natürlich in eine Byte-oder Long-Variable übertragen&lt;br /&gt;
Print W&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'als Bonus die nächste Routine :&lt;br /&gt;
' zuerst das Array mit einer existierenden ID füllen&lt;br /&gt;
Reg_no(1) = 1wsearchfirst()&lt;br /&gt;
' um ein Byte zu ändern und das Err-Flag zu testen, nächste Zeile auskommentieren&lt;br /&gt;
'Reg_no(1) = 2&lt;br /&gt;
'jetzt eine Prüfung, ob die ID existiert&lt;br /&gt;
1wverify Reg_no(1)&lt;br /&gt;
Print Err&lt;br /&gt;
'err =1 wenn die ID, welche mit Reg_no() übergeben wurde, nicht existiert&lt;br /&gt;
'optionaler Aufruf mit Angabe der Pinnummer: 1wverify reg_no(1),pinb,1&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'wie bei den anderen 1-Wire Befehlen/Funktionen, wird die Angabe von Port und Pinnummer unterstützt&lt;br /&gt;
'W = 1wirecount(pinb , 1) 'als Beispiel am Pin PINB.1&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/1WSEARCHNEXT/de</id>
		<title>1WSEARCHNEXT/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/1WSEARCHNEXT/de"/>
				<updated>2013-03-01T17:29:45Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Siehe auch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Liest die nächste ID vom 1-wire-Bus in eine Variable(Array).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var2 = &amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;1WSEARCHNEXT&amp;lt;/span&amp;gt;()&lt;br /&gt;
&lt;br /&gt;
var2 = &amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;1WSEARCHNEXT&amp;lt;/span&amp;gt;( port , pin)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beschreibung&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: left;  text-indent: 0px;  padding: 0px 0px 0px 0px;  margin: 0px 0px 0px 4px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: solid 2px #000000;  border-spacing:0px;  border-collapse: collapse&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;604&amp;quot;&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:13%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;13%&amp;quot; | &lt;br /&gt;
var2&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Eine Variable oder Array mit mindestens 8 Byte Länge, in welche die 8-Byte-ID vom nächsten 1wire-Gerät am Bus übertragen wird. &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:13%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;13%&amp;quot; | &lt;br /&gt;
Port&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Der Name des PORT PINx Registers wie z.B. PINB oder PIND.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:13%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;13%&amp;quot; | &lt;br /&gt;
Pin&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Die Pin-Nummer im Bereich von 0-7. Darf eine numerische Konstante oder Variable sein. &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die 1wireSearchFirst() Funktion muss einmal aufgerufen werden, um den ID-Suchprozess zu starten. Nach der 1wireSearchFirst() Funktion können fortlaufend zusätzliche IDs mit der 1wSearchNext Funktion gesucht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein String kann nicht zur Übertragung der Werte vom Bus benutzt werden, da eine Null als Wert in einem String als Ende-Zeichen interpretiert wird. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am besten ist es, ein Byte-Array zu verwenden, wie im Code-Beispiel gezeigt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die 1wsearchnext Funktion benötigt 4 Bytes SRAM. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
___1w_bitstorage , Byte zur Speicherung von Bits&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
lastdeviceflag Bit 0&lt;br /&gt;
&lt;br /&gt;
id_bit Bit 1&lt;br /&gt;
&lt;br /&gt;
cmp_id_bit Bit 2&lt;br /&gt;
&lt;br /&gt;
search_dir Bit 3&lt;br /&gt;
&lt;br /&gt;
___1wid_bit_number, Byte&lt;br /&gt;
&lt;br /&gt;
___1wlast_zero, Byte&lt;br /&gt;
&lt;br /&gt;
___1wlast_discrepancy , Byte&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Folgende Assembler-Routinen werden von der mcs.lib aufgerufen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
_1wire_Search_Next&amp;amp;nbsp;: (ruft auf _1WIRE, _ADJUST_PIN , _ADJUST_BIT_ADDRESS)&lt;br /&gt;
&lt;br /&gt;
Übergebene Parameter&amp;amp;nbsp;: R24&amp;amp;nbsp;: Pin-Nummer, R30&amp;amp;nbsp;: Port , X&amp;amp;nbsp;: Adresse des Zielarrays&lt;br /&gt;
&lt;br /&gt;
Rückgabewert: keiner.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[CONFIG 1WIRE]] , [[1WWRITE]] , [[1WRESET]] , [[1WREAD|1WREAD ]], [[1WSEARCHFIRST]], [[1WIRECOUNT]], [[1WVERIFY]], [[Using the 1 WIRE protocol|Using the 1wire protocol]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : 1wireSearch.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wsearch&lt;br /&gt;
'micro : Mega48&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot;&lt;br /&gt;
$crystal = 4000000&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 'Grundeinstellung 32 für den Hardware Stack&lt;br /&gt;
$swstack = 10 'Grundeinstellung 10 für den Software Stack&lt;br /&gt;
$framesize = 40 'Grundeinstellung 40 für den Frame Space&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config 1wire = Portb.0 'Angabe des Pins&lt;br /&gt;
'Am STK200 muß Jumper B.0 gesteckt sein&lt;br /&gt;
 &lt;br /&gt;
'Folgende Bytes werden von der Scan-Routine benötigt&lt;br /&gt;
'___1w_bitstorage , Byte zur Speicherung von Bits :&lt;br /&gt;
' lastdeviceflag Bit 0&lt;br /&gt;
' id_bit Bit 1&lt;br /&gt;
' cmp_id_bit Bit 2&lt;br /&gt;
' search_dir Bit 3&lt;br /&gt;
'___1wid_bit_number, Byte&lt;br /&gt;
'___1wlast_zero, Byte&lt;br /&gt;
'___1wlast_discrepancy , Byte&lt;br /&gt;
'___1wire_data , String * 7 (8 Bytes)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'[DIM benutzte Variablen]&lt;br /&gt;
'Mindestens 8 Bytes zur Speicherung der ID werden gebraucht&lt;br /&gt;
Dim Reg_no(8) As Byte&lt;br /&gt;
 &lt;br /&gt;
'ein Schleifenzähler und ein Word/Integer für die Anzahl der IDs am Bus&lt;br /&gt;
Dim I As Byte , W As Word&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'Suchen des ersten Teilnehmers am Bus&lt;br /&gt;
Reg_no(1) = 1wsearchfirst()&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8 'Ausgabe der ID im Hex-Format&lt;br /&gt;
 Print Hex(reg_no(i));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
'Suche nach anderen Teilmnehmern&lt;br /&gt;
Reg_no(1) = 1wsearchnext()&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(reg_no(i));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
Loop Until Err = 1 'Schleife bis zum ersten Fehler am Bus&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'Wenn ERR = 1 ist, wurde kein weiterer Teilnehmer gefunden&lt;br /&gt;
'Man kann auch die Anzahl der Teilnehmer am Bus zählen lassen&lt;br /&gt;
W = 1wirecount()&lt;br /&gt;
'Es ist WICHTIG zu beachten, daß die 1wirecount-Function ein Word/Integer zurückgibt&lt;br /&gt;
'Die Ergebnis-Variable muß vom Typ Word oder Integer sein&lt;br /&gt;
'Man kann sie natürlich in eine Byte-oder Long-Variable übertragen&lt;br /&gt;
Print W&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'als Bonus die nächste Routine :&lt;br /&gt;
' zuerst das Array mit einer existierenden ID füllen&lt;br /&gt;
Reg_no(1) = 1wsearchfirst()&lt;br /&gt;
' um ein Byte zu ändern und das Err-Flag zu testen, nächste Zeile auskommentieren&lt;br /&gt;
'Reg_no(1) = 2&lt;br /&gt;
'jetzt eine Prüfung, ob die ID existiert&lt;br /&gt;
1wverify Reg_no(1)&lt;br /&gt;
Print Err&lt;br /&gt;
'err =1 wenn die ID, welche mit Reg_no() übergeben wurde, nicht existiert&lt;br /&gt;
'optionaler Aufruf mit Angabe der Pinnummer: 1wverify reg_no(1),pinb,1&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'wie bei den anderen 1-Wire Befehlen/Funktionen, wird die Angabe von Port und Pinnummer unterstützt&lt;br /&gt;
'W = 1wirecount(pinb , 1) 'als Beispiel am Pin PINB.1&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/1WSEARCHFIRST/de</id>
		<title>1WSEARCHFIRST/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/1WSEARCHFIRST/de"/>
				<updated>2013-03-01T17:29:26Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Siehe auch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Liest die erste ID vom 1-wire-Bus in ein Variablen-Array&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var2 = &amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;1WSEARCHFIRST&amp;lt;/span&amp;gt;()&lt;br /&gt;
&lt;br /&gt;
var2 = &amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;1WSEARCHFIRST&amp;lt;/span&amp;gt;( port , pin)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beschreibung&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: left;  text-indent: 0px;  padding: 0px 0px 0px 0px;  margin: 0px 0px 0px 4px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: solid 2px #000000;  border-spacing:0px;  border-collapse: collapse&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;604&amp;quot;&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:15%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;15%&amp;quot; | &lt;br /&gt;
var2&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Eine Variable oder Array mit mindestens 8 Byte Länge, in welche die 8-Byte-ID von 1. 1wire-Gerät am Bus übertragen wird.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:15%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;15%&amp;quot; | &lt;br /&gt;
port&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Der Name des PORT PINx Registers wie z.B. PINB oder PIND.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:15%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;15%&amp;quot; | &lt;br /&gt;
pin&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Die Pin-Nummer im Bereich von 0-7. Darf eine numerische Konstante oder Variable sein.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die 1wireSearchFirst() Funktion muss einmal aufgerufen werden, um den ID-Suchprozess zu starten. Nach der 1wireSearchFirst() Funktion können fortlaufend zusätzliche IDs mit der  [[1WSEARCHNEXT|1wSearchNext]] Funktion gesucht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein String kann nicht zur Übertragung der Werte vom Bus benutzt werden, da eine Null als Wert in einem String als Ende-Zeichen interpretiert wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am besten ist es, ein Byte-Array zu verwenden, wie im Code-Beispiel gezeigt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die 1wsearchfirst Funktion benötigt 4 Bytes SRAM.&lt;br /&gt;
&lt;br /&gt;
___1w_bitstorage , Byte zur Speicherung von Bits&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
lastdeviceflag Bit 0&lt;br /&gt;
&lt;br /&gt;
id_bit Bit 1&lt;br /&gt;
&lt;br /&gt;
cmp_id_bit Bit 2&lt;br /&gt;
&lt;br /&gt;
search_dir Bit 3&lt;br /&gt;
&lt;br /&gt;
___1wid_bit_number, Byte&lt;br /&gt;
&lt;br /&gt;
___1wlast_zero, Byte&lt;br /&gt;
&lt;br /&gt;
___1wlast_discrepancy , Byte&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ASM&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Folgende Assembler-Routinen werden von der mcs.lib aufgerufen. &lt;br /&gt;
&lt;br /&gt;
_1wire_Search_First&amp;amp;nbsp;: (ruft auf _1WIRE, _ADJUST_PIN , _ADJUST_BIT_ADDRESS)&lt;br /&gt;
&lt;br /&gt;
Übergebene Parameter&amp;amp;nbsp;: R24&amp;amp;nbsp;: Pin-Nummer, R30&amp;amp;nbsp;: Port , X&amp;amp;nbsp;: Adresse des Ziel-Arrays&lt;br /&gt;
&lt;br /&gt;
Rückgabewert: keiner.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[CONFIG 1WIRE]] , [[1WWRITE]] , [[1WRESET]] , [[1WREAD|1WREAD ]] , [[1WSEARCHNEXT]] , [[1WIRECOUNT]] , [[1WVERIFY]] , [[Using the 1 WIRE protocol|Using the 1wire protocol]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : 1wireSearch.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wsearch&lt;br /&gt;
'micro : Mega48&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot;&lt;br /&gt;
$crystal = 4000000&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 'Grundeinstellung 32 für den Hardware Stack&lt;br /&gt;
$swstack = 10 'Grundeinstellung 10 für den Software Stack&lt;br /&gt;
$framesize = 40 'Grundeinstellung 40 für den Frame Space&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config 1wire = Portb.0 'Angabe des Pins&lt;br /&gt;
'Am STK200 muß Jumper B.0 gesteckt sein&lt;br /&gt;
 &lt;br /&gt;
'Folgende Bytes werden von der Scan-Routine benötigt&lt;br /&gt;
'___1w_bitstorage , Byte zur Speicherung von Bits :&lt;br /&gt;
' lastdeviceflag Bit 0&lt;br /&gt;
' id_bit Bit 1&lt;br /&gt;
' cmp_id_bit Bit 2&lt;br /&gt;
' search_dir Bit 3&lt;br /&gt;
'___1wid_bit_number, Byte&lt;br /&gt;
'___1wlast_zero, Byte&lt;br /&gt;
'___1wlast_discrepancy , Byte&lt;br /&gt;
'___1wire_data , String * 7 (8 Bytes)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'[DIM benutzte Variablen]&lt;br /&gt;
'Mindestens 8 Bytes zur Speicherung der ID werden gebraucht&lt;br /&gt;
Dim Reg_no(8) As Byte&lt;br /&gt;
 &lt;br /&gt;
'ein Schleifenzähler und ein Word/Integer für die Anzahl der IDs am Bus&lt;br /&gt;
Dim I As Byte , W As Word&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'Suchen des ersten Teilnehmers am Bus&lt;br /&gt;
Reg_no(1) = 1wsearchfirst()&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8 'Ausgabe der ID im Hex-Format&lt;br /&gt;
 Print Hex(reg_no(i));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
'Suche nach anderen Teilmnehmern&lt;br /&gt;
Reg_no(1) = 1wsearchnext()&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(reg_no(i));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
Loop Until Err = 1 'Schleife bis zum ersten Fehler am Bus&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'Wenn ERR = 1 ist, wurde kein weiterer Teilnehmer gefunden&lt;br /&gt;
'Man kann auch die Anzahl der Teilnehmer am Bus zählen lassen&lt;br /&gt;
W = 1wirecount()&lt;br /&gt;
'Es ist WICHTIG zu beachten, daß die 1wirecount-Function ein Word/Integer zurückgibt&lt;br /&gt;
'Die Ergebnis-Variable muß vom Typ Word oder Integer sein&lt;br /&gt;
'Man kann sie natürlich in eine Byte-oder Long-Variable übertragen&lt;br /&gt;
Print W&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'als Bonus die nächste Routine :&lt;br /&gt;
' zuerst das Array mit einer existierenden ID füllen&lt;br /&gt;
Reg_no(1) = 1wsearchfirst()&lt;br /&gt;
' um ein Byte zu ändern und das Err-Flag zu testen, nächste Zeile auskommentieren&lt;br /&gt;
'Reg_no(1) = 2&lt;br /&gt;
'jetzt eine Prüfung, ob die ID existiert&lt;br /&gt;
1wverify Reg_no(1)&lt;br /&gt;
Print Err&lt;br /&gt;
'err =1 wenn die ID, welche mit Reg_no() übergeben wurde, nicht existiert&lt;br /&gt;
'optionaler Aufruf mit Angabe der Pinnummer: 1wverify reg_no(1),pinb,1&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'wie bei den anderen 1-Wire Befehlen/Funktionen, wird die Angabe von Port und Pinnummer unterstützt&lt;br /&gt;
'W = 1wirecount(pinb , 1) 'als Beispiel am Pin PINB.1&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/1WREAD/de</id>
		<title>1WREAD/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/1WREAD/de"/>
				<updated>2013-03-01T17:29:04Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Siehe auch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl liest Daten vom 1wire bus in eine Variable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
var2 = &amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;1WREAD&amp;lt;/span&amp;gt;( [ bytes] )&lt;br /&gt;
&lt;br /&gt;
var2 = &amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;1WREAD&amp;lt;/span&amp;gt;( bytes , port , pin)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beschreibung&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: left;  text-indent: 0px;  padding: 0px 0px 0px 0px;  margin: 0px 0px 0px 4px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: solid 2px #000000;  border-spacing:0px;  border-collapse: collapse&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;604&amp;quot;&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:13%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;13%&amp;quot; | &lt;br /&gt;
var2&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Liest ein Byte vom Bus und speichert es in die Variable var2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Anzahl der zu lesenden Bytes kann optional angegeben werden.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:13%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;13%&amp;quot; | &lt;br /&gt;
Port&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Der Name des PORT PINx Registers wie z.B. PINB oder PIND.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:13%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;13%&amp;quot; | &lt;br /&gt;
Pin&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Die Pin-Nummer im Bereich von 0-7. Darf eine numerische Konstante oder Variable sein.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mehrere 1-wire Busse an verschiedenen Pins werden unterstützt.&lt;br /&gt;
&lt;br /&gt;
Dafür müssen die Optionen port und pin angegeben werden, die für die jeweilige Kommunikation benutzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die 1wreset, 1wwrite und 1wread Befehle funktionieren bei Benutzung der alten Schreibweise. Der Pin kann über die Compiler-Optionen oder mit dem [[CONFIG 1WIRE|CONFIG 1WIRE]] Befehl eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Syntax für zusätzliche 1-wire Busse lautet&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
1WRESET port, pin&lt;br /&gt;
&lt;br /&gt;
1WWRITE var/constant , bytes, port, pin&lt;br /&gt;
&lt;br /&gt;
var = 1WREAD(bytes, port, pin) 'für das Lesen mehrere Bytes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[CONFIG 1WIRE]] , [[1WWRITE]] , [[1WRESET]] , [[1WSEARCHFIRST]] , [[1WSEARCHNEXT]] , [[1WIRECOUNT]] , [[1WVERIFY]] , [[Using the 1 WIRE protocol|Using the 1wire protocol]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : 1wire.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wreset, 1wwrite and 1wread()&lt;br /&gt;
'micro : Mega48&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
' pull-up of 4K7 required to VCC from Portb.2&lt;br /&gt;
' DS2401 serial button connected to Portb.2&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot;&lt;br /&gt;
$crystal = 4000000&lt;br /&gt;
&lt;br /&gt;
$hwstack = 32 'Grundeinstellung 32 für den Hardware Stack&lt;br /&gt;
$swstack = 10 'Grundeinstellung 10 für den Software Stack&lt;br /&gt;
$framesize = 40 'Grundeinstellung 40 für den Frame Space&lt;br /&gt;
&lt;br /&gt;
'wenn nur Bytes benutzt werden, folgende Lib für kleineren Code verwenden&lt;br /&gt;
$lib &amp;quot;mcsbyte.lib&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Config 1wire = Portb.0 'Angabe des Pins&lt;br /&gt;
'Am STK200 muß Jumper B.0 gesteckt sein&lt;br /&gt;
Dim Ar(8) As Byte , A As Byte , I As Byte&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Do&lt;br /&gt;
Wait 1&lt;br /&gt;
1wreset 'Resettet den Bus&lt;br /&gt;
Print Err 'Gibt bei einem Fehler eine 1 aus&lt;br /&gt;
1wwrite &amp;amp;H33 'Kommando ROM lesen&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Ar(i) = 1wread() 'Array beschreiben&lt;br /&gt;
Next&lt;br /&gt;
&lt;br /&gt;
'8 Bytes können auch mit einem mal gelesen werden, dazu folgende Zeile auskommentieren&lt;br /&gt;
'und die For-Next-Schleife oben löschen&lt;br /&gt;
&lt;br /&gt;
'Ar(1) = 1wread(8) 'read 8 bytes&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i)); 'Ausgabe der gelesenen Werte &lt;br /&gt;
Next&lt;br /&gt;
Print 'Zeilenwechsel&lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
'Achtung, der Beispielcode läuft bis zu diesem Punkt,&lt;br /&gt;
'weil die Do-Loop-Schleife nicht verlassen wird&lt;br /&gt;
&lt;br /&gt;
'neu ist die Möglichkeit, mehr als einen 1-Wire-Bus zu benutzen &lt;br /&gt;
'Dazu muß folgende Syntax verwendet werden:&lt;br /&gt;
&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Ar(i) = 0 'Array löschen, um zu sehen, daß es funktioniert&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
1wreset Pinb , 2 'Verwendung von port und pin für den 2. Bus&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , 2 'die Anzahl Bytes muß angegeben werden&lt;br /&gt;
'1wwrite Ar(1) , 5,pinb,2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'lesen ist auch verschieden&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , 2) 'liest 8 Bytes von Pin 2 an PortB&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Print Hex(ar(i));&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'man kann auch eine Schleife mit einer Variable für die Bitnummer erzeugen!&lt;br /&gt;
For I = 0 To 3 'für Pin 0-3&lt;br /&gt;
1wreset Pinb , I&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , I&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , I)&lt;br /&gt;
For A = 1 To 8&lt;br /&gt;
 Print Hex(ar(a));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
Next&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/1WWRITE/de</id>
		<title>1WWRITE/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/1WWRITE/de"/>
				<updated>2013-03-01T17:28:27Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Siehe auch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
Dieser Befehl sendet eine Variable auf den 1-Wire-Bus&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;1WWRITE&amp;lt;/span&amp;gt; var1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;1WWRITE&amp;lt;/span&amp;gt; var1, bytes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;1WWRITE&amp;lt;/span&amp;gt; var1 , bytes , port , pin&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beschreibung&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: left;  text-indent: 0px;  padding: 0px 0px 0px 0px;  margin: 0px 0px 0px 4px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: solid 2px #000000;  border-spacing:0px;  border-collapse: collapse&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;604&amp;quot;&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:14%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; | &lt;br /&gt;
var1&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Sendet den Inhalt von var1 auf den Bus. Optional kann die Anzahl Bytes angegeben werden.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:14%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; | &lt;br /&gt;
bytes&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Die Anzahl der zu schreibenden Bytes. Muss angegeben werden, wenn die Optionen port und pin benutzt werden.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:14%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; | &lt;br /&gt;
port&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Der Name des PORT PINx Registers wie z.B. PINB oder PIND.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:14%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;14%&amp;quot; | &lt;br /&gt;
pin&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Die Pin-Nummer im Bereich von 0-7. Darf eine numerische Konstante oder Variable sein.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mehrere 1-wire Busse an verschiedenen Pins werden unterstützt.&lt;br /&gt;
Dafür müssen die Optionen port und pin angegeben werden, die für die jeweilige Kommunikation benutzt werden &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die 1wreset, 1wwrite und 1wread Befehle funktionieren bei Benutzung der alten Schreibweise. Der Pin kann über die Compiler-Optionen oder mit dem [[CONFIG 1WIRE|CONFIG 1WIRE]] Befehl eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Schreibweise für zusätzliche 1-wire Busse lautet&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
1WRESET port , pin&lt;br /&gt;
&lt;br /&gt;
1WWRITE var/constant, bytes, port , pin&lt;br /&gt;
&lt;br /&gt;
var = 1WREAD(bytes, port, pin) ,für das Lesen mehrere Bytes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[CONFIG 1WIRE]] , [[1WRESET]] , [[1WREAD|1WREAD ]] , [[1WSEARCHFIRST]] , [[1WSEARCHNEXT]] , [[1WIRECOUNT]] , [[1WVERIFY]] , [[Using the 1 WIRE protocol|Using the 1wire protocol]]&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : 1wire.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wreset, 1wwrite and 1wread()&lt;br /&gt;
'micro : Mega48&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
' pull-up of 4K7 required to VCC from Portb.2&lt;br /&gt;
' DS2401 serial button connected to Portb.2&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot;&lt;br /&gt;
$crystal = 4000000&lt;br /&gt;
&lt;br /&gt;
$hwstack = 32 'Grundeinstellung 32 für den Hardware Stack&lt;br /&gt;
$swstack = 10 'Grundeinstellung 10 für den Software Stack&lt;br /&gt;
$framesize = 40 'Grundeinstellung 40 für den Frame Space&lt;br /&gt;
&lt;br /&gt;
'wenn nur Bytes benutzt werden, folgende Lib für kleineren Code verwenden&lt;br /&gt;
$lib &amp;quot;mcsbyte.lib&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Config 1wire = Portb.0 'Angabe des Pins&lt;br /&gt;
'Am STK200 muß Jumper B.0 gesteckt sein&lt;br /&gt;
Dim Ar(8) As Byte , A As Byte , I As Byte&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Do&lt;br /&gt;
Wait 1&lt;br /&gt;
1wreset 'Resettet den Bus&lt;br /&gt;
Print Err 'Gibt bei einem Fehler eine 1 aus&lt;br /&gt;
1wwrite &amp;amp;H33 'Kommando ROM lesen&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Ar(i) = 1wread() 'Array beschreiben&lt;br /&gt;
Next&lt;br /&gt;
&lt;br /&gt;
'8 Bytes können auch mit einem mal gelesen werden, dazu folgende Zeile auskommentieren&lt;br /&gt;
'und die For-Next-Schleife oben löschen&lt;br /&gt;
&lt;br /&gt;
'Ar(1) = 1wread(8) 'read 8 bytes&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i)); 'Ausgabe der gelesenen Werte &lt;br /&gt;
Next&lt;br /&gt;
Print 'Zeilenwechsel&lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
'Achtung, der Beispielcode läuft bis zu diesem Punkt,&lt;br /&gt;
'weil die Do-Loop-Schleife nicht verlassen wird&lt;br /&gt;
&lt;br /&gt;
'neu ist die Möglichkeit, mehr als einen 1-Wire-Bus zu benutzen &lt;br /&gt;
'Dazu muß folgende Syntax verwendet werden:&lt;br /&gt;
&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Ar(i) = 0 'Array löschen, um zu sehen, daß es funktioniert&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
1wreset Pinb , 2 'Verwendung von port und pin für den 2. Bus&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , 2 'die Anzahl Bytes muß angegeben werden&lt;br /&gt;
'1wwrite Ar(1) , 5,pinb,2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'lesen ist auch verschieden&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , 2) 'liest 8 Bytes von Pin 2 an PortB&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Print Hex(ar(i));&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'man kann auch eine Schleife mit einer Variable für die Bitnummer erzeugen!&lt;br /&gt;
For I = 0 To 3 'für Pin 0-3&lt;br /&gt;
1wreset Pinb , I&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , I&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , I)&lt;br /&gt;
For A = 1 To 8&lt;br /&gt;
 Print Hex(ar(a));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
Next&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_Language_Reference/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/1WRESET/de</id>
		<title>1WRESET/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/1WRESET/de"/>
				<updated>2013-03-01T17:27:41Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Siehe auch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl schaltet den 1wire Pin in den korrekten Status und sendet einen 1-wire reset auf den Bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;1WRESET&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;1WRESET&amp;lt;/span&amp;gt; , PORT , PIN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beschreibung&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: left;  text-indent: 0px;  padding: 0px 0px 0px 0px;  margin: 0px 0px 0px 4px&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border: solid 2px #000000;  border-spacing:0px;  border-collapse: collapse&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; width=&amp;quot;604&amp;quot;&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:16%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;16%&amp;quot; | &lt;br /&gt;
1WRESET&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Resettet den 1WIRE Bus. Die Fehler-Variable ERR wird zu 1 wenn ein Fehler auftritt.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:16%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;16%&amp;quot; | &lt;br /&gt;
Port&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Der Name des PORT PINx Registers wie z.B. PINB oder PIND. &lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;text-align:left;  vertical-align:top&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:16%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;16%&amp;quot; | &lt;br /&gt;
Pin&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:100%;  border: solid 1px #000000&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; | &lt;br /&gt;
Die Pin-Nummer im Bereich von 0-7. Darf eine numerische Konstante oder Variable sein.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die globale Variable Err wird gesetzt, wenn ein Fehler auftritt.&lt;br /&gt;
&lt;br /&gt;
Mehrere 1-wire Busse an verschiedenen Pins werden unterstützt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dafür müssen die Optionen port und pin angegeben werden, die für die jeweilige Kommunikation benutzt werden. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die 1wreset, 1wwrite und 1wread Befehle funktionieren bei Benutzung der alten Schreibweise. Der Pin kann über die Compiler-Optionen oder mit dem [[CONFIG 1WIRE|CONFIG 1WIRE]] Befehl eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Syntax für zusätzliche 1-wire Busse lautet&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1WRESET port , pin&lt;br /&gt;
&lt;br /&gt;
1WWRITE var/constant ,bytes] , port, pin&lt;br /&gt;
&lt;br /&gt;
var = 1WREAD( bytes) , Lesen am vorher konfiguriertem 1 wire Pin&lt;br /&gt;
&lt;br /&gt;
var = 1WREAD(bytes, port, pin) , zum Lesen mehrerer Bytes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[CONFIG 1WIRE]] , [[1WWRITE]] , [[1WREAD|1WREAD ]] , [[1WSEARCHFIRST]] , [[1WSEARCHNEXT]] , [[1WIRECOUNT]] , [[1WVERIFY]] , [[Using the 1 WIRE protocol|Using the 1wire protocol]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : 1wire.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wreset, 1wwrite and 1wread()&lt;br /&gt;
'micro : Mega48&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
' pull-up of 4K7 required to VCC from Portb.2&lt;br /&gt;
' DS2401 serial button connected to Portb.2&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot;&lt;br /&gt;
$crystal = 4000000&lt;br /&gt;
&lt;br /&gt;
$hwstack = 32 'Grundeinstellung 32 für den Hardware Stack&lt;br /&gt;
$swstack = 10 'Grundeinstellung 10 für den Software Stack&lt;br /&gt;
$framesize = 40 'Grundeinstellung 40 für den Frame Space&lt;br /&gt;
&lt;br /&gt;
'wenn nur Bytes benutzt werden, folgende Lib für kleineren Code verwenden&lt;br /&gt;
$lib &amp;quot;mcsbyte.lib&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Config 1wire = Portb.0 'Angabe des Pins&lt;br /&gt;
'Am STK200 muß Jumper B.0 gesteckt sein&lt;br /&gt;
Dim Ar(8) As Byte , A As Byte , I As Byte&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Do&lt;br /&gt;
Wait 1&lt;br /&gt;
1wreset 'Resettet den Bus&lt;br /&gt;
Print Err 'Gibt bei einem Fehler eine 1 aus&lt;br /&gt;
1wwrite &amp;amp;H33 'Kommando ROM lesen&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Ar(i) = 1wread() 'Array beschreiben&lt;br /&gt;
Next&lt;br /&gt;
&lt;br /&gt;
'8 Bytes können auch mit einem mal gelesen werden, dazu folgende Zeile auskommentieren&lt;br /&gt;
'und die For-Next-Schleife oben löschen&lt;br /&gt;
&lt;br /&gt;
'Ar(1) = 1wread(8) 'read 8 bytes&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i)); 'Ausgabe der gelesenen Werte &lt;br /&gt;
Next&lt;br /&gt;
Print 'Zeilenwechsel&lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
'Achtung, der Beispielcode läuft bis zu diesem Punkt,&lt;br /&gt;
'weil die Do-Loop-Schleife nicht verlassen wird&lt;br /&gt;
&lt;br /&gt;
'neu ist die Möglichkeit, mehr als einen 1-Wire-Bus zu benutzen &lt;br /&gt;
'Dazu muß folgende Syntax verwendet werden:&lt;br /&gt;
&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Ar(i) = 0 'Array löschen, um zu sehen, daß es funktioniert&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
1wreset Pinb , 2 'Verwendung von port und pin für den 2. Bus&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , 2 'die Anzahl Bytes muß angegeben werden&lt;br /&gt;
'1wwrite Ar(1) , 5,pinb,2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'lesen ist auch verschieden&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , 2) 'liest 8 Bytes von Pin 2 an PortB&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Print Hex(ar(i));&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'man kann auch eine Schleife mit einer Variable für die Bitnummer erzeugen!&lt;br /&gt;
For I = 0 To 3 'für Pin 0-3&lt;br /&gt;
1wreset Pinb , I&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , I&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , I)&lt;br /&gt;
For A = 1 To 8&lt;br /&gt;
 Print Hex(ar(a));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
Next&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/CONFIG_1WIRE/de</id>
		<title>CONFIG 1WIRE/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/CONFIG_1WIRE/de"/>
				<updated>2013-03-01T17:26:25Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Konfiguriert den Pin zur Benutzung mit 1-Wire und überschreibt die Compiler-Einstellung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;CONFIG 1WIRE&amp;lt;/span&amp;gt;&amp;amp;nbsp;= pin [, extended=0|1]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beschreibung&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;485&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;20%&amp;quot; style=&amp;quot;width: 94px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Pin&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;106%&amp;quot; style=&amp;quot;width: 382px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der Port Pin wie z.B. PORTB.0&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;20%&amp;quot; style=&amp;quot;width: 94px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
extended&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;106%&amp;quot; style=&amp;quot;width: 382px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Eine optionale Konstante, welche 0 oder 1 sein muss.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der CONFIG 1WIRE Befehl überschreibt die Compiler-Einstellungen und sollte bevorzugt werden, da auf diesem Weg die Einstellung im Quellcode gespeichert wird.&lt;br /&gt;
Es kann nur ein Pin für 1wire angegeben werden, da mehrere 1-Wire Gräte an einem Bus betrieben werden können.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man kann auch mehrere Pins und damit mehrere Busse benutzen. Für diesen Fall benötigen alle 1-Wire Befehle und Funktionen die Angabe des Ports und des Pins. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die 1-Wire Kommandos und Funktionen setzen automatisch das Datenrichtungsregister und das Portregister in den richtigen Zustand.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist wichtig, dass am 1-wire-Bus ein Pullup-Widerstand von 4,7 Kiloohm vorhanden ist. Der interne Pullup-Widerstand des AVRs ist nicht geeignet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige 1-Wire-Chips benötigen eine extra 5V-versorgung. 1-Wire ist nur ein Werbe-Begriff, die GND-Leitung wird trotzdem noch benötigt. Das Mindeste sind also 2 Leitungen, typischerweise werden 3 gebraucht.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Extended&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Die Extended Option wird nur bei mehreren Bussen/Pins gebraucht, und wenn diese Pins normale und erweiterte Adressen mischen.&lt;br /&gt;
&lt;br /&gt;
Hier die Aufklärung: Als der 1-wire-Code 1995 geschrieben wurde, waren alle Portadressen normale I/O Adressen. Also Adressen, die in den I/O Bereich bis &amp;amp;H60 passten. &amp;amp;nbsp; Um Code zu sparen, wurde Register R31 in der Bibliothek gelöscht und das Portregister in R30 übergeben.&lt;br /&gt;
Als Atmel die erweiterten I/O Register mit Adressen &amp;gt; &amp;amp;HFF einführte, war es möglich, R31 auf einen festen Wert zu setzen, wenn der User-Port eine erweiterte I/O Adresse hatte.&lt;br /&gt;
&lt;br /&gt;
Ein Mischen der Adressen geht aber nur über den Weg, die Word-Adresse des I/O Registers der Bibliothek zu übergeben.&lt;br /&gt;
&lt;br /&gt;
Und genau das macht EXTENDED = 1. Es braucht dadurch mehr Code. Diese Option wurde für einen Nutzer geschrieben, der seine Leiterplatten schon fertig hatte. Wir raten, den gleichen Port zu benutzen, wenn mehrere Pins gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[1WRESET]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WREAD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WWRITE]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WIRECOUNT|1WIRECOUNT&amp;amp;nbsp;]],&amp;amp;nbsp;[[1WRESET]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WSEARCHFIRST]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WSEARCHNEXT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beispiel&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : 1wire.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wreset, 1wwrite and 1wread()&lt;br /&gt;
'micro : Mega48&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
' pull-up of 4K7 required to VCC from Portb.2&lt;br /&gt;
' DS2401 serial button connected to Portb.2&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot;&lt;br /&gt;
$crystal = 4000000&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 'Grundeinstellung 32 für den Hardware Stack&lt;br /&gt;
$swstack = 10 'Grundeinstellung 10 für den Software Stack&lt;br /&gt;
$framesize = 40 'Grundeinstellung 40 für den Frame Space&lt;br /&gt;
 &lt;br /&gt;
'wenn nur Bytes benutzt werden, folgende Lib für kleineren Code verwenden&lt;br /&gt;
$lib &amp;quot;mcsbyte.lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config 1wire = Portb.0 'Angabe des Pins&lt;br /&gt;
'Am STK200 muß Jumper B.0 gesteckt sein&lt;br /&gt;
Dim Ar(8) As Byte , A As Byte , I As Byte&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
Wait 1&lt;br /&gt;
1wreset 'Resettet den Bus&lt;br /&gt;
Print Err 'Gibt bei einem Fehler eine 1 aus&lt;br /&gt;
1wwrite &amp;amp;H33 'Kommando ROM lesen&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Ar(i) = 1wread() 'Array beschreiben&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'8 Bytes können auch mit einem mal gelesen werden, dazu folgende Zeile auskommentieren&lt;br /&gt;
'und die For-Next-Schleife oben löschen&lt;br /&gt;
 &lt;br /&gt;
'Ar(1) = 1wread(8) 'read 8 bytes&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i)); 'Ausgabe der gelesenen Werte &lt;br /&gt;
Next&lt;br /&gt;
Print 'Zeilenwechsel&lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
'Achtung, der Beispielcode läuft bis zu diesem Punkt,&lt;br /&gt;
'weil die Do-Loop-Schleife nicht verlassen wird&lt;br /&gt;
 &lt;br /&gt;
'neu ist die Möglichkeit, mehr als einen 1-Wire-Bus zu benutzen &lt;br /&gt;
'Dazu muß folgende Syntax verwendet werden:&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Ar(i) = 0 'Array löschen, um zu sehen, daß es funktioniert&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
1wreset Pinb , 2 'Verwendung von port und pin für den 2. Bus&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , 2 'die Anzahl Bytes muß angegeben werden&lt;br /&gt;
'1wwrite Ar(1) , 5,pinb,2&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'lesen ist auch verschieden&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , 2) 'liest 8 Bytes von Pin 2 an PortB&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Print Hex(ar(i));&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'man kann auch eine Schleife mit einer Variable für die Bitnummer erzeugen!&lt;br /&gt;
For I = 0 To 3 'für Pin 0-3&lt;br /&gt;
1wreset Pinb , I&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , I&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , I)&lt;br /&gt;
For A = 1 To 8&lt;br /&gt;
 Print Hex(ar(a));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
Next&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/CONFIG_1WIRE/de</id>
		<title>CONFIG 1WIRE/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/CONFIG_1WIRE/de"/>
				<updated>2013-03-01T17:25:28Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Konfiguriert den Pin zur Benutzung mit 1-Wire und überschreibt die Compiler-Einstellung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;CONFIG 1WIRE&amp;lt;/span&amp;gt;&amp;amp;nbsp;= pin [, extended=0|1]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beschreibung&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;485&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;20%&amp;quot; style=&amp;quot;width: 94px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Pin&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;106%&amp;quot; style=&amp;quot;width: 382px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der Port Pin wie z.B. PORTB.0&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;20%&amp;quot; style=&amp;quot;width: 94px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
extended&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;106%&amp;quot; style=&amp;quot;width: 382px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Eine optionale Konstante, welche 0 oder 1 sein muss.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der CONFIG 1WIRE Befehl überschreibt die Compiler-Einstellungen und sollte bevorzugt werden, da auf diesem Weg die Einstellung im Quellcode gespeichert wird.&lt;br /&gt;
Es kann nur ein Pin für 1wire angegeben werden, da mehrere 1-Wire Gräte an einem Bus betrieben werden können.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man kann auch mehrere Pins und damit mehrere Busse benutzen. Für diesen Fall benötigen alle 1-Wire Befehle und Funktionen die Angabe des Ports und des Pins. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die 1-Wire Kommandos und Funktionen setzen automatisch das Datenrichtungsregister und das Portregister in den richtigen Zustand.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist wichtig, dass am 1-wire-Bus ein Pullup-Widerstand von 4,7 Kiloohm vorhanden ist. Der interne Pullup-Widerstand des AVRs ist nicht geeignet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige 1-Wire-Chips benötigen eine extra 5V-versorgung. 1-Wire ist nur ein Werbe-Begriff, die GND-Leitung wird trotzdem noch benötigt. Das Mindeste sind also 2 Leitungen, typischerweise werden 3 gebraucht.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Extended&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Die Extended Option wird nur bei mehreren Bussen/Pins gebraucht, und wenn diese Pins normale und erweiterte Adressen mischen.&lt;br /&gt;
&lt;br /&gt;
Hier die Aufklärung: Als der 1-wire-Code 1995 geschrieben wurde, waren alle Portadressen normale I/O Adressen. Also Adressen, die in den I/O Bereich bis &amp;amp;H60 passten. &amp;amp;nbsp; Um Code zu sparen, wurde Register R31 in der Bibliothek gelöscht und das Portregister in R30 übergeben.&lt;br /&gt;
Als Atmel die erweiterten I/O Register mit Adressen &amp;gt; &amp;amp;HFF einführte, war es möglich, R31 auf einen festen Wert zu setzen, wenn der User-Port eine erweiterte I/O Adresse hatte.&lt;br /&gt;
&lt;br /&gt;
Ein Mischen der Adressen geht aber nur über den Weg, die Word-Adresse des I/O Registers der Bibliothek zu übergeben.&lt;br /&gt;
&lt;br /&gt;
Und genau das macht EXTENDED = 1. Es braucht dadurch mehr Code. Diese Option wurde für einen Nutzer geschrieben, der seine Leiterplatten schon fertig hatte. Wir raten, den gleichen Port zu benutzen, wenn mehrere Pins gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Siehe auch&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[1WRESET]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WREAD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WWRITE]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WIRECOUNT|1WIRECOUNT&amp;amp;nbsp;]],&amp;amp;nbsp;[[1WRESET]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WSEARCHFIRST]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WSEARCHNEXT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : 1wire.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wreset, 1wwrite and 1wread()&lt;br /&gt;
'micro : Mega48&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
' pull-up of 4K7 required to VCC from Portb.2&lt;br /&gt;
' DS2401 serial button connected to Portb.2&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot;&lt;br /&gt;
$crystal = 8000000&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 'default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 'default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
'when only bytes are used, use the following lib for smaller code&lt;br /&gt;
$lib &amp;quot;mcsbyte.lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config 1wire = Portb.0 'use this pin&lt;br /&gt;
'On the STK200 jumper B.0 must be inserted&lt;br /&gt;
Dim Ar(8) As Byte , A As Byte , I As Byte&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
Wait 1&lt;br /&gt;
1wreset 'reset the device&lt;br /&gt;
Print Err 'print error 1 if error&lt;br /&gt;
1wwrite &amp;amp;H33 'read ROM command&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Ar(i) = 1wread() 'place into array&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'You could also read 8 bytes a time by unremarking the next line&lt;br /&gt;
'and by deleting the for next above&lt;br /&gt;
'Ar(1) = 1wread(8) 'read 8 bytes&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i)); 'print output&lt;br /&gt;
Next&lt;br /&gt;
Print 'linefeed&lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'NOTE THAT WHEN YOU COMPILE THIS SAMPLE THE CODE WILL RUN TO THIS POINT&lt;br /&gt;
'THIS because of the DO LOOP that is never terminated!!!&lt;br /&gt;
 &lt;br /&gt;
'New is the possibility to use more than one 1 wire bus&lt;br /&gt;
'The following syntax must be used:&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Ar(i) = 0 'clear array to see that it works&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
1wreset Pinb , 2 'use this port and pin for the second device&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , 2 'note that now the number of bytes must be specified!&lt;br /&gt;
'1wwrite Ar(1) , 5,pinb,2&lt;br /&gt;
 &lt;br /&gt;
'reading is also different&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , 2) 'read 8 bytes from portB on pin 2&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Print Hex(ar(i));&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'you could create a loop with a variable for the bit number !&lt;br /&gt;
For I = 0 To 3 'for pin 0-3&lt;br /&gt;
1wreset Pinb , I&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , I&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , I)&lt;br /&gt;
For A = 1 To 8&lt;br /&gt;
 Print Hex(ar(a));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
Next&lt;br /&gt;
End&lt;br /&gt;
 &lt;br /&gt;
Xmega Example&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : XM128-1wire.bas&lt;br /&gt;
'copyright : (c) 1995-2010, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wreset, 1wwrite and 1wread()&lt;br /&gt;
'micro : Xm128A1&lt;br /&gt;
'suited for demo : no&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
' pull-up of 4K7 required to VCC from Portb.0&lt;br /&gt;
' DS2401 serial button connected to Portb.0&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
$regfile = &amp;quot;xm128a1def.dat&amp;quot;&lt;br /&gt;
$crystal = 32000000&lt;br /&gt;
 &lt;br /&gt;
$lib &amp;quot;xmega.lib&amp;quot; : $external _xmegafix_clear : $external _xmegafix_rol_r1014&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 32 'default use 10 for the SW stack&lt;br /&gt;
$framesize = 32 'default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
'First Enable The Osc Of Your Choice&lt;br /&gt;
Config Osc = Enabled , 32mhzosc = Enabled&lt;br /&gt;
 &lt;br /&gt;
'configure the systemclock&lt;br /&gt;
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1&lt;br /&gt;
 &lt;br /&gt;
'configure UART&lt;br /&gt;
Config Com1 = 19200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'configure 1wire pin&lt;br /&gt;
Config 1wire = Portb.0 'use this pin&lt;br /&gt;
 &lt;br /&gt;
Dim Ar(8) As Byte , A As Byte , I As Byte&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;start&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
A = 1wirecount()&lt;br /&gt;
Print A ; &amp;quot; devices found&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
'get first&lt;br /&gt;
Ar(1) = 1wsearchfirst()&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8 'print the number&lt;br /&gt;
Print Hex(ar(i));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
 'Now search for other devices&lt;br /&gt;
 Ar(1) = 1wsearchnext() ' get next device&lt;br /&gt;
 For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i));&lt;br /&gt;
 Next&lt;br /&gt;
 Print&lt;br /&gt;
Loop Until Err = 1&lt;br /&gt;
 &lt;br /&gt;
Waitms 2000&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
1wreset 'reset the device&lt;br /&gt;
Print Err 'print error 1 if error&lt;br /&gt;
 &lt;br /&gt;
1wwrite &amp;amp;H33 'read ROM command&lt;br /&gt;
' Ar(1) = 1wread(8) you can use this instead of the code below&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Ar(i) = 1wread() 'place into array&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i)); 'print output&lt;br /&gt;
Next&lt;br /&gt;
Print 'linefeed&lt;br /&gt;
Waitms 1000&lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/CONFIG_1WIRE/de</id>
		<title>CONFIG 1WIRE/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/CONFIG_1WIRE/de"/>
				<updated>2013-03-01T17:25:02Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Extended */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Konfiguriert den Pin zur Benutzung mit 1-Wire und überschreibt die Compiler-Einstellung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;CONFIG 1WIRE&amp;lt;/span&amp;gt;&amp;amp;nbsp;= pin [, extended=0|1]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beschreibung&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;485&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;20%&amp;quot; style=&amp;quot;width: 94px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Pin&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;106%&amp;quot; style=&amp;quot;width: 382px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der Port Pin wie z.B. PORTB.0&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;20%&amp;quot; style=&amp;quot;width: 94px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
extended&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;106%&amp;quot; style=&amp;quot;width: 382px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Eine optionale Konstante, welche 0 oder 1 sein muss.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der CONFIG 1WIRE Befehl überschreibt die Compiler-Einstellungen und sollte bevorzugt werden, da auf diesem Weg die Einstellung im Quellcode gespeichert wird.&lt;br /&gt;
Es kann nur ein Pin für 1wire angegeben werden, da mehrere 1-Wire Gräte an einem Bus betrieben werden können.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man kann auch mehrere Pins und damit mehrere Busse benutzen. Für diesen Fall benötigen alle 1-Wire Befehle und Funktionen die Angabe des Ports und des Pins. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die 1-Wire Kommandos und Funktionen setzen automatisch das Datenrichtungsregister und das Portregister in den richtigen Zustand.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist wichtig, dass am 1-wire-Bus ein Pullup-Widerstand von 4,7 Kiloohm vorhanden ist. Der interne Pullup-Widerstand des AVRs ist nicht geeignet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige 1-Wire-Chips benötigen eine extra 5V-versorgung. 1-Wire ist nur ein Werbe-Begriff, die GND-Leitung wird trotzdem noch benötigt. Das Mindeste sind also 2 Leitungen, typischerweise werden 3 gebraucht.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Extended&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Die Extended Option wird nur bei mehreren Bussen/Pins gebraucht, und wenn diese Pins normale und erweiterte Adressen mischen.&lt;br /&gt;
&lt;br /&gt;
Hier die Aufklärung: Als der 1-wire-Code 1995 geschrieben wurde, waren alle Portadressen normale I/O Adressen. Also Adressen, die in den I/O Bereich bis &amp;amp;H60 passten. &amp;amp;nbsp; Um Code zu sparen, wurde Register R31 in der Bibliothek gelöscht und das Portregister in R30 übergeben.&lt;br /&gt;
Als Atmel die erweiterten I/O Register mit Adressen &amp;gt; &amp;amp;HFF einführte, war es möglich, R31 auf einen festen Wert zu setzen, wenn der User-Port eine erweiterte I/O Adresse hatte.&lt;br /&gt;
&lt;br /&gt;
Ein Mischen der Adressen geht aber nur über den Weg, die Word-Adresse des I/O Registers der Bibliothek zu übergeben.&lt;br /&gt;
&lt;br /&gt;
Und genau das macht EXTENDED = 1. Es braucht dadurch mehr Code. Diese Option wurde für einen Nutzer geschrieben, der seine Leiterplatten schon fertig hatte. Wir raten, den gleichen Port zu benutzen, wenn mehrere Pins gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[1WRESET]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WREAD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WWRITE]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WIRECOUNT|1WIRECOUNT&amp;amp;nbsp;]],&amp;amp;nbsp;[[1WRESET]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WSEARCHFIRST]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WSEARCHNEXT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : 1wire.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wreset, 1wwrite and 1wread()&lt;br /&gt;
'micro : Mega48&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
' pull-up of 4K7 required to VCC from Portb.2&lt;br /&gt;
' DS2401 serial button connected to Portb.2&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot;&lt;br /&gt;
$crystal = 8000000&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 'default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 'default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
'when only bytes are used, use the following lib for smaller code&lt;br /&gt;
$lib &amp;quot;mcsbyte.lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config 1wire = Portb.0 'use this pin&lt;br /&gt;
'On the STK200 jumper B.0 must be inserted&lt;br /&gt;
Dim Ar(8) As Byte , A As Byte , I As Byte&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
Wait 1&lt;br /&gt;
1wreset 'reset the device&lt;br /&gt;
Print Err 'print error 1 if error&lt;br /&gt;
1wwrite &amp;amp;H33 'read ROM command&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Ar(i) = 1wread() 'place into array&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'You could also read 8 bytes a time by unremarking the next line&lt;br /&gt;
'and by deleting the for next above&lt;br /&gt;
'Ar(1) = 1wread(8) 'read 8 bytes&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i)); 'print output&lt;br /&gt;
Next&lt;br /&gt;
Print 'linefeed&lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'NOTE THAT WHEN YOU COMPILE THIS SAMPLE THE CODE WILL RUN TO THIS POINT&lt;br /&gt;
'THIS because of the DO LOOP that is never terminated!!!&lt;br /&gt;
 &lt;br /&gt;
'New is the possibility to use more than one 1 wire bus&lt;br /&gt;
'The following syntax must be used:&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Ar(i) = 0 'clear array to see that it works&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
1wreset Pinb , 2 'use this port and pin for the second device&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , 2 'note that now the number of bytes must be specified!&lt;br /&gt;
'1wwrite Ar(1) , 5,pinb,2&lt;br /&gt;
 &lt;br /&gt;
'reading is also different&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , 2) 'read 8 bytes from portB on pin 2&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Print Hex(ar(i));&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'you could create a loop with a variable for the bit number !&lt;br /&gt;
For I = 0 To 3 'for pin 0-3&lt;br /&gt;
1wreset Pinb , I&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , I&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , I)&lt;br /&gt;
For A = 1 To 8&lt;br /&gt;
 Print Hex(ar(a));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
Next&lt;br /&gt;
End&lt;br /&gt;
 &lt;br /&gt;
Xmega Example&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : XM128-1wire.bas&lt;br /&gt;
'copyright : (c) 1995-2010, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wreset, 1wwrite and 1wread()&lt;br /&gt;
'micro : Xm128A1&lt;br /&gt;
'suited for demo : no&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
' pull-up of 4K7 required to VCC from Portb.0&lt;br /&gt;
' DS2401 serial button connected to Portb.0&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
$regfile = &amp;quot;xm128a1def.dat&amp;quot;&lt;br /&gt;
$crystal = 32000000&lt;br /&gt;
 &lt;br /&gt;
$lib &amp;quot;xmega.lib&amp;quot; : $external _xmegafix_clear : $external _xmegafix_rol_r1014&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 32 'default use 10 for the SW stack&lt;br /&gt;
$framesize = 32 'default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
'First Enable The Osc Of Your Choice&lt;br /&gt;
Config Osc = Enabled , 32mhzosc = Enabled&lt;br /&gt;
 &lt;br /&gt;
'configure the systemclock&lt;br /&gt;
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1&lt;br /&gt;
 &lt;br /&gt;
'configure UART&lt;br /&gt;
Config Com1 = 19200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'configure 1wire pin&lt;br /&gt;
Config 1wire = Portb.0 'use this pin&lt;br /&gt;
 &lt;br /&gt;
Dim Ar(8) As Byte , A As Byte , I As Byte&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;start&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
A = 1wirecount()&lt;br /&gt;
Print A ; &amp;quot; devices found&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
'get first&lt;br /&gt;
Ar(1) = 1wsearchfirst()&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8 'print the number&lt;br /&gt;
Print Hex(ar(i));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
 'Now search for other devices&lt;br /&gt;
 Ar(1) = 1wsearchnext() ' get next device&lt;br /&gt;
 For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i));&lt;br /&gt;
 Next&lt;br /&gt;
 Print&lt;br /&gt;
Loop Until Err = 1&lt;br /&gt;
 &lt;br /&gt;
Waitms 2000&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
1wreset 'reset the device&lt;br /&gt;
Print Err 'print error 1 if error&lt;br /&gt;
 &lt;br /&gt;
1wwrite &amp;amp;H33 'read ROM command&lt;br /&gt;
' Ar(1) = 1wread(8) you can use this instead of the code below&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Ar(i) = 1wread() 'place into array&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i)); 'print output&lt;br /&gt;
Next&lt;br /&gt;
Print 'linefeed&lt;br /&gt;
Waitms 1000&lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/CONFIG_1WIRE/de</id>
		<title>CONFIG 1WIRE/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/CONFIG_1WIRE/de"/>
				<updated>2013-03-01T17:18:15Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Extended */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Konfiguriert den Pin zur Benutzung mit 1-Wire und überschreibt die Compiler-Einstellung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;CONFIG 1WIRE&amp;lt;/span&amp;gt;&amp;amp;nbsp;= pin [, extended=0|1]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beschreibung&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;485&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;20%&amp;quot; style=&amp;quot;width: 94px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Pin&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;106%&amp;quot; style=&amp;quot;width: 382px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der Port Pin wie z.B. PORTB.0&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;20%&amp;quot; style=&amp;quot;width: 94px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
extended&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;106%&amp;quot; style=&amp;quot;width: 382px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Eine optionale Konstante, welche 0 oder 1 sein muss.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der CONFIG 1WIRE Befehl überschreibt die Compiler-Einstellungen und sollte bevorzugt werden, da auf diesem Weg die Einstellung im Quellcode gespeichert wird.&lt;br /&gt;
Es kann nur ein Pin für 1wire angegeben werden, da mehrere 1-Wire Gräte an einem Bus betrieben werden können.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man kann auch mehrere Pins und damit mehrere Busse benutzen. Für diesen Fall benötigen alle 1-Wire Befehle und Funktionen die Angabe des Ports und des Pins. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die 1-Wire Kommandos und Funktionen setzen automatisch das Datenrichtungsregister und das Portregister in den richtigen Zustand.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist wichtig, dass am 1-wire-Bus ein Pullup-Widerstand von 4,7 Kiloohm vorhanden ist. Der interne Pullup-Widerstand des AVRs ist nicht geeignet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige 1-Wire-Chips benötigen eine extra 5V-versorgung. 1-Wire ist nur ein Werbe-Begriff, die GND-Leitung wird trotzdem noch benötigt. Das Mindeste sind also 2 Leitungen, typischerweise werden 3 gebraucht.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Extended&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Die Extended Option wird nur bei mehreren Bussen/Pins gebraucht, und wenn diese Pins normale und erweiterte Adressen mischen.&lt;br /&gt;
&amp;lt;br&amp;gt;The extended option is only needed when you use multiple busses/pins and if these are pins mix normal and extended addresses.&lt;br /&gt;
&lt;br /&gt;
Hier die Aufklärung: Als der 1-wire-Code 1995 geschrieben wurde, waren alle Portadressen normale I/O Adressen. Also Adressen, die in den I/O Bereich bis &amp;amp;H60 passten. &amp;amp;nbsp; Um Code zu sparen, wurde Register R31 in der Bibliothek gelöscht und das Portregister in R30 übergeben.&lt;br /&gt;
Let's clear that up. When the 1wire code was written in 1995 all the port addresses were normal I/O addresses. These are addresses that fit in the I/O space (address &amp;lt; &amp;amp;H60). &amp;amp;nbsp;To save code, register R31 was cleared in the library and the port register was passed in R30.&lt;br /&gt;
Als Atmel die erweiterten I/O Register mit Adressen &amp;gt; &amp;amp;HFF einführte, war es möglich, R31 auf einen festen Wert zu setzen, wenn der User-Port eine erweiterte I/O Adresse hatte.&lt;br /&gt;
When Atmel introduced the extended I/O registers with address &amp;gt;&amp;amp;HFF, it was possible to set R31 to a fixed value when the user port was an extended I/O address.&lt;br /&gt;
&lt;br /&gt;
Aber wenn die Adressen gemischt werden sollen, gibt es nur den Weg, die Word-Adresse des I/O Registers der Bibliothek zu übergeben.&lt;br /&gt;
But when you want to mix the addresses, there is no other way then to pass the word address of the I/O register to the library code.&lt;br /&gt;
&lt;br /&gt;
Und genau das macht EXTENDED = 1. Es braucht dadurch mehr Code. Diese Option wurde für einen Nutzer geschrieben, der seine Leiterplatten schon fertig hatte. Wir raten, den gleichen Port zu benutzen, wenn mehrere Pins gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[1WRESET]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WREAD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WWRITE]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WIRECOUNT|1WIRECOUNT&amp;amp;nbsp;]],&amp;amp;nbsp;[[1WRESET]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WSEARCHFIRST]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WSEARCHNEXT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : 1wire.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wreset, 1wwrite and 1wread()&lt;br /&gt;
'micro : Mega48&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
' pull-up of 4K7 required to VCC from Portb.2&lt;br /&gt;
' DS2401 serial button connected to Portb.2&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot;&lt;br /&gt;
$crystal = 8000000&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 'default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 'default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
'when only bytes are used, use the following lib for smaller code&lt;br /&gt;
$lib &amp;quot;mcsbyte.lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config 1wire = Portb.0 'use this pin&lt;br /&gt;
'On the STK200 jumper B.0 must be inserted&lt;br /&gt;
Dim Ar(8) As Byte , A As Byte , I As Byte&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
Wait 1&lt;br /&gt;
1wreset 'reset the device&lt;br /&gt;
Print Err 'print error 1 if error&lt;br /&gt;
1wwrite &amp;amp;H33 'read ROM command&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Ar(i) = 1wread() 'place into array&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'You could also read 8 bytes a time by unremarking the next line&lt;br /&gt;
'and by deleting the for next above&lt;br /&gt;
'Ar(1) = 1wread(8) 'read 8 bytes&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i)); 'print output&lt;br /&gt;
Next&lt;br /&gt;
Print 'linefeed&lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'NOTE THAT WHEN YOU COMPILE THIS SAMPLE THE CODE WILL RUN TO THIS POINT&lt;br /&gt;
'THIS because of the DO LOOP that is never terminated!!!&lt;br /&gt;
 &lt;br /&gt;
'New is the possibility to use more than one 1 wire bus&lt;br /&gt;
'The following syntax must be used:&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Ar(i) = 0 'clear array to see that it works&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
1wreset Pinb , 2 'use this port and pin for the second device&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , 2 'note that now the number of bytes must be specified!&lt;br /&gt;
'1wwrite Ar(1) , 5,pinb,2&lt;br /&gt;
 &lt;br /&gt;
'reading is also different&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , 2) 'read 8 bytes from portB on pin 2&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Print Hex(ar(i));&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'you could create a loop with a variable for the bit number !&lt;br /&gt;
For I = 0 To 3 'for pin 0-3&lt;br /&gt;
1wreset Pinb , I&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , I&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , I)&lt;br /&gt;
For A = 1 To 8&lt;br /&gt;
 Print Hex(ar(a));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
Next&lt;br /&gt;
End&lt;br /&gt;
 &lt;br /&gt;
Xmega Example&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : XM128-1wire.bas&lt;br /&gt;
'copyright : (c) 1995-2010, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wreset, 1wwrite and 1wread()&lt;br /&gt;
'micro : Xm128A1&lt;br /&gt;
'suited for demo : no&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
' pull-up of 4K7 required to VCC from Portb.0&lt;br /&gt;
' DS2401 serial button connected to Portb.0&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
$regfile = &amp;quot;xm128a1def.dat&amp;quot;&lt;br /&gt;
$crystal = 32000000&lt;br /&gt;
 &lt;br /&gt;
$lib &amp;quot;xmega.lib&amp;quot; : $external _xmegafix_clear : $external _xmegafix_rol_r1014&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 32 'default use 10 for the SW stack&lt;br /&gt;
$framesize = 32 'default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
'First Enable The Osc Of Your Choice&lt;br /&gt;
Config Osc = Enabled , 32mhzosc = Enabled&lt;br /&gt;
 &lt;br /&gt;
'configure the systemclock&lt;br /&gt;
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1&lt;br /&gt;
 &lt;br /&gt;
'configure UART&lt;br /&gt;
Config Com1 = 19200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'configure 1wire pin&lt;br /&gt;
Config 1wire = Portb.0 'use this pin&lt;br /&gt;
 &lt;br /&gt;
Dim Ar(8) As Byte , A As Byte , I As Byte&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;start&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
A = 1wirecount()&lt;br /&gt;
Print A ; &amp;quot; devices found&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
'get first&lt;br /&gt;
Ar(1) = 1wsearchfirst()&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8 'print the number&lt;br /&gt;
Print Hex(ar(i));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
 'Now search for other devices&lt;br /&gt;
 Ar(1) = 1wsearchnext() ' get next device&lt;br /&gt;
 For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i));&lt;br /&gt;
 Next&lt;br /&gt;
 Print&lt;br /&gt;
Loop Until Err = 1&lt;br /&gt;
 &lt;br /&gt;
Waitms 2000&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
1wreset 'reset the device&lt;br /&gt;
Print Err 'print error 1 if error&lt;br /&gt;
 &lt;br /&gt;
1wwrite &amp;amp;H33 'read ROM command&lt;br /&gt;
' Ar(1) = 1wread(8) you can use this instead of the code below&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Ar(i) = 1wread() 'place into array&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i)); 'print output&lt;br /&gt;
Next&lt;br /&gt;
Print 'linefeed&lt;br /&gt;
Waitms 1000&lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/CONFIG_1WIRE/de</id>
		<title>CONFIG 1WIRE/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/CONFIG_1WIRE/de"/>
				<updated>2013-03-01T17:03:27Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Beschreibung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Konfiguriert den Pin zur Benutzung mit 1-Wire und überschreibt die Compiler-Einstellung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;CONFIG 1WIRE&amp;lt;/span&amp;gt;&amp;amp;nbsp;= pin [, extended=0|1]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beschreibung&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;485&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;20%&amp;quot; style=&amp;quot;width: 94px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Pin&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;106%&amp;quot; style=&amp;quot;width: 382px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der Port Pin wie z.B. PORTB.0&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;20%&amp;quot; style=&amp;quot;width: 94px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
extended&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;106%&amp;quot; style=&amp;quot;width: 382px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Eine optionale Konstante, welche 0 oder 1 sein muss.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der CONFIG 1WIRE Befehl überschreibt die Compiler-Einstellungen und sollte bevorzugt werden, da auf diesem Weg die Einstellung im Quellcode gespeichert wird.&lt;br /&gt;
Es kann nur ein Pin für 1wire angegeben werden, da mehrere 1-Wire Gräte an einem Bus betrieben werden können.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man kann auch mehrere Pins und damit mehrere Busse benutzen. Für diesen Fall benötigen alle 1-Wire Befehle und Funktionen die Angabe des Ports und des Pins. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die 1-Wire Kommandos und Funktionen setzen automatisch das Datenrichtungsregister und das Portregister in den richtigen Zustand.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist wichtig, dass am 1-wire-Bus ein Pullup-Widerstand von 4,7 Kiloohm vorhanden ist. Der interne Pullup-Widerstand des AVRs ist nicht geeignet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige 1-Wire-Chips benötigen eine extra 5V-versorgung. 1-Wire ist nur ein Werbe-Begriff, die GND-Leitung wird trotzdem noch benötigt. Das Mindeste sind also 2 Leitungen, typischerweise werden 3 gebraucht.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Extended&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The extended option is only needed when you use multiple busses/pins and if these are pins mix normal and extended addresses.&lt;br /&gt;
&lt;br /&gt;
Let's clear that up. When the 1wire code was written in 1995 all the port addresses were normal I/O addresses. These are addresses that fit in the I/O space (address &amp;lt; &amp;amp;H60). &amp;amp;nbsp;To save code, register R31 was cleared in the library and the port register was passed in R30.&lt;br /&gt;
&lt;br /&gt;
When Atmel introduced the extended I/O registers with address &amp;gt;&amp;amp;HFF, it was possible to set R31 to a fixed value when the user port was an extended I/O address.&lt;br /&gt;
&lt;br /&gt;
But when you want to mix the addresses, there is no other way then to pass the word address of the I/O register to the library code.&lt;br /&gt;
&lt;br /&gt;
And that is exactly what EXTENDED=1 will do. It will use more code. This support was written for a customer that already made his PCB's. We do advise to use the same port when you use multiple pins.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[1WRESET]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WREAD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WWRITE]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WIRECOUNT|1WIRECOUNT&amp;amp;nbsp;]],&amp;amp;nbsp;[[1WRESET]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WSEARCHFIRST]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WSEARCHNEXT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : 1wire.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wreset, 1wwrite and 1wread()&lt;br /&gt;
'micro : Mega48&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
' pull-up of 4K7 required to VCC from Portb.2&lt;br /&gt;
' DS2401 serial button connected to Portb.2&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot;&lt;br /&gt;
$crystal = 8000000&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 'default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 'default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
'when only bytes are used, use the following lib for smaller code&lt;br /&gt;
$lib &amp;quot;mcsbyte.lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config 1wire = Portb.0 'use this pin&lt;br /&gt;
'On the STK200 jumper B.0 must be inserted&lt;br /&gt;
Dim Ar(8) As Byte , A As Byte , I As Byte&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
Wait 1&lt;br /&gt;
1wreset 'reset the device&lt;br /&gt;
Print Err 'print error 1 if error&lt;br /&gt;
1wwrite &amp;amp;H33 'read ROM command&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Ar(i) = 1wread() 'place into array&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'You could also read 8 bytes a time by unremarking the next line&lt;br /&gt;
'and by deleting the for next above&lt;br /&gt;
'Ar(1) = 1wread(8) 'read 8 bytes&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i)); 'print output&lt;br /&gt;
Next&lt;br /&gt;
Print 'linefeed&lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'NOTE THAT WHEN YOU COMPILE THIS SAMPLE THE CODE WILL RUN TO THIS POINT&lt;br /&gt;
'THIS because of the DO LOOP that is never terminated!!!&lt;br /&gt;
 &lt;br /&gt;
'New is the possibility to use more than one 1 wire bus&lt;br /&gt;
'The following syntax must be used:&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Ar(i) = 0 'clear array to see that it works&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
1wreset Pinb , 2 'use this port and pin for the second device&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , 2 'note that now the number of bytes must be specified!&lt;br /&gt;
'1wwrite Ar(1) , 5,pinb,2&lt;br /&gt;
 &lt;br /&gt;
'reading is also different&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , 2) 'read 8 bytes from portB on pin 2&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Print Hex(ar(i));&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'you could create a loop with a variable for the bit number !&lt;br /&gt;
For I = 0 To 3 'for pin 0-3&lt;br /&gt;
1wreset Pinb , I&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , I&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , I)&lt;br /&gt;
For A = 1 To 8&lt;br /&gt;
 Print Hex(ar(a));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
Next&lt;br /&gt;
End&lt;br /&gt;
 &lt;br /&gt;
Xmega Example&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : XM128-1wire.bas&lt;br /&gt;
'copyright : (c) 1995-2010, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wreset, 1wwrite and 1wread()&lt;br /&gt;
'micro : Xm128A1&lt;br /&gt;
'suited for demo : no&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
' pull-up of 4K7 required to VCC from Portb.0&lt;br /&gt;
' DS2401 serial button connected to Portb.0&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
$regfile = &amp;quot;xm128a1def.dat&amp;quot;&lt;br /&gt;
$crystal = 32000000&lt;br /&gt;
 &lt;br /&gt;
$lib &amp;quot;xmega.lib&amp;quot; : $external _xmegafix_clear : $external _xmegafix_rol_r1014&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 32 'default use 10 for the SW stack&lt;br /&gt;
$framesize = 32 'default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
'First Enable The Osc Of Your Choice&lt;br /&gt;
Config Osc = Enabled , 32mhzosc = Enabled&lt;br /&gt;
 &lt;br /&gt;
'configure the systemclock&lt;br /&gt;
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1&lt;br /&gt;
 &lt;br /&gt;
'configure UART&lt;br /&gt;
Config Com1 = 19200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'configure 1wire pin&lt;br /&gt;
Config 1wire = Portb.0 'use this pin&lt;br /&gt;
 &lt;br /&gt;
Dim Ar(8) As Byte , A As Byte , I As Byte&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;start&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
A = 1wirecount()&lt;br /&gt;
Print A ; &amp;quot; devices found&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
'get first&lt;br /&gt;
Ar(1) = 1wsearchfirst()&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8 'print the number&lt;br /&gt;
Print Hex(ar(i));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
 'Now search for other devices&lt;br /&gt;
 Ar(1) = 1wsearchnext() ' get next device&lt;br /&gt;
 For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i));&lt;br /&gt;
 Next&lt;br /&gt;
 Print&lt;br /&gt;
Loop Until Err = 1&lt;br /&gt;
 &lt;br /&gt;
Waitms 2000&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
1wreset 'reset the device&lt;br /&gt;
Print Err 'print error 1 if error&lt;br /&gt;
 &lt;br /&gt;
1wwrite &amp;amp;H33 'read ROM command&lt;br /&gt;
' Ar(1) = 1wread(8) you can use this instead of the code below&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Ar(i) = 1wread() 'place into array&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i)); 'print output&lt;br /&gt;
Next&lt;br /&gt;
Print 'linefeed&lt;br /&gt;
Waitms 1000&lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/CONFIG_1WIRE/de</id>
		<title>CONFIG 1WIRE/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/CONFIG_1WIRE/de"/>
				<updated>2013-02-24T19:59:58Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Beschreibung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Konfiguriert den Pin zur Benutzung mit 1-Wire und überschreibt die Compiler-Einstellung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;CONFIG 1WIRE&amp;lt;/span&amp;gt;&amp;amp;nbsp;= pin [, extended=0|1]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beschreibung&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;485&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;20%&amp;quot; style=&amp;quot;width: 94px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Pin&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;106%&amp;quot; style=&amp;quot;width: 382px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der Port Pin wie z.B. PORTB.0&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;20%&amp;quot; style=&amp;quot;width: 94px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
extended&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;106%&amp;quot; style=&amp;quot;width: 382px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Eine optionale Konstante, welche 0 oder 1 sein muss.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der CONFIG 1WIRE Befehl überschreibt die Compiler-Einstellungen. &lt;br /&gt;
&amp;lt;br&amp;gt;The CONFIG 1WIRE statement overrides the compiler setting. It is the preferred that you use it. This way the setting is stored in your source code.&lt;br /&gt;
&lt;br /&gt;
You can configure only one pin for the 1WIRE statements because the idea is that you can attach multiple 1WIRE devices to the 1WIRE bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can however use multiple pins and thus multiple busses. All 1wire commands and functions need the port and pin in that case.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The 1wire commands and function will automatically set the DDR and PORT register bits to the proper state. You do not need to bring the pins into the right state yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is important that you use a pull up resistor of 4K7 ohm on the 1wire pin. The pull up resistor of the AVR is not sufficient.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also notice that some 1wire chips also need +5V. 1 wire is just marketing since you need GND anyway. The least is 2 wires and typical you need 3 wires.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Extended&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The extended option is only needed when you use multiple busses/pins and if these are pins mix normal and extended addresses.&lt;br /&gt;
&lt;br /&gt;
Let's clear that up. When the 1wire code was written in 1995 all the port addresses were normal I/O addresses. These are addresses that fit in the I/O space (address &amp;lt; &amp;amp;H60). &amp;amp;nbsp;To save code, register R31 was cleared in the library and the port register was passed in R30.&lt;br /&gt;
&lt;br /&gt;
When Atmel introduced the extended I/O registers with address &amp;gt;&amp;amp;HFF, it was possible to set R31 to a fixed value when the user port was an extended I/O address.&lt;br /&gt;
&lt;br /&gt;
But when you want to mix the addresses, there is no other way then to pass the word address of the I/O register to the library code.&lt;br /&gt;
&lt;br /&gt;
And that is exactly what EXTENDED=1 will do. It will use more code. This support was written for a customer that already made his PCB's. We do advise to use the same port when you use multiple pins.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[1WRESET]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WREAD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WWRITE]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WIRECOUNT|1WIRECOUNT&amp;amp;nbsp;]],&amp;amp;nbsp;[[1WRESET]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WSEARCHFIRST]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WSEARCHNEXT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : 1wire.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wreset, 1wwrite and 1wread()&lt;br /&gt;
'micro : Mega48&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
' pull-up of 4K7 required to VCC from Portb.2&lt;br /&gt;
' DS2401 serial button connected to Portb.2&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot;&lt;br /&gt;
$crystal = 8000000&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 'default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 'default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
'when only bytes are used, use the following lib for smaller code&lt;br /&gt;
$lib &amp;quot;mcsbyte.lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config 1wire = Portb.0 'use this pin&lt;br /&gt;
'On the STK200 jumper B.0 must be inserted&lt;br /&gt;
Dim Ar(8) As Byte , A As Byte , I As Byte&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
Wait 1&lt;br /&gt;
1wreset 'reset the device&lt;br /&gt;
Print Err 'print error 1 if error&lt;br /&gt;
1wwrite &amp;amp;H33 'read ROM command&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Ar(i) = 1wread() 'place into array&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'You could also read 8 bytes a time by unremarking the next line&lt;br /&gt;
'and by deleting the for next above&lt;br /&gt;
'Ar(1) = 1wread(8) 'read 8 bytes&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i)); 'print output&lt;br /&gt;
Next&lt;br /&gt;
Print 'linefeed&lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'NOTE THAT WHEN YOU COMPILE THIS SAMPLE THE CODE WILL RUN TO THIS POINT&lt;br /&gt;
'THIS because of the DO LOOP that is never terminated!!!&lt;br /&gt;
 &lt;br /&gt;
'New is the possibility to use more than one 1 wire bus&lt;br /&gt;
'The following syntax must be used:&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Ar(i) = 0 'clear array to see that it works&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
1wreset Pinb , 2 'use this port and pin for the second device&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , 2 'note that now the number of bytes must be specified!&lt;br /&gt;
'1wwrite Ar(1) , 5,pinb,2&lt;br /&gt;
 &lt;br /&gt;
'reading is also different&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , 2) 'read 8 bytes from portB on pin 2&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Print Hex(ar(i));&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'you could create a loop with a variable for the bit number !&lt;br /&gt;
For I = 0 To 3 'for pin 0-3&lt;br /&gt;
1wreset Pinb , I&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , I&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , I)&lt;br /&gt;
For A = 1 To 8&lt;br /&gt;
 Print Hex(ar(a));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
Next&lt;br /&gt;
End&lt;br /&gt;
 &lt;br /&gt;
Xmega Example&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : XM128-1wire.bas&lt;br /&gt;
'copyright : (c) 1995-2010, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wreset, 1wwrite and 1wread()&lt;br /&gt;
'micro : Xm128A1&lt;br /&gt;
'suited for demo : no&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
' pull-up of 4K7 required to VCC from Portb.0&lt;br /&gt;
' DS2401 serial button connected to Portb.0&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
$regfile = &amp;quot;xm128a1def.dat&amp;quot;&lt;br /&gt;
$crystal = 32000000&lt;br /&gt;
 &lt;br /&gt;
$lib &amp;quot;xmega.lib&amp;quot; : $external _xmegafix_clear : $external _xmegafix_rol_r1014&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 32 'default use 10 for the SW stack&lt;br /&gt;
$framesize = 32 'default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
'First Enable The Osc Of Your Choice&lt;br /&gt;
Config Osc = Enabled , 32mhzosc = Enabled&lt;br /&gt;
 &lt;br /&gt;
'configure the systemclock&lt;br /&gt;
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1&lt;br /&gt;
 &lt;br /&gt;
'configure UART&lt;br /&gt;
Config Com1 = 19200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'configure 1wire pin&lt;br /&gt;
Config 1wire = Portb.0 'use this pin&lt;br /&gt;
 &lt;br /&gt;
Dim Ar(8) As Byte , A As Byte , I As Byte&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;start&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
A = 1wirecount()&lt;br /&gt;
Print A ; &amp;quot; devices found&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
'get first&lt;br /&gt;
Ar(1) = 1wsearchfirst()&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8 'print the number&lt;br /&gt;
Print Hex(ar(i));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
 'Now search for other devices&lt;br /&gt;
 Ar(1) = 1wsearchnext() ' get next device&lt;br /&gt;
 For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i));&lt;br /&gt;
 Next&lt;br /&gt;
 Print&lt;br /&gt;
Loop Until Err = 1&lt;br /&gt;
 &lt;br /&gt;
Waitms 2000&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
1wreset 'reset the device&lt;br /&gt;
Print Err 'print error 1 if error&lt;br /&gt;
 &lt;br /&gt;
1wwrite &amp;amp;H33 'read ROM command&lt;br /&gt;
' Ar(1) = 1wread(8) you can use this instead of the code below&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Ar(i) = 1wread() 'place into array&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i)); 'print output&lt;br /&gt;
Next&lt;br /&gt;
Print 'linefeed&lt;br /&gt;
Waitms 1000&lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/CONFIG_1WIRE/de</id>
		<title>CONFIG 1WIRE/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/CONFIG_1WIRE/de"/>
				<updated>2013-02-24T19:59:36Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Remarks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Konfiguriert den Pin zur Benutzung mit 1-Wire und überschreibt die Compiler-Einstellung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;CONFIG 1WIRE&amp;lt;/span&amp;gt;&amp;amp;nbsp;= pin [, extended=0|1]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Beschreibung&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;485&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;20%&amp;quot; style=&amp;quot;width: 94px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Pin&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;106%&amp;quot; style=&amp;quot;width: 382px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Der Port Pin wie z.B. PORTB.0&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;20%&amp;quot; style=&amp;quot;width: 94px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
extended&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;106%&amp;quot; style=&amp;quot;width: 382px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
 Eine optionale Konstante, welche 0 oder 1 sein muss.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der CONFIG 1WIRE Befehl überschreibt die Compiler-Einstellungen. &lt;br /&gt;
&amp;lt;br&amp;gt;The CONFIG 1WIRE statement overrides the compiler setting. It is the preferred that you use it. This way the setting is stored in your source code.&lt;br /&gt;
&lt;br /&gt;
You can configure only one pin for the 1WIRE statements because the idea is that you can attach multiple 1WIRE devices to the 1WIRE bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can however use multiple pins and thus multiple busses. All 1wire commands and functions need the port and pin in that case.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The 1wire commands and function will automatically set the DDR and PORT register bits to the proper state. You do not need to bring the pins into the right state yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is important that you use a pull up resistor of 4K7 ohm on the 1wire pin. The pull up resistor of the AVR is not sufficient.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also notice that some 1wire chips also need +5V. 1 wire is just marketing since you need GND anyway. The least is 2 wires and typical you need 3 wires.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Extended&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The extended option is only needed when you use multiple busses/pins and if these are pins mix normal and extended addresses.&lt;br /&gt;
&lt;br /&gt;
Let's clear that up. When the 1wire code was written in 1995 all the port addresses were normal I/O addresses. These are addresses that fit in the I/O space (address &amp;lt; &amp;amp;H60). &amp;amp;nbsp;To save code, register R31 was cleared in the library and the port register was passed in R30.&lt;br /&gt;
&lt;br /&gt;
When Atmel introduced the extended I/O registers with address &amp;gt;&amp;amp;HFF, it was possible to set R31 to a fixed value when the user port was an extended I/O address.&lt;br /&gt;
&lt;br /&gt;
But when you want to mix the addresses, there is no other way then to pass the word address of the I/O register to the library code.&lt;br /&gt;
&lt;br /&gt;
And that is exactly what EXTENDED=1 will do. It will use more code. This support was written for a customer that already made his PCB's. We do advise to use the same port when you use multiple pins.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[1WRESET]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WREAD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WWRITE]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WIRECOUNT|1WIRECOUNT&amp;amp;nbsp;]],&amp;amp;nbsp;[[1WRESET]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WSEARCHFIRST]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WSEARCHNEXT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : 1wire.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wreset, 1wwrite and 1wread()&lt;br /&gt;
'micro : Mega48&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
' pull-up of 4K7 required to VCC from Portb.2&lt;br /&gt;
' DS2401 serial button connected to Portb.2&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot;&lt;br /&gt;
$crystal = 8000000&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 'default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 'default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
'when only bytes are used, use the following lib for smaller code&lt;br /&gt;
$lib &amp;quot;mcsbyte.lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config 1wire = Portb.0 'use this pin&lt;br /&gt;
'On the STK200 jumper B.0 must be inserted&lt;br /&gt;
Dim Ar(8) As Byte , A As Byte , I As Byte&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
Wait 1&lt;br /&gt;
1wreset 'reset the device&lt;br /&gt;
Print Err 'print error 1 if error&lt;br /&gt;
1wwrite &amp;amp;H33 'read ROM command&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Ar(i) = 1wread() 'place into array&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'You could also read 8 bytes a time by unremarking the next line&lt;br /&gt;
'and by deleting the for next above&lt;br /&gt;
'Ar(1) = 1wread(8) 'read 8 bytes&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i)); 'print output&lt;br /&gt;
Next&lt;br /&gt;
Print 'linefeed&lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'NOTE THAT WHEN YOU COMPILE THIS SAMPLE THE CODE WILL RUN TO THIS POINT&lt;br /&gt;
'THIS because of the DO LOOP that is never terminated!!!&lt;br /&gt;
 &lt;br /&gt;
'New is the possibility to use more than one 1 wire bus&lt;br /&gt;
'The following syntax must be used:&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Ar(i) = 0 'clear array to see that it works&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
1wreset Pinb , 2 'use this port and pin for the second device&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , 2 'note that now the number of bytes must be specified!&lt;br /&gt;
'1wwrite Ar(1) , 5,pinb,2&lt;br /&gt;
 &lt;br /&gt;
'reading is also different&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , 2) 'read 8 bytes from portB on pin 2&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Print Hex(ar(i));&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'you could create a loop with a variable for the bit number !&lt;br /&gt;
For I = 0 To 3 'for pin 0-3&lt;br /&gt;
1wreset Pinb , I&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , I&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , I)&lt;br /&gt;
For A = 1 To 8&lt;br /&gt;
 Print Hex(ar(a));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
Next&lt;br /&gt;
End&lt;br /&gt;
 &lt;br /&gt;
Xmega Example&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : XM128-1wire.bas&lt;br /&gt;
'copyright : (c) 1995-2010, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wreset, 1wwrite and 1wread()&lt;br /&gt;
'micro : Xm128A1&lt;br /&gt;
'suited for demo : no&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
' pull-up of 4K7 required to VCC from Portb.0&lt;br /&gt;
' DS2401 serial button connected to Portb.0&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
$regfile = &amp;quot;xm128a1def.dat&amp;quot;&lt;br /&gt;
$crystal = 32000000&lt;br /&gt;
 &lt;br /&gt;
$lib &amp;quot;xmega.lib&amp;quot; : $external _xmegafix_clear : $external _xmegafix_rol_r1014&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 32 'default use 10 for the SW stack&lt;br /&gt;
$framesize = 32 'default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
'First Enable The Osc Of Your Choice&lt;br /&gt;
Config Osc = Enabled , 32mhzosc = Enabled&lt;br /&gt;
 &lt;br /&gt;
'configure the systemclock&lt;br /&gt;
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1&lt;br /&gt;
 &lt;br /&gt;
'configure UART&lt;br /&gt;
Config Com1 = 19200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'configure 1wire pin&lt;br /&gt;
Config 1wire = Portb.0 'use this pin&lt;br /&gt;
 &lt;br /&gt;
Dim Ar(8) As Byte , A As Byte , I As Byte&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;start&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
A = 1wirecount()&lt;br /&gt;
Print A ; &amp;quot; devices found&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
'get first&lt;br /&gt;
Ar(1) = 1wsearchfirst()&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8 'print the number&lt;br /&gt;
Print Hex(ar(i));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
 'Now search for other devices&lt;br /&gt;
 Ar(1) = 1wsearchnext() ' get next device&lt;br /&gt;
 For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i));&lt;br /&gt;
 Next&lt;br /&gt;
 Print&lt;br /&gt;
Loop Until Err = 1&lt;br /&gt;
 &lt;br /&gt;
Waitms 2000&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
1wreset 'reset the device&lt;br /&gt;
Print Err 'print error 1 if error&lt;br /&gt;
 &lt;br /&gt;
1wwrite &amp;amp;H33 'read ROM command&lt;br /&gt;
' Ar(1) = 1wread(8) you can use this instead of the code below&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Ar(i) = 1wread() 'place into array&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i)); 'print output&lt;br /&gt;
Next&lt;br /&gt;
Print 'linefeed&lt;br /&gt;
Waitms 1000&lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/STAND_%3FBERSETZUNG_(temor%3Fr)</id>
		<title>STAND ?BERSETZUNG (temor?r)</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/STAND_%3FBERSETZUNG_(temor%3Fr)"/>
				<updated>2013-02-23T20:24:16Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MAIN MENUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  *Installation/de&lt;br /&gt;
 Übersetzt Installation of BASCOM/de&lt;br /&gt;
 Übersetzt Installation on multiple computers/de&lt;br /&gt;
 Übersetzt Move to new PC/de&lt;br /&gt;
 Übersetzt Updates/de&lt;br /&gt;
&lt;br /&gt;
  *BASCOM Language Fundamentals/de&lt;br /&gt;
 Übersetzt ASCII chart/de&lt;br /&gt;
 Übersetzt Assembler mnemonics/de&lt;br /&gt;
 Übersetzt Changes compared to BASCOM-8051/de&lt;br /&gt;
 Übersetzt Error Codes/de&lt;br /&gt;
 Übersetzt Keyword reference/de&lt;br /&gt;
 IN ARBEIT Language Fundamentals/de&lt;br /&gt;
 Mixing ASM and BASIC/de&lt;br /&gt;
 Übersetzt Newbie problems/de&lt;br /&gt;
 Reserved Words/de&lt;br /&gt;
 Übersetzt Tips and tricks/de&lt;br /&gt;
&lt;br /&gt;
  *ASM Libraries and Add-Ons/de&lt;br /&gt;
 *AVR-DOS/de&lt;br /&gt;
 *BCCARD/de&lt;br /&gt;
 *CF Card/de&lt;br /&gt;
 *DATE TIME/de&lt;br /&gt;
 *Floating Point/de&lt;br /&gt;
 *I2C SLAVE/de&lt;br /&gt;
 *LCD/de&lt;br /&gt;
 *PS2-AT Mouse and Keyboard Emulation/de&lt;br /&gt;
 *SPI/de&lt;br /&gt;
 *USB/de&lt;br /&gt;
 EXTENDED I2C/de&lt;br /&gt;
 FM24C16/de&lt;br /&gt;
 FM24C64-256/de&lt;br /&gt;
 FM25C256/de&lt;br /&gt;
 HEXVAL lib/de&lt;br /&gt;
 I2C-TWI/de&lt;br /&gt;
 MCSBYTE/de&lt;br /&gt;
 MCSBYTEINT/de&lt;br /&gt;
 MODBUS Slave-Server/de&lt;br /&gt;
 TCPIP/de&lt;br /&gt;
&lt;br /&gt;
  *BASCOM HARDWARE/de&lt;br /&gt;
 *Chips/de&lt;br /&gt;
 *Reference Designs/de&lt;br /&gt;
 Adding XRAM to XMEGA using EBI/de&lt;br /&gt;
 Adding XRAM with External Memory Interface/de&lt;br /&gt;
 Additional Hardware/de&lt;br /&gt;
 Attaching an LCD Display/de&lt;br /&gt;
 AVR Internal Hardware Port B/de&lt;br /&gt;
 AVR Internal Hardware Port D/de&lt;br /&gt;
 AVR Internal Hardware TIMER0/de&lt;br /&gt;
 AVR Internal Hardware TIMER1/de&lt;br /&gt;
 AVR Internal Hardware Watchdog timer/de&lt;br /&gt;
 AVR Internal Hardware/de&lt;br /&gt;
 AVR Internal Registers/de&lt;br /&gt;
 Memory usage/de&lt;br /&gt;
 Power Up/de&lt;br /&gt;
 Using RS485/de&lt;br /&gt;
 Übersetzt Using the 1 WIRE protocol/de&lt;br /&gt;
 Using the I2C protocol/de&lt;br /&gt;
 Using the SPI protocol/de&lt;br /&gt;
 Using the UART/de&lt;br /&gt;
 Using USI (Universal Serial Interface)/de&lt;br /&gt;
&lt;br /&gt;
 *Tools/de&lt;br /&gt;
 LCD RGB-8 Converter/de&lt;br /&gt;
&lt;br /&gt;
 *BASCOM IDE/de&lt;br /&gt;
 *Options Compiler/de&lt;br /&gt;
 *Options Programmer/de&lt;br /&gt;
 *Plugins/de&lt;br /&gt;
 BASCOM Editor Keys/de&lt;br /&gt;
 Edit Copy/de&lt;br /&gt;
 Edit Cut/de&lt;br /&gt;
 Edit Encrypt Selected Code/de&lt;br /&gt;
 Edit Find Next/de&lt;br /&gt;
 Edit Find/de&lt;br /&gt;
 Edit Goto Bookmark/de&lt;br /&gt;
 Edit Goto/de&lt;br /&gt;
 Edit Indent Block/de&lt;br /&gt;
 Edit Paste/de&lt;br /&gt;
 Edit Redo/de&lt;br /&gt;
 Edit Remark Block/de&lt;br /&gt;
 Edit Replace/de&lt;br /&gt;
 Edit Toggle Bookmark/de&lt;br /&gt;
 Edit Undo/de&lt;br /&gt;
 Edit Unindent Block/de&lt;br /&gt;
 File Close/de&lt;br /&gt;
 File Exit/de&lt;br /&gt;
 File New/de&lt;br /&gt;
 File Open/de&lt;br /&gt;
 File Print Preview/de&lt;br /&gt;
 File Print/de&lt;br /&gt;
 File Project/de&lt;br /&gt;
 File Save As/de&lt;br /&gt;
 File Save/de&lt;br /&gt;
 Help About/de&lt;br /&gt;
 Help Credits/de&lt;br /&gt;
 Help Index/de&lt;br /&gt;
 Help Knowledge Base/de&lt;br /&gt;
 Help MCS Forum/de&lt;br /&gt;
 Help MCS Shop/de&lt;br /&gt;
 Help Support/de&lt;br /&gt;
 Help Update/de&lt;br /&gt;
 Options Communication/de&lt;br /&gt;
 Options Environment/de&lt;br /&gt;
 Options Monitor/de&lt;br /&gt;
 Options Printer/de&lt;br /&gt;
 Options Simulator/de&lt;br /&gt;
 Program Compile/de&lt;br /&gt;
 Program Development Order/de&lt;br /&gt;
 Program Send to Chip/de&lt;br /&gt;
 Program Show Result/de&lt;br /&gt;
 Program Simulate/de&lt;br /&gt;
 Program Syntax Check/de&lt;br /&gt;
 Running BASCOM-AVR/de&lt;br /&gt;
 Tools Batch Compile/de&lt;br /&gt;
 Tools Graphic Converter/de&lt;br /&gt;
 Tools LCD Designer/de&lt;br /&gt;
 Tools LIB Manager/de&lt;br /&gt;
 Tools PDF Update/de&lt;br /&gt;
 Tools Plugin Manager/de&lt;br /&gt;
 Tools Resource Editor/de&lt;br /&gt;
 Tools Stack Analyzer/de&lt;br /&gt;
 Tools Terminal Emulator/de&lt;br /&gt;
 View Code Explorer/de&lt;br /&gt;
 View Error Panel/de&lt;br /&gt;
 View PDF viewer/de&lt;br /&gt;
 View PinOut/de&lt;br /&gt;
 View Project Files/de&lt;br /&gt;
 View Tip/de&lt;br /&gt;
 Window Arrange Icons/de&lt;br /&gt;
 Window Cascade/de&lt;br /&gt;
 Window Minimize All/de&lt;br /&gt;
 Window Tile/de&lt;br /&gt;
 Windows Maximize All/de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 BASCOM-AVR Stichworte - DE Übersetzung&lt;br /&gt;
&lt;br /&gt;
 $AESKEY/de&lt;br /&gt;
 $ASM/de&lt;br /&gt;
 $BAUD/de&lt;br /&gt;
 $BAUD1/de&lt;br /&gt;
 $BGF/de&lt;br /&gt;
 $BIGSTRINGS/de&lt;br /&gt;
 $BOOT/de&lt;br /&gt;
 $CRYPT/de&lt;br /&gt;
 Übersetzt $CRYSTAL/de&lt;br /&gt;
 $DATA/de&lt;br /&gt;
 $DBG/de&lt;br /&gt;
 $DEFAULT/de&lt;br /&gt;
 $EEPLEAVE/de&lt;br /&gt;
 $EEPROM/de&lt;br /&gt;
 $EEPROMHEX/de&lt;br /&gt;
 $EEPROMSIZE/de&lt;br /&gt;
 $EXTERNAL/de&lt;br /&gt;
 $FILE/de&lt;br /&gt;
 $FRAMECHECK/de&lt;br /&gt;
 $FRAMEPROTECT/de&lt;br /&gt;
 $FRAMESIZE/de&lt;br /&gt;
 $HWCHECK/de&lt;br /&gt;
 $HWSTACK/de&lt;br /&gt;
 $INC/de&lt;br /&gt;
 $INCLUDE/de&lt;br /&gt;
 $INITMICRO/de&lt;br /&gt;
 $LCD/de&lt;br /&gt;
 $LCDPUTCTRL/de&lt;br /&gt;
 $LCDPUTDATA/de&lt;br /&gt;
 $LCDRS/de&lt;br /&gt;
 $LCDVFO/de&lt;br /&gt;
 $LIB/de&lt;br /&gt;
 $LOADER/de&lt;br /&gt;
 $LOADERSIZE/de&lt;br /&gt;
 $MAP/de&lt;br /&gt;
 $NOCOMPILE/de&lt;br /&gt;
 $NOFRAMEPROTECT/de&lt;br /&gt;
 $NOINIT/de&lt;br /&gt;
 $NORAMCLEAR/de&lt;br /&gt;
 $NORAMPZ/de&lt;br /&gt;
 $NOTRANSFORM/de&lt;br /&gt;
 $PROG/de&lt;br /&gt;
 $PROGRAMMER/de&lt;br /&gt;
 $PROJECTTIME/de&lt;br /&gt;
 $REGFILE/de&lt;br /&gt;
 $RESOURCE/de&lt;br /&gt;
 $ROMSTART/de&lt;br /&gt;
 $SERIALINPUT/de&lt;br /&gt;
 $SERIALINPUT1/de&lt;br /&gt;
 $SERIALINPUT2LCD/de&lt;br /&gt;
 $SERIALOUTPUT/de&lt;br /&gt;
 $SERIALOUTPUT1/de&lt;br /&gt;
 $SIM/de&lt;br /&gt;
 $SOFTCHECK/de&lt;br /&gt;
 $STACKDUMP/de&lt;br /&gt;
 $SWSTACK/de&lt;br /&gt;
 $TIMEOUT/de&lt;br /&gt;
 $TINY/de&lt;br /&gt;
 $VERSION/de&lt;br /&gt;
 $WAITSTATE/de&lt;br /&gt;
 $XA/de&lt;br /&gt;
 $XRAMSIZE/de&lt;br /&gt;
 $XRAMSTART/de&lt;br /&gt;
 $XTEAKEY/de&lt;br /&gt;
&lt;br /&gt;
 *AUTOCODE/de&lt;br /&gt;
 *IF ELSE ELSEIF ENDIF/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt 1WIRECOUNT/de&lt;br /&gt;
 Übersetzt 1WREAD/de&lt;br /&gt;
 Übersetzt 1WRESET/de&lt;br /&gt;
 Übersetzt 1WSEARCHFIRST/de&lt;br /&gt;
 Übersetzt 1WSEARCHNEXT/de&lt;br /&gt;
 Übersetzt 1WVERIFY/de&lt;br /&gt;
 Übersetzt 1WWRITE/de&lt;br /&gt;
&lt;br /&gt;
 ABS/de&lt;br /&gt;
 ACOS/de&lt;br /&gt;
 ADR/de&lt;br /&gt;
 ADR2/de&lt;br /&gt;
 AESDECRYPT/de&lt;br /&gt;
 AESENCRYPT/de&lt;br /&gt;
 ALIAS/de&lt;br /&gt;
 ASC/de&lt;br /&gt;
 ASIN/de&lt;br /&gt;
 ATN/de&lt;br /&gt;
 ATN2/de&lt;br /&gt;
&lt;br /&gt;
 BASE64DEC/de&lt;br /&gt;
 BASE64ENC/de&lt;br /&gt;
 BAUD/de&lt;br /&gt;
 BAUD1/de&lt;br /&gt;
 BCD/de&lt;br /&gt;
 BIN/de&lt;br /&gt;
 BIN2GRAY/de&lt;br /&gt;
 BINVAL/de&lt;br /&gt;
 BITS/de&lt;br /&gt;
 BITWAIT/de&lt;br /&gt;
 BLOAD/de&lt;br /&gt;
 BOX/de&lt;br /&gt;
 BOXFILL/de&lt;br /&gt;
 BSAVE/de&lt;br /&gt;
 BUFSPACE/de&lt;br /&gt;
 BYVAL/de&lt;br /&gt;
&lt;br /&gt;
 CALL/de&lt;br /&gt;
 CANBAUD/de&lt;br /&gt;
 CANCLEARALLMOBS/de&lt;br /&gt;
 CANCLEARMOB/de&lt;br /&gt;
 CANGETINTS/de&lt;br /&gt;
 CANID/de&lt;br /&gt;
 CANRECEIVE/de&lt;br /&gt;
 CANRESET/de&lt;br /&gt;
 CANSELPAGE/de&lt;br /&gt;
 CANSEND/de&lt;br /&gt;
 CHARPOS/de&lt;br /&gt;
 CHDIR/de&lt;br /&gt;
 CHECKFLOAT/de&lt;br /&gt;
 CHECKSUM/de&lt;br /&gt;
 CHECKSUMXOR/de&lt;br /&gt;
 CHR/de&lt;br /&gt;
 CIRCLE/de&lt;br /&gt;
 CLEAR/de&lt;br /&gt;
 CLOCKDIVISION/de&lt;br /&gt;
 CLOSE/de&lt;br /&gt;
 CLOSESOCKET/de&lt;br /&gt;
 CLS/de&lt;br /&gt;
 CONFIG/de&lt;br /&gt;
 in Arbeit CONFIG 1WIRE/de&lt;br /&gt;
 CONFIG ACI/de&lt;br /&gt;
 CONFIG ACXX/de&lt;br /&gt;
 CONFIG ADC/de&lt;br /&gt;
 CONFIG ADCX/de&lt;br /&gt;
 CONFIG ATEMU/de&lt;br /&gt;
 CONFIG BASE/de&lt;br /&gt;
 CONFIG BCCARD/de&lt;br /&gt;
 CONFIG CANBUS/de&lt;br /&gt;
 CONFIG CANMOB/de&lt;br /&gt;
 CONFIG CLOCK/de&lt;br /&gt;
 CONFIG CLOCKDIV/de&lt;br /&gt;
 CONFIG COM1/de&lt;br /&gt;
 CONFIG COM2/de&lt;br /&gt;
 CONFIG COMX/de&lt;br /&gt;
 CONFIG DACX/de&lt;br /&gt;
 CONFIG DATE/de&lt;br /&gt;
 CONFIG DCF77/de&lt;br /&gt;
 CONFIG DEBOUNCE/de&lt;br /&gt;
 CONFIG DMA/de&lt;br /&gt;
 CONFIG DMACHX/de&lt;br /&gt;
 CONFIG DMXSLAVE/de&lt;br /&gt;
 CONFIG DP/de&lt;br /&gt;
 CONFIG EEPROM/de&lt;br /&gt;
 CONFIG ERROR/de&lt;br /&gt;
 CONFIG EVENT SYSTEM/de&lt;br /&gt;
 CONFIG EXTENDED PORT/de&lt;br /&gt;
 CONFIG GRAPHLCD/de&lt;br /&gt;
 CONFIG HITAG/de&lt;br /&gt;
 CONFIG I2CDELAY/de&lt;br /&gt;
 CONFIG I2CSLAVE/de&lt;br /&gt;
 CONFIG INPUT/de&lt;br /&gt;
 CONFIG INTX/de&lt;br /&gt;
 CONFIG KBD/de&lt;br /&gt;
 CONFIG KEYBOARD/de&lt;br /&gt;
 CONFIG LCD/de&lt;br /&gt;
 CONFIG LCDBUS/de&lt;br /&gt;
 CONFIG LCDMODE/de&lt;br /&gt;
 CONFIG LCDPIN/de&lt;br /&gt;
 CONFIG OSC/de&lt;br /&gt;
 CONFIG PORT/de&lt;br /&gt;
 CONFIG POWERMODE/de&lt;br /&gt;
 CONFIG POWER REDUCTION/de&lt;br /&gt;
 CONFIG PRINT/de&lt;br /&gt;
 CONFIG PRINTBIN/de&lt;br /&gt;
 CONFIG PRIORITY/de&lt;br /&gt;
 CONFIG PS2EMU/de&lt;br /&gt;
 CONFIG RC5/de&lt;br /&gt;
 CONFIG SCL/de&lt;br /&gt;
 CONFIG SDA/de&lt;br /&gt;
 CONFIG SERIALIN/de&lt;br /&gt;
 CONFIG SERIALOUT/de&lt;br /&gt;
 CONFIG SERVOS/de&lt;br /&gt;
 CONFIG SHIFTIN/de&lt;br /&gt;
 CONFIG SINGLE/de&lt;br /&gt;
 CONFIG SPI/de&lt;br /&gt;
 CONFIG SPIX/de&lt;br /&gt;
 CONFIG SUBMODE/de&lt;br /&gt;
 CONFIG SYSCLOCK/de&lt;br /&gt;
 CONFIG TCPIP/de&lt;br /&gt;
 CONFIG TCXX/de&lt;br /&gt;
 CONFIG TIMER0/de&lt;br /&gt;
 CONFIG TIMER1/de&lt;br /&gt;
 CONFIG TIMER2/de&lt;br /&gt;
 CONFIG TWI/de&lt;br /&gt;
 CONFIG TWISLAVE/de&lt;br /&gt;
 CONFIG USB/de&lt;br /&gt;
 CONFIG VPORT/de&lt;br /&gt;
 CONFIG WAITSUART/de&lt;br /&gt;
 CONFIG WATCHDOG/de&lt;br /&gt;
 CONFIG X10/de&lt;br /&gt;
 CONFIG XPIN/de&lt;br /&gt;
 CONFIG XRAM/de&lt;br /&gt;
 CONST/de&lt;br /&gt;
 COS/de&lt;br /&gt;
 COSH/de&lt;br /&gt;
 COUNTER0/de&lt;br /&gt;
 COUNTER1/de&lt;br /&gt;
 CPEEK/de&lt;br /&gt;
 CPEEKH/de&lt;br /&gt;
 CRC16/de&lt;br /&gt;
 CRC16UNI/de&lt;br /&gt;
 CRC32/de&lt;br /&gt;
 CRC8/de&lt;br /&gt;
 CRYSTAL/de&lt;br /&gt;
 Übersetzt CURSOR/de&lt;br /&gt;
 &lt;br /&gt;
 DATA/de&lt;br /&gt;
 DATE$/de&lt;br /&gt;
 DATE/de&lt;br /&gt;
 DAYOFWEEK/de&lt;br /&gt;
 DAYOFYEAR/de&lt;br /&gt;
 DBG/de&lt;br /&gt;
 DCF77TIMEZONE/de&lt;br /&gt;
 DEBOUNCE/de&lt;br /&gt;
 DEBUG/de&lt;br /&gt;
 DECLARE FUNCTION/de&lt;br /&gt;
 DECLARE SUB/de&lt;br /&gt;
 DECR/de&lt;br /&gt;
 DEFLCDCHAR/de&lt;br /&gt;
 DEFXXX/de&lt;br /&gt;
 DEG2RAD/de&lt;br /&gt;
 Übersetzt DELAY/de&lt;br /&gt;
 DELCHAR/de&lt;br /&gt;
 DELCHARS/de&lt;br /&gt;
 DIM/de&lt;br /&gt;
 DIR/de&lt;br /&gt;
 DISABLE/de&lt;br /&gt;
 DISKFREE/de&lt;br /&gt;
 DISKSIZE/de&lt;br /&gt;
 DISPLAY/de&lt;br /&gt;
 Übersetzt DO-LOOP/de&lt;br /&gt;
 DTMFOUT/de&lt;br /&gt;
 DriveCheck/de&lt;br /&gt;
 DriveGetIdentity/de&lt;br /&gt;
 DriveInit/de&lt;br /&gt;
 DriveReadSector/de&lt;br /&gt;
 DriveReset/de&lt;br /&gt;
 DriveWriteSector/de&lt;br /&gt;
&lt;br /&gt;
 ECHO/de&lt;br /&gt;
 ELSE/de&lt;br /&gt;
 ENABLE/de&lt;br /&gt;
 ENCODER/de&lt;br /&gt;
 Übersetzt END/de&lt;br /&gt;
 EOF/de&lt;br /&gt;
 EXIT/de&lt;br /&gt;
 EXP/de&lt;br /&gt;
 &lt;br /&gt;
 FILEATTR/de&lt;br /&gt;
 FILEDATE/de&lt;br /&gt;
 FILEDATETIME/de&lt;br /&gt;
 FILELEN/de&lt;br /&gt;
 FILETIME/de&lt;br /&gt;
 FIX/de&lt;br /&gt;
 FLUSH/de&lt;br /&gt;
 Übersetzt FOR-NEXT/de&lt;br /&gt;
 FORMAT/de&lt;br /&gt;
 FOURTHLINE/de&lt;br /&gt;
 FRAC/de&lt;br /&gt;
 FREEFILE/de&lt;br /&gt;
 FUSING/de&lt;br /&gt;
&lt;br /&gt;
 GET/de&lt;br /&gt;
 GETADC/de&lt;br /&gt;
 GETATKBD/de&lt;br /&gt;
 GETATKBDRAW/de&lt;br /&gt;
 GETDSTIP/de&lt;br /&gt;
 GETDSTPORT/de&lt;br /&gt;
 GETKBD/de&lt;br /&gt;
 GETRC/de&lt;br /&gt;
 GETRC5/de&lt;br /&gt;
 GETREG/de&lt;br /&gt;
 GETSOCKET/de&lt;br /&gt;
 GETTCPREGS/de&lt;br /&gt;
 GLCDCMD/de&lt;br /&gt;
 GLCDDATA/de&lt;br /&gt;
 Übersetzt GOSUB/de&lt;br /&gt;
 Übersetzt GOTO/de&lt;br /&gt;
 GRAY2BIN/de&lt;br /&gt;
 &lt;br /&gt;
 HEX/de&lt;br /&gt;
 HEXVAL/de&lt;br /&gt;
 HIGH/de&lt;br /&gt;
 HIGHW/de&lt;br /&gt;
 HOME/de&lt;br /&gt;
 &lt;br /&gt;
 I2CINIT/de&lt;br /&gt;
 I2CRBYTE/de&lt;br /&gt;
 I2CRECEIVE/de&lt;br /&gt;
 I2CREPSTART/de&lt;br /&gt;
 I2CSEND/de&lt;br /&gt;
 I2CSTART/de&lt;br /&gt;
 I2CSTOP/de&lt;br /&gt;
 I2CWBYTE/de&lt;br /&gt;
 Übersetzt IDLE/de&lt;br /&gt;
 Übersetzt IF-THEN-ELSE-END IF/de&lt;br /&gt;
 INCR/de&lt;br /&gt;
 INITFILESYSTEM/de&lt;br /&gt;
 INITLCD/de&lt;br /&gt;
 INKEY/de&lt;br /&gt;
 INP/de&lt;br /&gt;
 INPUT/de&lt;br /&gt;
 INPUTBIN/de&lt;br /&gt;
 INPUTHEX/de&lt;br /&gt;
 INSERTCHAR/de&lt;br /&gt;
 INSTR/de&lt;br /&gt;
 INT/de&lt;br /&gt;
 IP2STR/de&lt;br /&gt;
 ISCHARWAITING/de&lt;br /&gt;
&lt;br /&gt;
 KILL/de&lt;br /&gt;
&lt;br /&gt;
 LCASE/de&lt;br /&gt;
 LCD/de&lt;br /&gt;
 LCDAT/de&lt;br /&gt;
 LCDAUTODIM/de&lt;br /&gt;
 LCDCMD/de&lt;br /&gt;
 LCDCONTRAST/de&lt;br /&gt;
 LCDDATA/de&lt;br /&gt;
 LEFT/de&lt;br /&gt;
 LEN/de&lt;br /&gt;
 LINE/de&lt;br /&gt;
 LINEINPUT/de&lt;br /&gt;
 LINE INPUT/de&lt;br /&gt;
 LOAD/de&lt;br /&gt;
 LOADADR/de&lt;br /&gt;
 LOADLABEL/de&lt;br /&gt;
 LOADWORDADR/de&lt;br /&gt;
 LOC/de&lt;br /&gt;
 LOCAL/de&lt;br /&gt;
 LOCATE/de&lt;br /&gt;
 LOF/de&lt;br /&gt;
 LOG/de&lt;br /&gt;
 LOG10/de&lt;br /&gt;
 LOOKDOWN/de&lt;br /&gt;
 LOOKUP/de&lt;br /&gt;
 LOOKUPSTR/de&lt;br /&gt;
 LOW/de&lt;br /&gt;
 LOWERLINE/de&lt;br /&gt;
 LTRIM/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt MACRO/de&lt;br /&gt;
 MAKEBCD/de&lt;br /&gt;
 MAKEDEC/de&lt;br /&gt;
 MAKEINT/de&lt;br /&gt;
 MAKEMODBUS/de&lt;br /&gt;
 MAKETCP/de&lt;br /&gt;
 MAX/de&lt;br /&gt;
 MEMCOPY/de&lt;br /&gt;
 MID/de&lt;br /&gt;
 MIN/de&lt;br /&gt;
 MKDIR/de&lt;br /&gt;
 MOD/de&lt;br /&gt;
&lt;br /&gt;
 NBITS/de&lt;br /&gt;
 &lt;br /&gt;
 ON INTERRUPT/de&lt;br /&gt;
 ON VALUE/de&lt;br /&gt;
 OPEN/de&lt;br /&gt;
 OUT/de&lt;br /&gt;
&lt;br /&gt;
 PEEK/de&lt;br /&gt;
 POKE/de&lt;br /&gt;
 POPALL/de&lt;br /&gt;
 POWER/de&lt;br /&gt;
 POWERDOWN/de&lt;br /&gt;
 POWERSAVE/de&lt;br /&gt;
 POWER MODE/de&lt;br /&gt;
 PRINT/de&lt;br /&gt;
 PRINTBIN/de&lt;br /&gt;
 PS2MOUSEXY/de&lt;br /&gt;
 PSET/de&lt;br /&gt;
 PULSEIN/de&lt;br /&gt;
 PULSEOUT/de&lt;br /&gt;
 PUSHALL/de&lt;br /&gt;
 PUT/de&lt;br /&gt;
&lt;br /&gt;
 QUOTE/de&lt;br /&gt;
 &lt;br /&gt;
 RAD2DEG/de&lt;br /&gt;
 RC5SEND/de&lt;br /&gt;
 RC5SENDEXT/de&lt;br /&gt;
 RC6SEND/de&lt;br /&gt;
 READ/de&lt;br /&gt;
 READEEPROM/de&lt;br /&gt;
 READHITAG/de&lt;br /&gt;
 READMAGCARD/de&lt;br /&gt;
 READSIG/de&lt;br /&gt;
 Übersetzt REM/de&lt;br /&gt;
 REPLACECHARS/de&lt;br /&gt;
 RESET/de&lt;br /&gt;
 RESTORE/de&lt;br /&gt;
 RETURN/de&lt;br /&gt;
 RIGHT/de&lt;br /&gt;
 RMDIR/de&lt;br /&gt;
 RND/de&lt;br /&gt;
 ROTATE/de&lt;br /&gt;
 ROUND/de&lt;br /&gt;
 RTRIM/de&lt;br /&gt;
 &lt;br /&gt;
 SECELAPSED/de&lt;br /&gt;
 SECOFDAY/de&lt;br /&gt;
 SEEK/de&lt;br /&gt;
 SELECT-CASE-END SELECT/de&lt;br /&gt;
 SENDSCAN/de&lt;br /&gt;
 SENDSCANKBD/de&lt;br /&gt;
 SERIN/de&lt;br /&gt;
 SEROUT/de&lt;br /&gt;
 SET/de&lt;br /&gt;
 SETFONT/de&lt;br /&gt;
 SETIPPROTOCOL/de&lt;br /&gt;
 SETREG/de&lt;br /&gt;
 SETTCP/de&lt;br /&gt;
 SETTCPREGS/de&lt;br /&gt;
 SGN/de&lt;br /&gt;
 SHIFT/de&lt;br /&gt;
 SHIFTCURSOR/de&lt;br /&gt;
 SHIFTIN/de&lt;br /&gt;
 SHIFTLCD/de&lt;br /&gt;
 SHIFTOUT/de&lt;br /&gt;
 SHOWPIC/de&lt;br /&gt;
 SHOWPICE/de&lt;br /&gt;
 SIN/de&lt;br /&gt;
 SINH/de&lt;br /&gt;
 SNTP/de&lt;br /&gt;
 SOCKETCLOSE/de&lt;br /&gt;
 SOCKETCONNECT/de&lt;br /&gt;
 SOCKETDISCONNECT/de&lt;br /&gt;
 SOCKETLISTEN/de&lt;br /&gt;
 SOCKETSTAT/de&lt;br /&gt;
 SONYSEND/de&lt;br /&gt;
 SORT/de&lt;br /&gt;
 SOUND/de&lt;br /&gt;
 SPACE/de&lt;br /&gt;
 SPC/de&lt;br /&gt;
 SPIIN/de&lt;br /&gt;
 SPIINIT/de&lt;br /&gt;
 SPIMOVE/de&lt;br /&gt;
 SPIOUT/de&lt;br /&gt;
 SPLIT/de&lt;br /&gt;
 SQR/de&lt;br /&gt;
 Übersetzt START/de&lt;br /&gt;
 STCHECK/de&lt;br /&gt;
 Übersetzt STOP/de&lt;br /&gt;
 STR/de&lt;br /&gt;
 STR2DIGITS/de&lt;br /&gt;
 STRING/de&lt;br /&gt;
 Übersetzt SUB/de&lt;br /&gt;
 SWAP/de&lt;br /&gt;
 SYSDAY/de&lt;br /&gt;
 SYSSEC/de&lt;br /&gt;
 SYSSECELAPSED/de&lt;br /&gt;
 &lt;br /&gt;
 TAN/de&lt;br /&gt;
 TANH/de&lt;br /&gt;
 TCPCHECKSUM/de&lt;br /&gt;
 TCPREAD/de&lt;br /&gt;
 TCPREADHEADER/de&lt;br /&gt;
 TCPWRITE/de&lt;br /&gt;
 TCPWRITESTR/de&lt;br /&gt;
 THIRDLINE/de&lt;br /&gt;
 TIME$/de&lt;br /&gt;
 TIME/de&lt;br /&gt;
 Übersetzt TOGGLE/de&lt;br /&gt;
 TRIM/de&lt;br /&gt;
 &lt;br /&gt;
 UCASE/de&lt;br /&gt;
 UDPREAD/de&lt;br /&gt;
 UDPREADHEADER/de&lt;br /&gt;
 UDPWRITE/de&lt;br /&gt;
 UDPWRITESTR/de&lt;br /&gt;
 UPPERLINE/de&lt;br /&gt;
 VAL/de&lt;br /&gt;
 VARPTR/de&lt;br /&gt;
 VER/de&lt;br /&gt;
 VERSION/de&lt;br /&gt;
 &lt;br /&gt;
 Übersetzt WAIT/de&lt;br /&gt;
 WAITKEY/de&lt;br /&gt;
 Übersetzt WAITMS/de&lt;br /&gt;
 Übersetzt WAITUS/de&lt;br /&gt;
 Übersetzt WHILE-WEND/de&lt;br /&gt;
 WRITE/de&lt;br /&gt;
 WRITEEEPROM/de&lt;br /&gt;
&lt;br /&gt;
 X10DETECT/de&lt;br /&gt;
 X10SEND/de&lt;br /&gt;
 XTEADECODE/de&lt;br /&gt;
 XTEAENCODE/de&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/CONFIG_1WIRE/de</id>
		<title>CONFIG 1WIRE/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/CONFIG_1WIRE/de"/>
				<updated>2013-02-23T20:23:17Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* (**COPIED FROM ENGLISH PAGE**) = */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Funktion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Konfiguriert den Pin zur Benutzung mit 1-Wire und überschreibt die Compiler-Einstellung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;CONFIG 1WIRE&amp;lt;/span&amp;gt;&amp;amp;nbsp;= pin [, extended=0|1]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Remarks&amp;lt;/span&amp;gt; =&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;485&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;20%&amp;quot; style=&amp;quot;width: 94px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Pin&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;106%&amp;quot; style=&amp;quot;width: 382px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The port pin to use such as PORTB.0&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;20%&amp;quot; style=&amp;quot;width: 94px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
extended&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;106%&amp;quot; style=&amp;quot;width: 382px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
An optional constant value which need to be 0 or 1.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The CONFIG 1WIRE statement overrides the compiler setting. It is the preferred that you use it. This way the setting is stored in your source code.&lt;br /&gt;
&lt;br /&gt;
You can configure only one pin for the 1WIRE statements because the idea is that you can attach multiple 1WIRE devices to the 1WIRE bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can however use multiple pins and thus multiple busses. All 1wire commands and functions need the port and pin in that case.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The 1wire commands and function will automatically set the DDR and PORT register bits to the proper state. You do not need to bring the pins into the right state yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is important that you use a pull up resistor of 4K7 ohm on the 1wire pin. The pull up resistor of the AVR is not sufficient.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also notice that some 1wire chips also need +5V. 1 wire is just marketing since you need GND anyway. The least is 2 wires and typical you need 3 wires.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Extended&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The extended option is only needed when you use multiple busses/pins and if these are pins mix normal and extended addresses.&lt;br /&gt;
&lt;br /&gt;
Let's clear that up. When the 1wire code was written in 1995 all the port addresses were normal I/O addresses. These are addresses that fit in the I/O space (address &amp;lt; &amp;amp;H60). &amp;amp;nbsp;To save code, register R31 was cleared in the library and the port register was passed in R30.&lt;br /&gt;
&lt;br /&gt;
When Atmel introduced the extended I/O registers with address &amp;gt;&amp;amp;HFF, it was possible to set R31 to a fixed value when the user port was an extended I/O address.&lt;br /&gt;
&lt;br /&gt;
But when you want to mix the addresses, there is no other way then to pass the word address of the I/O register to the library code.&lt;br /&gt;
&lt;br /&gt;
And that is exactly what EXTENDED=1 will do. It will use more code. This support was written for a customer that already made his PCB's. We do advise to use the same port when you use multiple pins.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[1WRESET]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WREAD]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WWRITE]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WIRECOUNT|1WIRECOUNT&amp;amp;nbsp;]],&amp;amp;nbsp;[[1WRESET]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WSEARCHFIRST]]&amp;amp;nbsp;,&amp;amp;nbsp;[[1WSEARCHNEXT]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : 1wire.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wreset, 1wwrite and 1wread()&lt;br /&gt;
'micro : Mega48&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
' pull-up of 4K7 required to VCC from Portb.2&lt;br /&gt;
' DS2401 serial button connected to Portb.2&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot;&lt;br /&gt;
$crystal = 8000000&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 'default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 'default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0&lt;br /&gt;
 &lt;br /&gt;
'when only bytes are used, use the following lib for smaller code&lt;br /&gt;
$lib &amp;quot;mcsbyte.lib&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Config 1wire = Portb.0 'use this pin&lt;br /&gt;
'On the STK200 jumper B.0 must be inserted&lt;br /&gt;
Dim Ar(8) As Byte , A As Byte , I As Byte&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
Wait 1&lt;br /&gt;
1wreset 'reset the device&lt;br /&gt;
Print Err 'print error 1 if error&lt;br /&gt;
1wwrite &amp;amp;H33 'read ROM command&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Ar(i) = 1wread() 'place into array&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'You could also read 8 bytes a time by unremarking the next line&lt;br /&gt;
'and by deleting the for next above&lt;br /&gt;
'Ar(1) = 1wread(8) 'read 8 bytes&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i)); 'print output&lt;br /&gt;
Next&lt;br /&gt;
Print 'linefeed&lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'NOTE THAT WHEN YOU COMPILE THIS SAMPLE THE CODE WILL RUN TO THIS POINT&lt;br /&gt;
'THIS because of the DO LOOP that is never terminated!!!&lt;br /&gt;
 &lt;br /&gt;
'New is the possibility to use more than one 1 wire bus&lt;br /&gt;
'The following syntax must be used:&lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Ar(i) = 0 'clear array to see that it works&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
1wreset Pinb , 2 'use this port and pin for the second device&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , 2 'note that now the number of bytes must be specified!&lt;br /&gt;
'1wwrite Ar(1) , 5,pinb,2&lt;br /&gt;
 &lt;br /&gt;
'reading is also different&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , 2) 'read 8 bytes from portB on pin 2&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
Print Hex(ar(i));&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
'you could create a loop with a variable for the bit number !&lt;br /&gt;
For I = 0 To 3 'for pin 0-3&lt;br /&gt;
1wreset Pinb , I&lt;br /&gt;
1wwrite &amp;amp;H33 , 1 , Pinb , I&lt;br /&gt;
Ar(1) = 1wread(8 , Pinb , I)&lt;br /&gt;
For A = 1 To 8&lt;br /&gt;
 Print Hex(ar(a));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
Next&lt;br /&gt;
End&lt;br /&gt;
 &lt;br /&gt;
Xmega Example&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
'name : XM128-1wire.bas&lt;br /&gt;
'copyright : (c) 1995-2010, MCS Electronics&lt;br /&gt;
'purpose : demonstrates 1wreset, 1wwrite and 1wread()&lt;br /&gt;
'micro : Xm128A1&lt;br /&gt;
'suited for demo : no&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
' pull-up of 4K7 required to VCC from Portb.0&lt;br /&gt;
' DS2401 serial button connected to Portb.0&lt;br /&gt;
'--------------------------------------------------------------------------------&lt;br /&gt;
$regfile = &amp;quot;xm128a1def.dat&amp;quot;&lt;br /&gt;
$crystal = 32000000&lt;br /&gt;
 &lt;br /&gt;
$lib &amp;quot;xmega.lib&amp;quot; : $external _xmegafix_clear : $external _xmegafix_rol_r1014&lt;br /&gt;
 &lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 32 'default use 10 for the SW stack&lt;br /&gt;
$framesize = 32 'default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
'First Enable The Osc Of Your Choice&lt;br /&gt;
Config Osc = Enabled , 32mhzosc = Enabled&lt;br /&gt;
 &lt;br /&gt;
'configure the systemclock&lt;br /&gt;
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1&lt;br /&gt;
 &lt;br /&gt;
'configure UART&lt;br /&gt;
Config Com1 = 19200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'configure 1wire pin&lt;br /&gt;
Config 1wire = Portb.0 'use this pin&lt;br /&gt;
 &lt;br /&gt;
Dim Ar(8) As Byte , A As Byte , I As Byte&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;start&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
A = 1wirecount()&lt;br /&gt;
Print A ; &amp;quot; devices found&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
'get first&lt;br /&gt;
Ar(1) = 1wsearchfirst()&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8 'print the number&lt;br /&gt;
Print Hex(ar(i));&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
 'Now search for other devices&lt;br /&gt;
 Ar(1) = 1wsearchnext() ' get next device&lt;br /&gt;
 For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i));&lt;br /&gt;
 Next&lt;br /&gt;
 Print&lt;br /&gt;
Loop Until Err = 1&lt;br /&gt;
 &lt;br /&gt;
Waitms 2000&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
1wreset 'reset the device&lt;br /&gt;
Print Err 'print error 1 if error&lt;br /&gt;
 &lt;br /&gt;
1wwrite &amp;amp;H33 'read ROM command&lt;br /&gt;
' Ar(1) = 1wread(8) you can use this instead of the code below&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Ar(i) = 1wread() 'place into array&lt;br /&gt;
Next&lt;br /&gt;
 &lt;br /&gt;
For I = 1 To 8&lt;br /&gt;
 Print Hex(ar(i)); 'print output&lt;br /&gt;
Next&lt;br /&gt;
Print 'linefeed&lt;br /&gt;
Waitms 1000&lt;br /&gt;
Loop&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/STAND_%3FBERSETZUNG_(temor%3Fr)</id>
		<title>STAND ?BERSETZUNG (temor?r)</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/STAND_%3FBERSETZUNG_(temor%3Fr)"/>
				<updated>2013-02-23T20:20:13Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MAIN MENUE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  *Installation/de&lt;br /&gt;
 Übersetzt Installation of BASCOM/de&lt;br /&gt;
 Übersetzt Installation on multiple computers/de&lt;br /&gt;
 Übersetzt Move to new PC/de&lt;br /&gt;
 Übersetzt Updates/de&lt;br /&gt;
&lt;br /&gt;
  *BASCOM Language Fundamentals/de&lt;br /&gt;
 Übersetzt ASCII chart/de&lt;br /&gt;
 Übersetzt Assembler mnemonics/de&lt;br /&gt;
 Übersetzt Changes compared to BASCOM-8051/de&lt;br /&gt;
 Übersetzt Error Codes/de&lt;br /&gt;
 Übersetzt Keyword reference/de&lt;br /&gt;
 IN ARBEIT Language Fundamentals/de&lt;br /&gt;
 Mixing ASM and BASIC/de&lt;br /&gt;
 Übersetzt Newbie problems/de&lt;br /&gt;
 Reserved Words/de&lt;br /&gt;
 Übersetzt Tips and tricks/de&lt;br /&gt;
&lt;br /&gt;
  *ASM Libraries and Add-Ons/de&lt;br /&gt;
 *AVR-DOS/de&lt;br /&gt;
 *BCCARD/de&lt;br /&gt;
 *CF Card/de&lt;br /&gt;
 *DATE TIME/de&lt;br /&gt;
 *Floating Point/de&lt;br /&gt;
 *I2C SLAVE/de&lt;br /&gt;
 *LCD/de&lt;br /&gt;
 *PS2-AT Mouse and Keyboard Emulation/de&lt;br /&gt;
 *SPI/de&lt;br /&gt;
 *USB/de&lt;br /&gt;
 EXTENDED I2C/de&lt;br /&gt;
 FM24C16/de&lt;br /&gt;
 FM24C64-256/de&lt;br /&gt;
 FM25C256/de&lt;br /&gt;
 HEXVAL lib/de&lt;br /&gt;
 I2C-TWI/de&lt;br /&gt;
 MCSBYTE/de&lt;br /&gt;
 MCSBYTEINT/de&lt;br /&gt;
 MODBUS Slave-Server/de&lt;br /&gt;
 TCPIP/de&lt;br /&gt;
&lt;br /&gt;
  *BASCOM HARDWARE/de&lt;br /&gt;
 *Chips/de&lt;br /&gt;
 *Reference Designs/de&lt;br /&gt;
 Adding XRAM to XMEGA using EBI/de&lt;br /&gt;
 Adding XRAM with External Memory Interface/de&lt;br /&gt;
 Additional Hardware/de&lt;br /&gt;
 Attaching an LCD Display/de&lt;br /&gt;
 AVR Internal Hardware Port B/de&lt;br /&gt;
 AVR Internal Hardware Port D/de&lt;br /&gt;
 AVR Internal Hardware TIMER0/de&lt;br /&gt;
 AVR Internal Hardware TIMER1/de&lt;br /&gt;
 AVR Internal Hardware Watchdog timer/de&lt;br /&gt;
 AVR Internal Hardware/de&lt;br /&gt;
 AVR Internal Registers/de&lt;br /&gt;
 Memory usage/de&lt;br /&gt;
 Power Up/de&lt;br /&gt;
 Using RS485/de&lt;br /&gt;
 Übersetzt Using the 1 WIRE protocol/de&lt;br /&gt;
 Using the I2C protocol/de&lt;br /&gt;
 Using the SPI protocol/de&lt;br /&gt;
 Using the UART/de&lt;br /&gt;
 Using USI (Universal Serial Interface)/de&lt;br /&gt;
&lt;br /&gt;
 *Tools/de&lt;br /&gt;
 LCD RGB-8 Converter/de&lt;br /&gt;
&lt;br /&gt;
 *BASCOM IDE/de&lt;br /&gt;
 *Options Compiler/de&lt;br /&gt;
 *Options Programmer/de&lt;br /&gt;
 *Plugins/de&lt;br /&gt;
 BASCOM Editor Keys/de&lt;br /&gt;
 Edit Copy/de&lt;br /&gt;
 Edit Cut/de&lt;br /&gt;
 Edit Encrypt Selected Code/de&lt;br /&gt;
 Edit Find Next/de&lt;br /&gt;
 Edit Find/de&lt;br /&gt;
 Edit Goto Bookmark/de&lt;br /&gt;
 Edit Goto/de&lt;br /&gt;
 Edit Indent Block/de&lt;br /&gt;
 Edit Paste/de&lt;br /&gt;
 Edit Redo/de&lt;br /&gt;
 Edit Remark Block/de&lt;br /&gt;
 Edit Replace/de&lt;br /&gt;
 Edit Toggle Bookmark/de&lt;br /&gt;
 Edit Undo/de&lt;br /&gt;
 Edit Unindent Block/de&lt;br /&gt;
 File Close/de&lt;br /&gt;
 File Exit/de&lt;br /&gt;
 File New/de&lt;br /&gt;
 File Open/de&lt;br /&gt;
 File Print Preview/de&lt;br /&gt;
 File Print/de&lt;br /&gt;
 File Project/de&lt;br /&gt;
 File Save As/de&lt;br /&gt;
 File Save/de&lt;br /&gt;
 Help About/de&lt;br /&gt;
 Help Credits/de&lt;br /&gt;
 Help Index/de&lt;br /&gt;
 Help Knowledge Base/de&lt;br /&gt;
 Help MCS Forum/de&lt;br /&gt;
 Help MCS Shop/de&lt;br /&gt;
 Help Support/de&lt;br /&gt;
 Help Update/de&lt;br /&gt;
 Options Communication/de&lt;br /&gt;
 Options Environment/de&lt;br /&gt;
 Options Monitor/de&lt;br /&gt;
 Options Printer/de&lt;br /&gt;
 Options Simulator/de&lt;br /&gt;
 Program Compile/de&lt;br /&gt;
 Program Development Order/de&lt;br /&gt;
 Program Send to Chip/de&lt;br /&gt;
 Program Show Result/de&lt;br /&gt;
 Program Simulate/de&lt;br /&gt;
 Program Syntax Check/de&lt;br /&gt;
 Running BASCOM-AVR/de&lt;br /&gt;
 Tools Batch Compile/de&lt;br /&gt;
 Tools Graphic Converter/de&lt;br /&gt;
 Tools LCD Designer/de&lt;br /&gt;
 Tools LIB Manager/de&lt;br /&gt;
 Tools PDF Update/de&lt;br /&gt;
 Tools Plugin Manager/de&lt;br /&gt;
 Tools Resource Editor/de&lt;br /&gt;
 Tools Stack Analyzer/de&lt;br /&gt;
 Tools Terminal Emulator/de&lt;br /&gt;
 View Code Explorer/de&lt;br /&gt;
 View Error Panel/de&lt;br /&gt;
 View PDF viewer/de&lt;br /&gt;
 View PinOut/de&lt;br /&gt;
 View Project Files/de&lt;br /&gt;
 View Tip/de&lt;br /&gt;
 Window Arrange Icons/de&lt;br /&gt;
 Window Cascade/de&lt;br /&gt;
 Window Minimize All/de&lt;br /&gt;
 Window Tile/de&lt;br /&gt;
 Windows Maximize All/de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 BASCOM-AVR Stichworte - DE Übersetzung&lt;br /&gt;
&lt;br /&gt;
 $AESKEY/de&lt;br /&gt;
 $ASM/de&lt;br /&gt;
 $BAUD/de&lt;br /&gt;
 $BAUD1/de&lt;br /&gt;
 $BGF/de&lt;br /&gt;
 $BIGSTRINGS/de&lt;br /&gt;
 $BOOT/de&lt;br /&gt;
 $CRYPT/de&lt;br /&gt;
 Übersetzt $CRYSTAL/de&lt;br /&gt;
 $DATA/de&lt;br /&gt;
 $DBG/de&lt;br /&gt;
 $DEFAULT/de&lt;br /&gt;
 $EEPLEAVE/de&lt;br /&gt;
 $EEPROM/de&lt;br /&gt;
 $EEPROMHEX/de&lt;br /&gt;
 $EEPROMSIZE/de&lt;br /&gt;
 $EXTERNAL/de&lt;br /&gt;
 $FILE/de&lt;br /&gt;
 $FRAMECHECK/de&lt;br /&gt;
 $FRAMEPROTECT/de&lt;br /&gt;
 $FRAMESIZE/de&lt;br /&gt;
 $HWCHECK/de&lt;br /&gt;
 $HWSTACK/de&lt;br /&gt;
 $INC/de&lt;br /&gt;
 $INCLUDE/de&lt;br /&gt;
 $INITMICRO/de&lt;br /&gt;
 $LCD/de&lt;br /&gt;
 $LCDPUTCTRL/de&lt;br /&gt;
 $LCDPUTDATA/de&lt;br /&gt;
 $LCDRS/de&lt;br /&gt;
 $LCDVFO/de&lt;br /&gt;
 $LIB/de&lt;br /&gt;
 $LOADER/de&lt;br /&gt;
 $LOADERSIZE/de&lt;br /&gt;
 $MAP/de&lt;br /&gt;
 $NOCOMPILE/de&lt;br /&gt;
 $NOFRAMEPROTECT/de&lt;br /&gt;
 $NOINIT/de&lt;br /&gt;
 $NORAMCLEAR/de&lt;br /&gt;
 $NORAMPZ/de&lt;br /&gt;
 $NOTRANSFORM/de&lt;br /&gt;
 $PROG/de&lt;br /&gt;
 $PROGRAMMER/de&lt;br /&gt;
 $PROJECTTIME/de&lt;br /&gt;
 $REGFILE/de&lt;br /&gt;
 $RESOURCE/de&lt;br /&gt;
 $ROMSTART/de&lt;br /&gt;
 $SERIALINPUT/de&lt;br /&gt;
 $SERIALINPUT1/de&lt;br /&gt;
 $SERIALINPUT2LCD/de&lt;br /&gt;
 $SERIALOUTPUT/de&lt;br /&gt;
 $SERIALOUTPUT1/de&lt;br /&gt;
 $SIM/de&lt;br /&gt;
 $SOFTCHECK/de&lt;br /&gt;
 $STACKDUMP/de&lt;br /&gt;
 $SWSTACK/de&lt;br /&gt;
 $TIMEOUT/de&lt;br /&gt;
 $TINY/de&lt;br /&gt;
 $VERSION/de&lt;br /&gt;
 $WAITSTATE/de&lt;br /&gt;
 $XA/de&lt;br /&gt;
 $XRAMSIZE/de&lt;br /&gt;
 $XRAMSTART/de&lt;br /&gt;
 $XTEAKEY/de&lt;br /&gt;
&lt;br /&gt;
 *AUTOCODE/de&lt;br /&gt;
 *IF ELSE ELSEIF ENDIF/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt 1WIRECOUNT/de&lt;br /&gt;
 Übersetzt 1WREAD/de&lt;br /&gt;
 Übersetzt 1WRESET/de&lt;br /&gt;
 Übersetzt 1WSEARCHFIRST/de&lt;br /&gt;
 Übersetzt 1WSEARCHNEXT/de&lt;br /&gt;
 Übersetzt 1WVERIFY/de&lt;br /&gt;
 Übersetzt 1WWRITE/de&lt;br /&gt;
&lt;br /&gt;
 ABS/de&lt;br /&gt;
 ACOS/de&lt;br /&gt;
 ADR/de&lt;br /&gt;
 ADR2/de&lt;br /&gt;
 AESDECRYPT/de&lt;br /&gt;
 AESENCRYPT/de&lt;br /&gt;
 ALIAS/de&lt;br /&gt;
 ASC/de&lt;br /&gt;
 ASIN/de&lt;br /&gt;
 ATN/de&lt;br /&gt;
 ATN2/de&lt;br /&gt;
&lt;br /&gt;
 BASE64DEC/de&lt;br /&gt;
 BASE64ENC/de&lt;br /&gt;
 BAUD/de&lt;br /&gt;
 BAUD1/de&lt;br /&gt;
 BCD/de&lt;br /&gt;
 BIN/de&lt;br /&gt;
 BIN2GRAY/de&lt;br /&gt;
 BINVAL/de&lt;br /&gt;
 BITS/de&lt;br /&gt;
 BITWAIT/de&lt;br /&gt;
 BLOAD/de&lt;br /&gt;
 BOX/de&lt;br /&gt;
 BOXFILL/de&lt;br /&gt;
 BSAVE/de&lt;br /&gt;
 BUFSPACE/de&lt;br /&gt;
 BYVAL/de&lt;br /&gt;
&lt;br /&gt;
 CALL/de&lt;br /&gt;
 CANBAUD/de&lt;br /&gt;
 CANCLEARALLMOBS/de&lt;br /&gt;
 CANCLEARMOB/de&lt;br /&gt;
 CANGETINTS/de&lt;br /&gt;
 CANID/de&lt;br /&gt;
 CANRECEIVE/de&lt;br /&gt;
 CANRESET/de&lt;br /&gt;
 CANSELPAGE/de&lt;br /&gt;
 CANSEND/de&lt;br /&gt;
 CHARPOS/de&lt;br /&gt;
 CHDIR/de&lt;br /&gt;
 CHECKFLOAT/de&lt;br /&gt;
 CHECKSUM/de&lt;br /&gt;
 CHECKSUMXOR/de&lt;br /&gt;
 CHR/de&lt;br /&gt;
 CIRCLE/de&lt;br /&gt;
 CLEAR/de&lt;br /&gt;
 CLOCKDIVISION/de&lt;br /&gt;
 CLOSE/de&lt;br /&gt;
 CLOSESOCKET/de&lt;br /&gt;
 CLS/de&lt;br /&gt;
 CONFIG/de&lt;br /&gt;
 CONFIG 1WIRE/de&lt;br /&gt;
 CONFIG ACI/de&lt;br /&gt;
 CONFIG ACXX/de&lt;br /&gt;
 CONFIG ADC/de&lt;br /&gt;
 CONFIG ADCX/de&lt;br /&gt;
 CONFIG ATEMU/de&lt;br /&gt;
 CONFIG BASE/de&lt;br /&gt;
 CONFIG BCCARD/de&lt;br /&gt;
 CONFIG CANBUS/de&lt;br /&gt;
 CONFIG CANMOB/de&lt;br /&gt;
 CONFIG CLOCK/de&lt;br /&gt;
 CONFIG CLOCKDIV/de&lt;br /&gt;
 CONFIG COM1/de&lt;br /&gt;
 CONFIG COM2/de&lt;br /&gt;
 CONFIG COMX/de&lt;br /&gt;
 CONFIG DACX/de&lt;br /&gt;
 CONFIG DATE/de&lt;br /&gt;
 CONFIG DCF77/de&lt;br /&gt;
 CONFIG DEBOUNCE/de&lt;br /&gt;
 CONFIG DMA/de&lt;br /&gt;
 CONFIG DMACHX/de&lt;br /&gt;
 CONFIG DMXSLAVE/de&lt;br /&gt;
 CONFIG DP/de&lt;br /&gt;
 CONFIG EEPROM/de&lt;br /&gt;
 CONFIG ERROR/de&lt;br /&gt;
 CONFIG EVENT SYSTEM/de&lt;br /&gt;
 CONFIG EXTENDED PORT/de&lt;br /&gt;
 CONFIG GRAPHLCD/de&lt;br /&gt;
 CONFIG HITAG/de&lt;br /&gt;
 CONFIG I2CDELAY/de&lt;br /&gt;
 CONFIG I2CSLAVE/de&lt;br /&gt;
 CONFIG INPUT/de&lt;br /&gt;
 CONFIG INTX/de&lt;br /&gt;
 CONFIG KBD/de&lt;br /&gt;
 CONFIG KEYBOARD/de&lt;br /&gt;
 CONFIG LCD/de&lt;br /&gt;
 CONFIG LCDBUS/de&lt;br /&gt;
 CONFIG LCDMODE/de&lt;br /&gt;
 CONFIG LCDPIN/de&lt;br /&gt;
 CONFIG OSC/de&lt;br /&gt;
 CONFIG PORT/de&lt;br /&gt;
 CONFIG POWERMODE/de&lt;br /&gt;
 CONFIG POWER REDUCTION/de&lt;br /&gt;
 CONFIG PRINT/de&lt;br /&gt;
 CONFIG PRINTBIN/de&lt;br /&gt;
 CONFIG PRIORITY/de&lt;br /&gt;
 CONFIG PS2EMU/de&lt;br /&gt;
 CONFIG RC5/de&lt;br /&gt;
 CONFIG SCL/de&lt;br /&gt;
 CONFIG SDA/de&lt;br /&gt;
 CONFIG SERIALIN/de&lt;br /&gt;
 CONFIG SERIALOUT/de&lt;br /&gt;
 CONFIG SERVOS/de&lt;br /&gt;
 CONFIG SHIFTIN/de&lt;br /&gt;
 CONFIG SINGLE/de&lt;br /&gt;
 CONFIG SPI/de&lt;br /&gt;
 CONFIG SPIX/de&lt;br /&gt;
 CONFIG SUBMODE/de&lt;br /&gt;
 CONFIG SYSCLOCK/de&lt;br /&gt;
 CONFIG TCPIP/de&lt;br /&gt;
 CONFIG TCXX/de&lt;br /&gt;
 CONFIG TIMER0/de&lt;br /&gt;
 CONFIG TIMER1/de&lt;br /&gt;
 CONFIG TIMER2/de&lt;br /&gt;
 CONFIG TWI/de&lt;br /&gt;
 CONFIG TWISLAVE/de&lt;br /&gt;
 CONFIG USB/de&lt;br /&gt;
 CONFIG VPORT/de&lt;br /&gt;
 CONFIG WAITSUART/de&lt;br /&gt;
 CONFIG WATCHDOG/de&lt;br /&gt;
 CONFIG X10/de&lt;br /&gt;
 CONFIG XPIN/de&lt;br /&gt;
 CONFIG XRAM/de&lt;br /&gt;
 CONST/de&lt;br /&gt;
 COS/de&lt;br /&gt;
 COSH/de&lt;br /&gt;
 COUNTER0/de&lt;br /&gt;
 COUNTER1/de&lt;br /&gt;
 CPEEK/de&lt;br /&gt;
 CPEEKH/de&lt;br /&gt;
 CRC16/de&lt;br /&gt;
 CRC16UNI/de&lt;br /&gt;
 CRC32/de&lt;br /&gt;
 CRC8/de&lt;br /&gt;
 CRYSTAL/de&lt;br /&gt;
 Übersetzt CURSOR/de&lt;br /&gt;
 &lt;br /&gt;
 DATA/de&lt;br /&gt;
 DATE$/de&lt;br /&gt;
 DATE/de&lt;br /&gt;
 DAYOFWEEK/de&lt;br /&gt;
 DAYOFYEAR/de&lt;br /&gt;
 DBG/de&lt;br /&gt;
 DCF77TIMEZONE/de&lt;br /&gt;
 DEBOUNCE/de&lt;br /&gt;
 DEBUG/de&lt;br /&gt;
 DECLARE FUNCTION/de&lt;br /&gt;
 DECLARE SUB/de&lt;br /&gt;
 DECR/de&lt;br /&gt;
 DEFLCDCHAR/de&lt;br /&gt;
 DEFXXX/de&lt;br /&gt;
 DEG2RAD/de&lt;br /&gt;
 Übersetzt DELAY/de&lt;br /&gt;
 DELCHAR/de&lt;br /&gt;
 DELCHARS/de&lt;br /&gt;
 DIM/de&lt;br /&gt;
 DIR/de&lt;br /&gt;
 DISABLE/de&lt;br /&gt;
 DISKFREE/de&lt;br /&gt;
 DISKSIZE/de&lt;br /&gt;
 DISPLAY/de&lt;br /&gt;
 Übersetzt DO-LOOP/de&lt;br /&gt;
 DTMFOUT/de&lt;br /&gt;
 DriveCheck/de&lt;br /&gt;
 DriveGetIdentity/de&lt;br /&gt;
 DriveInit/de&lt;br /&gt;
 DriveReadSector/de&lt;br /&gt;
 DriveReset/de&lt;br /&gt;
 DriveWriteSector/de&lt;br /&gt;
&lt;br /&gt;
 ECHO/de&lt;br /&gt;
 ELSE/de&lt;br /&gt;
 ENABLE/de&lt;br /&gt;
 ENCODER/de&lt;br /&gt;
 Übersetzt END/de&lt;br /&gt;
 EOF/de&lt;br /&gt;
 EXIT/de&lt;br /&gt;
 EXP/de&lt;br /&gt;
 &lt;br /&gt;
 FILEATTR/de&lt;br /&gt;
 FILEDATE/de&lt;br /&gt;
 FILEDATETIME/de&lt;br /&gt;
 FILELEN/de&lt;br /&gt;
 FILETIME/de&lt;br /&gt;
 FIX/de&lt;br /&gt;
 FLUSH/de&lt;br /&gt;
 Übersetzt FOR-NEXT/de&lt;br /&gt;
 FORMAT/de&lt;br /&gt;
 FOURTHLINE/de&lt;br /&gt;
 FRAC/de&lt;br /&gt;
 FREEFILE/de&lt;br /&gt;
 FUSING/de&lt;br /&gt;
&lt;br /&gt;
 GET/de&lt;br /&gt;
 GETADC/de&lt;br /&gt;
 GETATKBD/de&lt;br /&gt;
 GETATKBDRAW/de&lt;br /&gt;
 GETDSTIP/de&lt;br /&gt;
 GETDSTPORT/de&lt;br /&gt;
 GETKBD/de&lt;br /&gt;
 GETRC/de&lt;br /&gt;
 GETRC5/de&lt;br /&gt;
 GETREG/de&lt;br /&gt;
 GETSOCKET/de&lt;br /&gt;
 GETTCPREGS/de&lt;br /&gt;
 GLCDCMD/de&lt;br /&gt;
 GLCDDATA/de&lt;br /&gt;
 Übersetzt GOSUB/de&lt;br /&gt;
 Übersetzt GOTO/de&lt;br /&gt;
 GRAY2BIN/de&lt;br /&gt;
 &lt;br /&gt;
 HEX/de&lt;br /&gt;
 HEXVAL/de&lt;br /&gt;
 HIGH/de&lt;br /&gt;
 HIGHW/de&lt;br /&gt;
 HOME/de&lt;br /&gt;
 &lt;br /&gt;
 I2CINIT/de&lt;br /&gt;
 I2CRBYTE/de&lt;br /&gt;
 I2CRECEIVE/de&lt;br /&gt;
 I2CREPSTART/de&lt;br /&gt;
 I2CSEND/de&lt;br /&gt;
 I2CSTART/de&lt;br /&gt;
 I2CSTOP/de&lt;br /&gt;
 I2CWBYTE/de&lt;br /&gt;
 Übersetzt IDLE/de&lt;br /&gt;
 Übersetzt IF-THEN-ELSE-END IF/de&lt;br /&gt;
 INCR/de&lt;br /&gt;
 INITFILESYSTEM/de&lt;br /&gt;
 INITLCD/de&lt;br /&gt;
 INKEY/de&lt;br /&gt;
 INP/de&lt;br /&gt;
 INPUT/de&lt;br /&gt;
 INPUTBIN/de&lt;br /&gt;
 INPUTHEX/de&lt;br /&gt;
 INSERTCHAR/de&lt;br /&gt;
 INSTR/de&lt;br /&gt;
 INT/de&lt;br /&gt;
 IP2STR/de&lt;br /&gt;
 ISCHARWAITING/de&lt;br /&gt;
&lt;br /&gt;
 KILL/de&lt;br /&gt;
&lt;br /&gt;
 LCASE/de&lt;br /&gt;
 LCD/de&lt;br /&gt;
 LCDAT/de&lt;br /&gt;
 LCDAUTODIM/de&lt;br /&gt;
 LCDCMD/de&lt;br /&gt;
 LCDCONTRAST/de&lt;br /&gt;
 LCDDATA/de&lt;br /&gt;
 LEFT/de&lt;br /&gt;
 LEN/de&lt;br /&gt;
 LINE/de&lt;br /&gt;
 LINEINPUT/de&lt;br /&gt;
 LINE INPUT/de&lt;br /&gt;
 LOAD/de&lt;br /&gt;
 LOADADR/de&lt;br /&gt;
 LOADLABEL/de&lt;br /&gt;
 LOADWORDADR/de&lt;br /&gt;
 LOC/de&lt;br /&gt;
 LOCAL/de&lt;br /&gt;
 LOCATE/de&lt;br /&gt;
 LOF/de&lt;br /&gt;
 LOG/de&lt;br /&gt;
 LOG10/de&lt;br /&gt;
 LOOKDOWN/de&lt;br /&gt;
 LOOKUP/de&lt;br /&gt;
 LOOKUPSTR/de&lt;br /&gt;
 LOW/de&lt;br /&gt;
 LOWERLINE/de&lt;br /&gt;
 LTRIM/de&lt;br /&gt;
&lt;br /&gt;
 Übersetzt MACRO/de&lt;br /&gt;
 MAKEBCD/de&lt;br /&gt;
 MAKEDEC/de&lt;br /&gt;
 MAKEINT/de&lt;br /&gt;
 MAKEMODBUS/de&lt;br /&gt;
 MAKETCP/de&lt;br /&gt;
 MAX/de&lt;br /&gt;
 MEMCOPY/de&lt;br /&gt;
 MID/de&lt;br /&gt;
 MIN/de&lt;br /&gt;
 MKDIR/de&lt;br /&gt;
 MOD/de&lt;br /&gt;
&lt;br /&gt;
 NBITS/de&lt;br /&gt;
 &lt;br /&gt;
 ON INTERRUPT/de&lt;br /&gt;
 ON VALUE/de&lt;br /&gt;
 OPEN/de&lt;br /&gt;
 OUT/de&lt;br /&gt;
&lt;br /&gt;
 PEEK/de&lt;br /&gt;
 POKE/de&lt;br /&gt;
 POPALL/de&lt;br /&gt;
 POWER/de&lt;br /&gt;
 POWERDOWN/de&lt;br /&gt;
 POWERSAVE/de&lt;br /&gt;
 POWER MODE/de&lt;br /&gt;
 PRINT/de&lt;br /&gt;
 PRINTBIN/de&lt;br /&gt;
 PS2MOUSEXY/de&lt;br /&gt;
 PSET/de&lt;br /&gt;
 PULSEIN/de&lt;br /&gt;
 PULSEOUT/de&lt;br /&gt;
 PUSHALL/de&lt;br /&gt;
 PUT/de&lt;br /&gt;
&lt;br /&gt;
 QUOTE/de&lt;br /&gt;
 &lt;br /&gt;
 RAD2DEG/de&lt;br /&gt;
 RC5SEND/de&lt;br /&gt;
 RC5SENDEXT/de&lt;br /&gt;
 RC6SEND/de&lt;br /&gt;
 READ/de&lt;br /&gt;
 READEEPROM/de&lt;br /&gt;
 READHITAG/de&lt;br /&gt;
 READMAGCARD/de&lt;br /&gt;
 READSIG/de&lt;br /&gt;
 Übersetzt REM/de&lt;br /&gt;
 REPLACECHARS/de&lt;br /&gt;
 RESET/de&lt;br /&gt;
 RESTORE/de&lt;br /&gt;
 RETURN/de&lt;br /&gt;
 RIGHT/de&lt;br /&gt;
 RMDIR/de&lt;br /&gt;
 RND/de&lt;br /&gt;
 ROTATE/de&lt;br /&gt;
 ROUND/de&lt;br /&gt;
 RTRIM/de&lt;br /&gt;
 &lt;br /&gt;
 SECELAPSED/de&lt;br /&gt;
 SECOFDAY/de&lt;br /&gt;
 SEEK/de&lt;br /&gt;
 SELECT-CASE-END SELECT/de&lt;br /&gt;
 SENDSCAN/de&lt;br /&gt;
 SENDSCANKBD/de&lt;br /&gt;
 SERIN/de&lt;br /&gt;
 SEROUT/de&lt;br /&gt;
 SET/de&lt;br /&gt;
 SETFONT/de&lt;br /&gt;
 SETIPPROTOCOL/de&lt;br /&gt;
 SETREG/de&lt;br /&gt;
 SETTCP/de&lt;br /&gt;
 SETTCPREGS/de&lt;br /&gt;
 SGN/de&lt;br /&gt;
 SHIFT/de&lt;br /&gt;
 SHIFTCURSOR/de&lt;br /&gt;
 SHIFTIN/de&lt;br /&gt;
 SHIFTLCD/de&lt;br /&gt;
 SHIFTOUT/de&lt;br /&gt;
 SHOWPIC/de&lt;br /&gt;
 SHOWPICE/de&lt;br /&gt;
 SIN/de&lt;br /&gt;
 SINH/de&lt;br /&gt;
 SNTP/de&lt;br /&gt;
 SOCKETCLOSE/de&lt;br /&gt;
 SOCKETCONNECT/de&lt;br /&gt;
 SOCKETDISCONNECT/de&lt;br /&gt;
 SOCKETLISTEN/de&lt;br /&gt;
 SOCKETSTAT/de&lt;br /&gt;
 SONYSEND/de&lt;br /&gt;
 SORT/de&lt;br /&gt;
 SOUND/de&lt;br /&gt;
 SPACE/de&lt;br /&gt;
 SPC/de&lt;br /&gt;
 SPIIN/de&lt;br /&gt;
 SPIINIT/de&lt;br /&gt;
 SPIMOVE/de&lt;br /&gt;
 SPIOUT/de&lt;br /&gt;
 SPLIT/de&lt;br /&gt;
 SQR/de&lt;br /&gt;
 Übersetzt START/de&lt;br /&gt;
 STCHECK/de&lt;br /&gt;
 Übersetzt STOP/de&lt;br /&gt;
 STR/de&lt;br /&gt;
 STR2DIGITS/de&lt;br /&gt;
 STRING/de&lt;br /&gt;
 Übersetzt SUB/de&lt;br /&gt;
 SWAP/de&lt;br /&gt;
 SYSDAY/de&lt;br /&gt;
 SYSSEC/de&lt;br /&gt;
 SYSSECELAPSED/de&lt;br /&gt;
 &lt;br /&gt;
 TAN/de&lt;br /&gt;
 TANH/de&lt;br /&gt;
 TCPCHECKSUM/de&lt;br /&gt;
 TCPREAD/de&lt;br /&gt;
 TCPREADHEADER/de&lt;br /&gt;
 TCPWRITE/de&lt;br /&gt;
 TCPWRITESTR/de&lt;br /&gt;
 THIRDLINE/de&lt;br /&gt;
 TIME$/de&lt;br /&gt;
 TIME/de&lt;br /&gt;
 Übersetzt TOGGLE/de&lt;br /&gt;
 TRIM/de&lt;br /&gt;
 &lt;br /&gt;
 UCASE/de&lt;br /&gt;
 UDPREAD/de&lt;br /&gt;
 UDPREADHEADER/de&lt;br /&gt;
 UDPWRITE/de&lt;br /&gt;
 UDPWRITESTR/de&lt;br /&gt;
 UPPERLINE/de&lt;br /&gt;
 VAL/de&lt;br /&gt;
 VARPTR/de&lt;br /&gt;
 VER/de&lt;br /&gt;
 VERSION/de&lt;br /&gt;
 &lt;br /&gt;
 Übersetzt WAIT/de&lt;br /&gt;
 WAITKEY/de&lt;br /&gt;
 Übersetzt WAITMS/de&lt;br /&gt;
 Übersetzt WAITUS/de&lt;br /&gt;
 Übersetzt WHILE-WEND/de&lt;br /&gt;
 WRITE/de&lt;br /&gt;
 WRITEEEPROM/de&lt;br /&gt;
&lt;br /&gt;
 X10DETECT/de&lt;br /&gt;
 X10SEND/de&lt;br /&gt;
 XTEADECODE/de&lt;br /&gt;
 XTEAENCODE/de&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T20:19:01Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Nachteile des 1-wire-Busses */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übersicht&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und der benötigte Strom muß auch irgendwie bereitgestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS empfiehlt einen anderen Ansatz, genannt &amp;quot;Strong Pullup&amp;quot;, welcher (kurz) mit einem MOS-FET arbeitet. Der versorgt die Datenleitung mit genug Strom während Operationen mit höherem Bedarf. Das ist nicht getestet, aber es sollte natürlich funktionieren. Eine wirkliche Einschränkung gibt es: Bascom unterstützt diese Variante nicht. Das wird hier erwähnt, damit Sie sich nicht wundern. &amp;quot;Strong Pullup&amp;quot; braucht einen extra Mikrocontroller-Pin um den MOS-FET anzusteuern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Kabellänge&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Bereich ist nur zum Verständnis der Begrenzungen.&lt;br /&gt;
&lt;br /&gt;
Für kurze Leitungen bis 30 Meter ist die Auswahl des Kabels unkritisch. Selbst flache Telefonkabel arbeiten mit einer begrenzten Zahl von 1-Wire-Slaves. Wie auch immer, je länger der 1-wire-Bus, umso mehr unerwünschte Effekte gibt es und und die richtige Auswahl des Kabels bekommt eine größere Bedeutung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für längere Distanzen empfiehlt DS Twisted-Pair-Kabel (paarweise verdrillte Adern - z.B. CAT5)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das DS Standard-Beispiel spricht von 100 Metern Kabellänge, es ist also kein Problem. Sie zeigen auch Beispiele mit 300 Metern und ich meine, ich habe sowas gesehen mit 600m-Bus, kann es aber gerade nicht finden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Störungen und CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Je länger das Kabel und rauher die Umgebung, desto mehr fehlerhafte Bits werden erzeugt. Die Bauteile sind mit einem CRC-Generator ausgestattet, das letzte Byte der Sendung ist immer die Prüfsumme. In den Programmbeispielen kann man lernen, wie die Checksumme vom Mikrocontroller berechnet wird. Wenn man merkt, daß viele falsche Bits gelesen werden, sollte man die Kabel verbessern. ( Abschirmung, geringerer Widerstand)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übertragungsgeschwindigkeit&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Beim original 1-Wire-Bus spricht DS von einer Geschwindigkeit von 14 Kilobits / Sekunde. Wem das nicht genug ist: Manche Bauteile haben eine Overdrive-Option. Das verzehnfacht die Geschwindigkeit. Das passiert, indem die Time-Slots kleiner gemacht werden (von 60µs auf 6µs), was natürlich die Übertragung störanfälliger macht. Auch CRC-Fehler werden wahrscheinlich häufiger auftreten. Wenn es da keine Probleme gibt, sind 140kb/s erreichbar. Das ist SCHNELL.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Bascom-Suchroutine findet etwa 50 Geräte pro Sekunde am Bus, Adressieren und lesen einzelner Sensoren geht mit etwa 13 Geräten pro Sekunde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topologie&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Über das 1-wire-Netz kann hier nicht viel erzählt werden. Stern? Bus? Es scheint so, als ob man das mixen kann. Ein Bus-Netz ist nicht so empfindlich. (Anmerkung des Übersetzers: AN148 von Dallas/Maxim beschreibt das Thema ausführlich)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Vorteile des 1-Wire- Busses &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Jeder Teilnehmer ist einzigartig und man kann über 2 Leitungen kommunizieren. Dennoch kann man jeden Teilnehmer individuell adressieren, wenn man möchte. Es gibt 2^48 einzigartige Identifikationsnummern. Einfach ausprobieren..&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Natürlich, wenn viele Kabel unerwünscht sind, dann ist das ein großer Vorteil. Und hier wird nur 1 Prozessorpin gebraucht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS liefert die verschiedensten Typen 1-Wire-Bauteile, und alle sind für den direkten Anschluss an einen Mikroprozessor gemacht. Keine extra Hardware. Es gibt Sensoren für Inputs aus der realen Welt und Potentiometer und Relais, mit denen man direkt etwas  bewirken kann. Alles auf dem selben Bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und auch der IButten von DS (schon mal gehört?) basiert auf der 1-Wire-Technologie. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM verbindet den Mikrocontroller mit 1-wire-Slaves so einfach, daß (ab sofort) das auch als Vorteil zählt - vielleicht sogar als einer der Größten.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T20:18:14Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Vorteile des 1-Wire- Busses  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übersicht&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und der benötigte Strom muß auch irgendwie bereitgestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS empfiehlt einen anderen Ansatz, genannt &amp;quot;Strong Pullup&amp;quot;, welcher (kurz) mit einem MOS-FET arbeitet. Der versorgt die Datenleitung mit genug Strom während Operationen mit höherem Bedarf. Das ist nicht getestet, aber es sollte natürlich funktionieren. Eine wirkliche Einschränkung gibt es: Bascom unterstützt diese Variante nicht. Das wird hier erwähnt, damit Sie sich nicht wundern. &amp;quot;Strong Pullup&amp;quot; braucht einen extra Mikrocontroller-Pin um den MOS-FET anzusteuern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Kabellänge&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Bereich ist nur zum Verständnis der Begrenzungen.&lt;br /&gt;
&lt;br /&gt;
Für kurze Leitungen bis 30 Meter ist die Auswahl des Kabels unkritisch. Selbst flache Telefonkabel arbeiten mit einer begrenzten Zahl von 1-Wire-Slaves. Wie auch immer, je länger der 1-wire-Bus, umso mehr unerwünschte Effekte gibt es und und die richtige Auswahl des Kabels bekommt eine größere Bedeutung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für längere Distanzen empfiehlt DS Twisted-Pair-Kabel (paarweise verdrillte Adern - z.B. CAT5)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das DS Standard-Beispiel spricht von 100 Metern Kabellänge, es ist also kein Problem. Sie zeigen auch Beispiele mit 300 Metern und ich meine, ich habe sowas gesehen mit 600m-Bus, kann es aber gerade nicht finden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Störungen und CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Je länger das Kabel und rauher die Umgebung, desto mehr fehlerhafte Bits werden erzeugt. Die Bauteile sind mit einem CRC-Generator ausgestattet, das letzte Byte der Sendung ist immer die Prüfsumme. In den Programmbeispielen kann man lernen, wie die Checksumme vom Mikrocontroller berechnet wird. Wenn man merkt, daß viele falsche Bits gelesen werden, sollte man die Kabel verbessern. ( Abschirmung, geringerer Widerstand)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übertragungsgeschwindigkeit&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Beim original 1-Wire-Bus spricht DS von einer Geschwindigkeit von 14 Kilobits / Sekunde. Wem das nicht genug ist: Manche Bauteile haben eine Overdrive-Option. Das verzehnfacht die Geschwindigkeit. Das passiert, indem die Time-Slots kleiner gemacht werden (von 60µs auf 6µs), was natürlich die Übertragung störanfälliger macht. Auch CRC-Fehler werden wahrscheinlich häufiger auftreten. Wenn es da keine Probleme gibt, sind 140kb/s erreichbar. Das ist SCHNELL.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Bascom-Suchroutine findet etwa 50 Geräte pro Sekunde am Bus, Adressieren und lesen einzelner Sensoren geht mit etwa 13 Geräten pro Sekunde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topologie&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Über das 1-wire-Netz kann hier nicht viel erzählt werden. Stern? Bus? Es scheint so, als ob man das mixen kann. Ein Bus-Netz ist nicht so empfindlich. (Anmerkung des Übersetzers: AN148 von Dallas/Maxim beschreibt das Thema ausführlich)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Vorteile des 1-Wire- Busses &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Jeder Teilnehmer ist einzigartig und man kann über 2 Leitungen kommunizieren. Dennoch kann man jeden Teilnehmer individuell adressieren, wenn man möchte. Es gibt 2^48 einzigartige Identifikationsnummern. Einfach ausprobieren..&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Natürlich, wenn viele Kabel unerwünscht sind, dann ist das ein großer Vorteil. Und hier wird nur 1 Prozessorpin gebraucht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS liefert die verschiedensten Typen 1-Wire-Bauteile, und alle sind für den direkten Anschluss an einen Mikroprozessor gemacht. Keine extra Hardware. Es gibt Sensoren für Inputs aus der realen Welt und Potentiometer und Relais, mit denen man direkt etwas  bewirken kann. Alles auf dem selben Bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und auch der IButten von DS (schon mal gehört?) basiert auf der 1-Wire-Technologie. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM verbindet den Mikrocontroller mit 1-wire-Slaves so einfach, daß (ab sofort) das auch als Vorteil zählt - vielleicht sogar als einer der Größten.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T20:17:07Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Topologie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übersicht&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und der benötigte Strom muß auch irgendwie bereitgestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS empfiehlt einen anderen Ansatz, genannt &amp;quot;Strong Pullup&amp;quot;, welcher (kurz) mit einem MOS-FET arbeitet. Der versorgt die Datenleitung mit genug Strom während Operationen mit höherem Bedarf. Das ist nicht getestet, aber es sollte natürlich funktionieren. Eine wirkliche Einschränkung gibt es: Bascom unterstützt diese Variante nicht. Das wird hier erwähnt, damit Sie sich nicht wundern. &amp;quot;Strong Pullup&amp;quot; braucht einen extra Mikrocontroller-Pin um den MOS-FET anzusteuern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Kabellänge&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Bereich ist nur zum Verständnis der Begrenzungen.&lt;br /&gt;
&lt;br /&gt;
Für kurze Leitungen bis 30 Meter ist die Auswahl des Kabels unkritisch. Selbst flache Telefonkabel arbeiten mit einer begrenzten Zahl von 1-Wire-Slaves. Wie auch immer, je länger der 1-wire-Bus, umso mehr unerwünschte Effekte gibt es und und die richtige Auswahl des Kabels bekommt eine größere Bedeutung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für längere Distanzen empfiehlt DS Twisted-Pair-Kabel (paarweise verdrillte Adern - z.B. CAT5)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das DS Standard-Beispiel spricht von 100 Metern Kabellänge, es ist also kein Problem. Sie zeigen auch Beispiele mit 300 Metern und ich meine, ich habe sowas gesehen mit 600m-Bus, kann es aber gerade nicht finden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Störungen und CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Je länger das Kabel und rauher die Umgebung, desto mehr fehlerhafte Bits werden erzeugt. Die Bauteile sind mit einem CRC-Generator ausgestattet, das letzte Byte der Sendung ist immer die Prüfsumme. In den Programmbeispielen kann man lernen, wie die Checksumme vom Mikrocontroller berechnet wird. Wenn man merkt, daß viele falsche Bits gelesen werden, sollte man die Kabel verbessern. ( Abschirmung, geringerer Widerstand)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übertragungsgeschwindigkeit&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Beim original 1-Wire-Bus spricht DS von einer Geschwindigkeit von 14 Kilobits / Sekunde. Wem das nicht genug ist: Manche Bauteile haben eine Overdrive-Option. Das verzehnfacht die Geschwindigkeit. Das passiert, indem die Time-Slots kleiner gemacht werden (von 60µs auf 6µs), was natürlich die Übertragung störanfälliger macht. Auch CRC-Fehler werden wahrscheinlich häufiger auftreten. Wenn es da keine Probleme gibt, sind 140kb/s erreichbar. Das ist SCHNELL.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Bascom-Suchroutine findet etwa 50 Geräte pro Sekunde am Bus, Adressieren und lesen einzelner Sensoren geht mit etwa 13 Geräten pro Sekunde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topologie&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Über das 1-wire-Netz kann hier nicht viel erzählt werden. Stern? Bus? Es scheint so, als ob man das mixen kann. Ein Bus-Netz ist nicht so empfindlich. (Anmerkung des Übersetzers: AN148 von Dallas/Maxim beschreibt das Thema ausführlich)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Vorteile des 1-Wire- Busses &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Jeder Teilnehmer ist einzigartig und man kann über 2 Leitungen kommunizieren. Dennoch kann man jeden Teilnehmer individuell adressieren, wenn man möchte. Es gibt 2^48 einzigartige Identifikationsnummern. Einfach ausprobieren..&lt;br /&gt;
&amp;lt;br&amp;gt;Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Natürlich, wenn viele Kabel unerwünscht sind, dann ist das ein großer Vorteil. Und hier wird nur 1 Prozessorpin gebraucht.&lt;br /&gt;
&amp;lt;br&amp;gt;Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS liefert die verschiedensten Typen 1-Wire-Bauteile, und alle sind für den direkten Anschluss an einen Mikroprozessor gemacht. Keine extra Hardware. Es gibt Sensoren für Inputs aus der realen Welt und Potentiometer und Relais, mit denen man direkt etwas  bewirken kann. Alles auf dem selben Bus.&lt;br /&gt;
&amp;lt;br&amp;gt;DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und auch der IButten von DS (schon mal gehört?) basiert auf der 1-Wire-Technologie. &lt;br /&gt;
&amp;lt;br&amp;gt;And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM verbindet den Mikrocontroller mit 1-wire-Slaves so einfach, daß (ab sofort) das auch als Vorteil zählt - vielleicht sogar als einer der Größten.&amp;amp;nbsp;;-)&lt;br /&gt;
&amp;lt;br&amp;gt;BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T20:16:38Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Übertragungsgeschwindigkeit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übersicht&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und der benötigte Strom muß auch irgendwie bereitgestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS empfiehlt einen anderen Ansatz, genannt &amp;quot;Strong Pullup&amp;quot;, welcher (kurz) mit einem MOS-FET arbeitet. Der versorgt die Datenleitung mit genug Strom während Operationen mit höherem Bedarf. Das ist nicht getestet, aber es sollte natürlich funktionieren. Eine wirkliche Einschränkung gibt es: Bascom unterstützt diese Variante nicht. Das wird hier erwähnt, damit Sie sich nicht wundern. &amp;quot;Strong Pullup&amp;quot; braucht einen extra Mikrocontroller-Pin um den MOS-FET anzusteuern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Kabellänge&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Bereich ist nur zum Verständnis der Begrenzungen.&lt;br /&gt;
&lt;br /&gt;
Für kurze Leitungen bis 30 Meter ist die Auswahl des Kabels unkritisch. Selbst flache Telefonkabel arbeiten mit einer begrenzten Zahl von 1-Wire-Slaves. Wie auch immer, je länger der 1-wire-Bus, umso mehr unerwünschte Effekte gibt es und und die richtige Auswahl des Kabels bekommt eine größere Bedeutung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für längere Distanzen empfiehlt DS Twisted-Pair-Kabel (paarweise verdrillte Adern - z.B. CAT5)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das DS Standard-Beispiel spricht von 100 Metern Kabellänge, es ist also kein Problem. Sie zeigen auch Beispiele mit 300 Metern und ich meine, ich habe sowas gesehen mit 600m-Bus, kann es aber gerade nicht finden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Störungen und CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Je länger das Kabel und rauher die Umgebung, desto mehr fehlerhafte Bits werden erzeugt. Die Bauteile sind mit einem CRC-Generator ausgestattet, das letzte Byte der Sendung ist immer die Prüfsumme. In den Programmbeispielen kann man lernen, wie die Checksumme vom Mikrocontroller berechnet wird. Wenn man merkt, daß viele falsche Bits gelesen werden, sollte man die Kabel verbessern. ( Abschirmung, geringerer Widerstand)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übertragungsgeschwindigkeit&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Beim original 1-Wire-Bus spricht DS von einer Geschwindigkeit von 14 Kilobits / Sekunde. Wem das nicht genug ist: Manche Bauteile haben eine Overdrive-Option. Das verzehnfacht die Geschwindigkeit. Das passiert, indem die Time-Slots kleiner gemacht werden (von 60µs auf 6µs), was natürlich die Übertragung störanfälliger macht. Auch CRC-Fehler werden wahrscheinlich häufiger auftreten. Wenn es da keine Probleme gibt, sind 140kb/s erreichbar. Das ist SCHNELL.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Bascom-Suchroutine findet etwa 50 Geräte pro Sekunde am Bus, Adressieren und lesen einzelner Sensoren geht mit etwa 13 Geräten pro Sekunde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topologie&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Über das 1-wire-Netz kann hier nicht viel erzählt werden. Stern? Bus? Es scheint so, als ob man das mixen kann. Ein Bus-Netz ist nicht so empfindlich. (Anmerkung des Übersetzers: AN148 von Dallas/Maxim beschreibt das Thema ausführlich)&lt;br /&gt;
&amp;lt;br&amp;gt;Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Vorteile des 1-Wire- Busses &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Jeder Teilnehmer ist einzigartig und man kann über 2 Leitungen kommunizieren. Dennoch kann man jeden Teilnehmer individuell adressieren, wenn man möchte. Es gibt 2^48 einzigartige Identifikationsnummern. Einfach ausprobieren..&lt;br /&gt;
&amp;lt;br&amp;gt;Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Natürlich, wenn viele Kabel unerwünscht sind, dann ist das ein großer Vorteil. Und hier wird nur 1 Prozessorpin gebraucht.&lt;br /&gt;
&amp;lt;br&amp;gt;Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS liefert die verschiedensten Typen 1-Wire-Bauteile, und alle sind für den direkten Anschluss an einen Mikroprozessor gemacht. Keine extra Hardware. Es gibt Sensoren für Inputs aus der realen Welt und Potentiometer und Relais, mit denen man direkt etwas  bewirken kann. Alles auf dem selben Bus.&lt;br /&gt;
&amp;lt;br&amp;gt;DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und auch der IButten von DS (schon mal gehört?) basiert auf der 1-Wire-Technologie. &lt;br /&gt;
&amp;lt;br&amp;gt;And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM verbindet den Mikrocontroller mit 1-wire-Slaves so einfach, daß (ab sofort) das auch als Vorteil zählt - vielleicht sogar als einer der Größten.&amp;amp;nbsp;;-)&lt;br /&gt;
&amp;lt;br&amp;gt;BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T20:16:00Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Störungen und CRC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übersicht&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und der benötigte Strom muß auch irgendwie bereitgestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS empfiehlt einen anderen Ansatz, genannt &amp;quot;Strong Pullup&amp;quot;, welcher (kurz) mit einem MOS-FET arbeitet. Der versorgt die Datenleitung mit genug Strom während Operationen mit höherem Bedarf. Das ist nicht getestet, aber es sollte natürlich funktionieren. Eine wirkliche Einschränkung gibt es: Bascom unterstützt diese Variante nicht. Das wird hier erwähnt, damit Sie sich nicht wundern. &amp;quot;Strong Pullup&amp;quot; braucht einen extra Mikrocontroller-Pin um den MOS-FET anzusteuern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Kabellänge&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Bereich ist nur zum Verständnis der Begrenzungen.&lt;br /&gt;
&lt;br /&gt;
Für kurze Leitungen bis 30 Meter ist die Auswahl des Kabels unkritisch. Selbst flache Telefonkabel arbeiten mit einer begrenzten Zahl von 1-Wire-Slaves. Wie auch immer, je länger der 1-wire-Bus, umso mehr unerwünschte Effekte gibt es und und die richtige Auswahl des Kabels bekommt eine größere Bedeutung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für längere Distanzen empfiehlt DS Twisted-Pair-Kabel (paarweise verdrillte Adern - z.B. CAT5)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das DS Standard-Beispiel spricht von 100 Metern Kabellänge, es ist also kein Problem. Sie zeigen auch Beispiele mit 300 Metern und ich meine, ich habe sowas gesehen mit 600m-Bus, kann es aber gerade nicht finden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Störungen und CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Je länger das Kabel und rauher die Umgebung, desto mehr fehlerhafte Bits werden erzeugt. Die Bauteile sind mit einem CRC-Generator ausgestattet, das letzte Byte der Sendung ist immer die Prüfsumme. In den Programmbeispielen kann man lernen, wie die Checksumme vom Mikrocontroller berechnet wird. Wenn man merkt, daß viele falsche Bits gelesen werden, sollte man die Kabel verbessern. ( Abschirmung, geringerer Widerstand)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übertragungsgeschwindigkeit&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Beim original 1-Wire-Bus spricht DS von einer Geschwindigkeit von 14 Kilobits / Sekunde. Wem das nicht genug ist: Manche Bauteile haben eine Overdrive-Option. Das verzehnfacht die Geschwindigkeit. Das passiert, indem die Time-Slots kleiner gemacht werden (von 60µs auf 6µs), was natürlich die Übertragung störanfälliger macht. Auch CRC-Fehler werden wahrscheinlich häufiger auftreten. Wenn es da keine Probleme gibt, sind 140kb/s erreichbar. Das ist SCHNELL.&lt;br /&gt;
&amp;lt;br&amp;gt;On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Bascom-Suchroutine findet etwa 50 Geräte pro Sekunde am Bus, Adressieren und lesen einzelner Sensoren geht mit etwa 13 Geräten pro Sekunde&lt;br /&gt;
&amp;lt;br&amp;gt;The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topologie&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Über das 1-wire-Netz kann hier nicht viel erzählt werden. Stern? Bus? Es scheint so, als ob man das mixen kann. Ein Bus-Netz ist nicht so empfindlich. (Anmerkung des Übersetzers: AN148 von Dallas/Maxim beschreibt das Thema ausführlich)&lt;br /&gt;
&amp;lt;br&amp;gt;Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Vorteile des 1-Wire- Busses &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Jeder Teilnehmer ist einzigartig und man kann über 2 Leitungen kommunizieren. Dennoch kann man jeden Teilnehmer individuell adressieren, wenn man möchte. Es gibt 2^48 einzigartige Identifikationsnummern. Einfach ausprobieren..&lt;br /&gt;
&amp;lt;br&amp;gt;Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Natürlich, wenn viele Kabel unerwünscht sind, dann ist das ein großer Vorteil. Und hier wird nur 1 Prozessorpin gebraucht.&lt;br /&gt;
&amp;lt;br&amp;gt;Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS liefert die verschiedensten Typen 1-Wire-Bauteile, und alle sind für den direkten Anschluss an einen Mikroprozessor gemacht. Keine extra Hardware. Es gibt Sensoren für Inputs aus der realen Welt und Potentiometer und Relais, mit denen man direkt etwas  bewirken kann. Alles auf dem selben Bus.&lt;br /&gt;
&amp;lt;br&amp;gt;DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und auch der IButten von DS (schon mal gehört?) basiert auf der 1-Wire-Technologie. &lt;br /&gt;
&amp;lt;br&amp;gt;And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM verbindet den Mikrocontroller mit 1-wire-Slaves so einfach, daß (ab sofort) das auch als Vorteil zählt - vielleicht sogar als einer der Größten.&amp;amp;nbsp;;-)&lt;br /&gt;
&amp;lt;br&amp;gt;BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T20:15:23Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Kabellänge */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übersicht&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und der benötigte Strom muß auch irgendwie bereitgestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS empfiehlt einen anderen Ansatz, genannt &amp;quot;Strong Pullup&amp;quot;, welcher (kurz) mit einem MOS-FET arbeitet. Der versorgt die Datenleitung mit genug Strom während Operationen mit höherem Bedarf. Das ist nicht getestet, aber es sollte natürlich funktionieren. Eine wirkliche Einschränkung gibt es: Bascom unterstützt diese Variante nicht. Das wird hier erwähnt, damit Sie sich nicht wundern. &amp;quot;Strong Pullup&amp;quot; braucht einen extra Mikrocontroller-Pin um den MOS-FET anzusteuern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Kabellänge&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Bereich ist nur zum Verständnis der Begrenzungen.&lt;br /&gt;
&lt;br /&gt;
Für kurze Leitungen bis 30 Meter ist die Auswahl des Kabels unkritisch. Selbst flache Telefonkabel arbeiten mit einer begrenzten Zahl von 1-Wire-Slaves. Wie auch immer, je länger der 1-wire-Bus, umso mehr unerwünschte Effekte gibt es und und die richtige Auswahl des Kabels bekommt eine größere Bedeutung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für längere Distanzen empfiehlt DS Twisted-Pair-Kabel (paarweise verdrillte Adern - z.B. CAT5)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das DS Standard-Beispiel spricht von 100 Metern Kabellänge, es ist also kein Problem. Sie zeigen auch Beispiele mit 300 Metern und ich meine, ich habe sowas gesehen mit 600m-Bus, kann es aber gerade nicht finden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Störungen und CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Je länger das Kabel und rauher die Umgebung, desto mehr fehlerhafte Bits werden erzeugt. Die Bauteile sind mit einem CRC-Generator ausgestattet, das letzte Byte der Sendung ist immer die Prüfsumme. In den Programmbeispielen kann man lernen, wie die Checksumme vom Mikrocontroller berechnet wird. Wenn man merkt, daß viele falsche Bits gelesen werden, sollte man die Kabel verbessern. ( Abschirmen, geringerer Widerstand)&lt;br /&gt;
&amp;lt;br&amp;gt;The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übertragungsgeschwindigkeit&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Beim original 1-Wire-Bus spricht DS von einer Geschwindigkeit von 14 Kilobits / Sekunde. Wem das nicht genug ist: Manche Bauteile haben eine Overdrive-Option. Das verzehnfacht die Geschwindigkeit. Das passiert, indem die Time-Slots kleiner gemacht werden (von 60µs auf 6µs), was natürlich die Übertragung störanfälliger macht. Auch CRC-Fehler werden wahrscheinlich häufiger auftreten. Wenn es da keine Probleme gibt, sind 140kb/s erreichbar. Das ist SCHNELL.&lt;br /&gt;
&amp;lt;br&amp;gt;On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Bascom-Suchroutine findet etwa 50 Geräte pro Sekunde am Bus, Adressieren und lesen einzelner Sensoren geht mit etwa 13 Geräten pro Sekunde&lt;br /&gt;
&amp;lt;br&amp;gt;The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topologie&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Über das 1-wire-Netz kann hier nicht viel erzählt werden. Stern? Bus? Es scheint so, als ob man das mixen kann. Ein Bus-Netz ist nicht so empfindlich. (Anmerkung des Übersetzers: AN148 von Dallas/Maxim beschreibt das Thema ausführlich)&lt;br /&gt;
&amp;lt;br&amp;gt;Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Vorteile des 1-Wire- Busses &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Jeder Teilnehmer ist einzigartig und man kann über 2 Leitungen kommunizieren. Dennoch kann man jeden Teilnehmer individuell adressieren, wenn man möchte. Es gibt 2^48 einzigartige Identifikationsnummern. Einfach ausprobieren..&lt;br /&gt;
&amp;lt;br&amp;gt;Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Natürlich, wenn viele Kabel unerwünscht sind, dann ist das ein großer Vorteil. Und hier wird nur 1 Prozessorpin gebraucht.&lt;br /&gt;
&amp;lt;br&amp;gt;Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS liefert die verschiedensten Typen 1-Wire-Bauteile, und alle sind für den direkten Anschluss an einen Mikroprozessor gemacht. Keine extra Hardware. Es gibt Sensoren für Inputs aus der realen Welt und Potentiometer und Relais, mit denen man direkt etwas  bewirken kann. Alles auf dem selben Bus.&lt;br /&gt;
&amp;lt;br&amp;gt;DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und auch der IButten von DS (schon mal gehört?) basiert auf der 1-Wire-Technologie. &lt;br /&gt;
&amp;lt;br&amp;gt;And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM verbindet den Mikrocontroller mit 1-wire-Slaves so einfach, daß (ab sofort) das auch als Vorteil zählt - vielleicht sogar als einer der Größten.&amp;amp;nbsp;;-)&lt;br /&gt;
&amp;lt;br&amp;gt;BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T20:14:15Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Wie arbeitet man mit dem 1-wire-bus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übersicht&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und der benötigte Strom muß auch irgendwie bereitgestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS empfiehlt einen anderen Ansatz, genannt &amp;quot;Strong Pullup&amp;quot;, welcher (kurz) mit einem MOS-FET arbeitet. Der versorgt die Datenleitung mit genug Strom während Operationen mit höherem Bedarf. Das ist nicht getestet, aber es sollte natürlich funktionieren. Eine wirkliche Einschränkung gibt es: Bascom unterstützt diese Variante nicht. Das wird hier erwähnt, damit Sie sich nicht wundern. &amp;quot;Strong Pullup&amp;quot; braucht einen extra Mikrocontroller-Pin um den MOS-FET anzusteuern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Kabellänge&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Bereich ist nur zum Verständnis der Begrenzungen.&lt;br /&gt;
&lt;br /&gt;
Für kurze Leitungen bis 30 Meter ist die Auswahl des Kabels unkritisch. Selbst flache Telefonkabel arbeiten mit einer begrenzten Zahl von 1-Wire-Slaves. Wie auch immer, je länger der 1-wire-Bus, umso mehr unerwünschte Effekte gibt es und und die richtige Auswahl des Kabels bekommt eine größere Bedeutung.&lt;br /&gt;
&amp;lt;br&amp;gt;(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für längere Distanzen empfiehlt DS Twisted-Pair-Kabel (paarweise verdrillte Adern - z.B. CAT5)&lt;br /&gt;
&amp;lt;br&amp;gt;For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS DS Standard-Beispiel spricht von 100 Metern Kabellänge, es ist also kein Problem. Sie zeigen auch Beispiele mit 300 Metern und ich meine, ich habe sowas gesehen mit 600m-Bus, kann es aber gerade nicht finden.&lt;br /&gt;
&amp;lt;br&amp;gt;DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Störungen und CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Je länger das Kabel und rauher die Umgebung, desto mehr fehlerhafte Bits werden erzeugt. Die Bauteile sind mit einem CRC-Generator ausgestattet, das letzte Byte der Sendung ist immer die Prüfsumme. In den Programmbeispielen kann man lernen, wie die Checksumme vom Mikrocontroller berechnet wird. Wenn man merkt, daß viele falsche Bits gelesen werden, sollte man die Kabel verbessern. ( Abschirmen, geringerer Widerstand)&lt;br /&gt;
&amp;lt;br&amp;gt;The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übertragungsgeschwindigkeit&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Beim original 1-Wire-Bus spricht DS von einer Geschwindigkeit von 14 Kilobits / Sekunde. Wem das nicht genug ist: Manche Bauteile haben eine Overdrive-Option. Das verzehnfacht die Geschwindigkeit. Das passiert, indem die Time-Slots kleiner gemacht werden (von 60µs auf 6µs), was natürlich die Übertragung störanfälliger macht. Auch CRC-Fehler werden wahrscheinlich häufiger auftreten. Wenn es da keine Probleme gibt, sind 140kb/s erreichbar. Das ist SCHNELL.&lt;br /&gt;
&amp;lt;br&amp;gt;On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Bascom-Suchroutine findet etwa 50 Geräte pro Sekunde am Bus, Adressieren und lesen einzelner Sensoren geht mit etwa 13 Geräten pro Sekunde&lt;br /&gt;
&amp;lt;br&amp;gt;The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topologie&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Über das 1-wire-Netz kann hier nicht viel erzählt werden. Stern? Bus? Es scheint so, als ob man das mixen kann. Ein Bus-Netz ist nicht so empfindlich. (Anmerkung des Übersetzers: AN148 von Dallas/Maxim beschreibt das Thema ausführlich)&lt;br /&gt;
&amp;lt;br&amp;gt;Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Vorteile des 1-Wire- Busses &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Jeder Teilnehmer ist einzigartig und man kann über 2 Leitungen kommunizieren. Dennoch kann man jeden Teilnehmer individuell adressieren, wenn man möchte. Es gibt 2^48 einzigartige Identifikationsnummern. Einfach ausprobieren..&lt;br /&gt;
&amp;lt;br&amp;gt;Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Natürlich, wenn viele Kabel unerwünscht sind, dann ist das ein großer Vorteil. Und hier wird nur 1 Prozessorpin gebraucht.&lt;br /&gt;
&amp;lt;br&amp;gt;Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS liefert die verschiedensten Typen 1-Wire-Bauteile, und alle sind für den direkten Anschluss an einen Mikroprozessor gemacht. Keine extra Hardware. Es gibt Sensoren für Inputs aus der realen Welt und Potentiometer und Relais, mit denen man direkt etwas  bewirken kann. Alles auf dem selben Bus.&lt;br /&gt;
&amp;lt;br&amp;gt;DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und auch der IButten von DS (schon mal gehört?) basiert auf der 1-Wire-Technologie. &lt;br /&gt;
&amp;lt;br&amp;gt;And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM verbindet den Mikrocontroller mit 1-wire-Slaves so einfach, daß (ab sofort) das auch als Vorteil zählt - vielleicht sogar als einer der Größten.&amp;amp;nbsp;;-)&lt;br /&gt;
&amp;lt;br&amp;gt;BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T20:09:33Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Übersicht */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übersicht&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und diese Energie muß auch irgendwie bereitgestellt werden&lt;br /&gt;
&amp;lt;br&amp;gt;And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&amp;lt;br&amp;gt;Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&amp;lt;br&amp;gt;Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&amp;lt;br&amp;gt;With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&amp;lt;br&amp;gt;With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.&lt;br /&gt;
&amp;lt;br&amp;gt;The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS empfiehlt einen anderen Ansatz, genannt &amp;quot;Strong Pullup&amp;quot;, welcher (kurz) mit einem MOS-FET arbeitet. Der versorgt die Datenleitung mit genug Strom während Operationen mit höherem Bedarf. Das ist nicht getestet, aber es sollte natürlich funktionieren. Eine wirkliche Einschränkung gibt es: Bascom unterstützt diese Variante nicht. Das wird hier erwähnt, damit Sie sich nicht wundern. &amp;quot;Strong Pullup&amp;quot; braucht einen extra Mikrocontroller-Pin um den MOS-FET anzusteuern.&lt;br /&gt;
&amp;lt;br&amp;gt;DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Kabellänge&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Bereich ist nur zum Verständnis der Begrenzungen.&lt;br /&gt;
&lt;br /&gt;
Für kurze Leitungen bis 30 Meter ist die Auswahl des Kabels unkritisch. Selbst flache Telefonkabel arbeiten mit einer begrenzten Zahl von 1-Wire-Slaves. Wie auch immer, je länger der 1-wire-Bus, umso mehr unerwünschte Effekte gibt es und und die richtige Auswahl des Kabels bekommt eine größere Bedeutung.&lt;br /&gt;
&amp;lt;br&amp;gt;(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für längere Distanzen empfiehlt DS Twisted-Pair-Kabel (paarweise verdrillte Adern - z.B. CAT5)&lt;br /&gt;
&amp;lt;br&amp;gt;For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS DS Standard-Beispiel spricht von 100 Metern Kabellänge, es ist also kein Problem. Sie zeigen auch Beispiele mit 300 Metern und ich meine, ich habe sowas gesehen mit 600m-Bus, kann es aber gerade nicht finden.&lt;br /&gt;
&amp;lt;br&amp;gt;DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Störungen und CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Je länger das Kabel und rauher die Umgebung, desto mehr fehlerhafte Bits werden erzeugt. Die Bauteile sind mit einem CRC-Generator ausgestattet, das letzte Byte der Sendung ist immer die Prüfsumme. In den Programmbeispielen kann man lernen, wie die Checksumme vom Mikrocontroller berechnet wird. Wenn man merkt, daß viele falsche Bits gelesen werden, sollte man die Kabel verbessern. ( Abschirmen, geringerer Widerstand)&lt;br /&gt;
&amp;lt;br&amp;gt;The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übertragungsgeschwindigkeit&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Beim original 1-Wire-Bus spricht DS von einer Geschwindigkeit von 14 Kilobits / Sekunde. Wem das nicht genug ist: Manche Bauteile haben eine Overdrive-Option. Das verzehnfacht die Geschwindigkeit. Das passiert, indem die Time-Slots kleiner gemacht werden (von 60µs auf 6µs), was natürlich die Übertragung störanfälliger macht. Auch CRC-Fehler werden wahrscheinlich häufiger auftreten. Wenn es da keine Probleme gibt, sind 140kb/s erreichbar. Das ist SCHNELL.&lt;br /&gt;
&amp;lt;br&amp;gt;On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Bascom-Suchroutine findet etwa 50 Geräte pro Sekunde am Bus, Adressieren und lesen einzelner Sensoren geht mit etwa 13 Geräten pro Sekunde&lt;br /&gt;
&amp;lt;br&amp;gt;The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topologie&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Über das 1-wire-Netz kann hier nicht viel erzählt werden. Stern? Bus? Es scheint so, als ob man das mixen kann. Ein Bus-Netz ist nicht so empfindlich. (Anmerkung des Übersetzers: AN148 von Dallas/Maxim beschreibt das Thema ausführlich)&lt;br /&gt;
&amp;lt;br&amp;gt;Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Vorteile des 1-Wire- Busses &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Jeder Teilnehmer ist einzigartig und man kann über 2 Leitungen kommunizieren. Dennoch kann man jeden Teilnehmer individuell adressieren, wenn man möchte. Es gibt 2^48 einzigartige Identifikationsnummern. Einfach ausprobieren..&lt;br /&gt;
&amp;lt;br&amp;gt;Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Natürlich, wenn viele Kabel unerwünscht sind, dann ist das ein großer Vorteil. Und hier wird nur 1 Prozessorpin gebraucht.&lt;br /&gt;
&amp;lt;br&amp;gt;Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS liefert die verschiedensten Typen 1-Wire-Bauteile, und alle sind für den direkten Anschluss an einen Mikroprozessor gemacht. Keine extra Hardware. Es gibt Sensoren für Inputs aus der realen Welt und Potentiometer und Relais, mit denen man direkt etwas  bewirken kann. Alles auf dem selben Bus.&lt;br /&gt;
&amp;lt;br&amp;gt;DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und auch der IButten von DS (schon mal gehört?) basiert auf der 1-Wire-Technologie. &lt;br /&gt;
&amp;lt;br&amp;gt;And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM verbindet den Mikrocontroller mit 1-wire-Slaves so einfach, daß (ab sofort) das auch als Vorteil zählt - vielleicht sogar als einer der Größten.&amp;amp;nbsp;;-)&lt;br /&gt;
&amp;lt;br&amp;gt;BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T20:07:48Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Übersicht */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übersicht&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und diese Energie muß auch irgendwie bereitgestellt werden&lt;br /&gt;
&amp;lt;br&amp;gt;And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&amp;lt;br&amp;gt;Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&amp;lt;br&amp;gt;Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&amp;lt;br&amp;gt;With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&amp;lt;br&amp;gt;With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.&lt;br /&gt;
&amp;lt;br&amp;gt;The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS empfiehlt einen anderen Ansatz, genannt &amp;quot;Strong Pullup&amp;quot;, welcher (kurz) mit einem MOS-FET arbeitet. Der versorgt die Datenleitung mit genug Strom während Operationen mit höherem Bedarf. Das ist nicht getestet, aber es sollte natürlich funktionieren. Eine wirkliche Einschränkung gibt es: Bascom unterstützt diese Variante nicht. Das wird hier erwähnt, damit Sie sich nicht wundern. &amp;quot;Strong Pullup&amp;quot; braucht einen extra Mikrocontroller-Pin um den MOS-FET anzusteuern.&lt;br /&gt;
&amp;lt;br&amp;gt;DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Kabellänge&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Bereich ist nur zum Verständnis der Begrenzungen.&lt;br /&gt;
&lt;br /&gt;
Für kurze Leitungen bis 30 Meter ist die Auswahl des Kabels unkritisch. Selbst flache Telefonkabel arbeiten mit einer begrenzten Zahl von 1-Wire-Slaves. Wie auch immer, je länger der 1-wire-Bus, umso mehr unerwünschte Effekte gibt es und und die richtige Auswahl des Kabels bekommt eine größere Bedeutung.&lt;br /&gt;
&amp;lt;br&amp;gt;(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für längere Distanzen empfiehlt DS Twisted-Pair-Kabel (paarweise verdrillte Adern - z.B. CAT5)&lt;br /&gt;
&amp;lt;br&amp;gt;For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS DS Standard-Beispiel spricht von 100 Metern Kabellänge, es ist also kein Problem. Sie zeigen auch Beispiele mit 300 Metern und ich meine, ich habe sowas gesehen mit 600m-Bus, kann es aber gerade nicht finden.&lt;br /&gt;
&amp;lt;br&amp;gt;DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Störungen und CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Je länger das Kabel und rauher die Umgebung, desto mehr fehlerhafte Bits werden erzeugt. Die Bauteile sind mit einem CRC-Generator ausgestattet, das letzte Byte der Sendung ist immer die Prüfsumme. In den Programmbeispielen kann man lernen, wie die Checksumme vom Mikrocontroller berechnet wird. Wenn man merkt, daß viele falsche Bits gelesen werden, sollte man die Kabel verbessern. ( Abschirmen, geringerer Widerstand)&lt;br /&gt;
&amp;lt;br&amp;gt;The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übertragungsgeschwindigkeit&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Beim original 1-Wire-Bus spricht DS von einer Geschwindigkeit von 14 Kilobits / Sekunde. Wem das nicht genug ist: Manche Bauteile haben eine Overdrive-Option. Das verzehnfacht die Geschwindigkeit. Das passiert, indem die Time-Slots kleiner gemacht werden (von 60µs auf 6µs), was natürlich die Übertragung störanfälliger macht. Auch CRC-Fehler werden wahrscheinlich häufiger auftreten. Wenn es da keine Probleme gibt, sind 140kb/s erreichbar. Das ist SCHNELL.&lt;br /&gt;
&amp;lt;br&amp;gt;On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Bascom-Suchroutine findet etwa 50 Geräte pro Sekunde am Bus, Adressieren und lesen einzelner Sensoren geht mit etwa 13 Geräten pro Sekunde&lt;br /&gt;
&amp;lt;br&amp;gt;The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topologie&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Über das 1-wire-Netz kann hier nicht viel erzählt werden. Stern? Bus? Es scheint so, als ob man das mixen kann. Ein Bus-Netz ist nicht so empfindlich. (Anmerkung des Übersetzers: AN148 von Dallas/Maxim beschreibt das Thema ausführlich)&lt;br /&gt;
&amp;lt;br&amp;gt;Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Vorteile des 1-Wire- Busses &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Jeder Teilnehmer ist einzigartig und man kann über 2 Leitungen kommunizieren. Dennoch kann man jeden Teilnehmer individuell adressieren, wenn man möchte. Es gibt 2^48 einzigartige Identifikationsnummern. Einfach ausprobieren..&lt;br /&gt;
&amp;lt;br&amp;gt;Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Natürlich, wenn viele Kabel unerwünscht sind, dann ist das ein großer Vorteil. Und hier wird nur 1 Prozessorpin gebraucht.&lt;br /&gt;
&amp;lt;br&amp;gt;Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS liefert die verschiedensten Typen 1-Wire-Bauteile, und alle sind für den direkten Anschluss an einen Mikroprozessor gemacht. Keine extra Hardware. Es gibt Sensoren für Inputs aus der realen Welt und Potentiometer und Relais, mit denen man direkt etwas  bewirken kann. Alles auf dem selben Bus.&lt;br /&gt;
&amp;lt;br&amp;gt;DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und auch der IButten von DS (schon mal gehört?) basiert auf der 1-Wire-Technologie. &lt;br /&gt;
&amp;lt;br&amp;gt;And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM verbindet den Mikrocontroller mit 1-wire-Slaves so einfach, daß (ab sofort) das auch als Vorteil zählt - vielleicht sogar als einer der Größten.&amp;amp;nbsp;;-)&lt;br /&gt;
&amp;lt;br&amp;gt;BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T20:06:25Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Vorteile von 1-Wire  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und diese Energie muß auch irgendwie bereitgestellt werden&lt;br /&gt;
&amp;lt;br&amp;gt;And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&amp;lt;br&amp;gt;Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&amp;lt;br&amp;gt;Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&amp;lt;br&amp;gt;With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&amp;lt;br&amp;gt;With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.&lt;br /&gt;
&amp;lt;br&amp;gt;The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS empfiehlt einen anderen Ansatz, genannt &amp;quot;Strong Pullup&amp;quot;, welcher (kurz) mit einem MOS-FET arbeitet. Der versorgt die Datenleitung mit genug Strom während Operationen mit höherem Bedarf. Das ist nicht getestet, aber es sollte natürlich funktionieren. Eine wirkliche Einschränkung gibt es: Bascom unterstützt diese Variante nicht. Das wird hier erwähnt, damit Sie sich nicht wundern. &amp;quot;Strong Pullup&amp;quot; braucht einen extra Mikrocontroller-Pin um den MOS-FET anzusteuern.&lt;br /&gt;
&amp;lt;br&amp;gt;DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Kabellänge&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Bereich ist nur zum Verständnis der Begrenzungen.&lt;br /&gt;
&lt;br /&gt;
Für kurze Leitungen bis 30 Meter ist die Auswahl des Kabels unkritisch. Selbst flache Telefonkabel arbeiten mit einer begrenzten Zahl von 1-Wire-Slaves. Wie auch immer, je länger der 1-wire-Bus, umso mehr unerwünschte Effekte gibt es und und die richtige Auswahl des Kabels bekommt eine größere Bedeutung.&lt;br /&gt;
&amp;lt;br&amp;gt;(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für längere Distanzen empfiehlt DS Twisted-Pair-Kabel (paarweise verdrillte Adern - z.B. CAT5)&lt;br /&gt;
&amp;lt;br&amp;gt;For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS DS Standard-Beispiel spricht von 100 Metern Kabellänge, es ist also kein Problem. Sie zeigen auch Beispiele mit 300 Metern und ich meine, ich habe sowas gesehen mit 600m-Bus, kann es aber gerade nicht finden.&lt;br /&gt;
&amp;lt;br&amp;gt;DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Störungen und CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Je länger das Kabel und rauher die Umgebung, desto mehr fehlerhafte Bits werden erzeugt. Die Bauteile sind mit einem CRC-Generator ausgestattet, das letzte Byte der Sendung ist immer die Prüfsumme. In den Programmbeispielen kann man lernen, wie die Checksumme vom Mikrocontroller berechnet wird. Wenn man merkt, daß viele falsche Bits gelesen werden, sollte man die Kabel verbessern. ( Abschirmen, geringerer Widerstand)&lt;br /&gt;
&amp;lt;br&amp;gt;The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übertragungsgeschwindigkeit&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Beim original 1-Wire-Bus spricht DS von einer Geschwindigkeit von 14 Kilobits / Sekunde. Wem das nicht genug ist: Manche Bauteile haben eine Overdrive-Option. Das verzehnfacht die Geschwindigkeit. Das passiert, indem die Time-Slots kleiner gemacht werden (von 60µs auf 6µs), was natürlich die Übertragung störanfälliger macht. Auch CRC-Fehler werden wahrscheinlich häufiger auftreten. Wenn es da keine Probleme gibt, sind 140kb/s erreichbar. Das ist SCHNELL.&lt;br /&gt;
&amp;lt;br&amp;gt;On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Bascom-Suchroutine findet etwa 50 Geräte pro Sekunde am Bus, Adressieren und lesen einzelner Sensoren geht mit etwa 13 Geräten pro Sekunde&lt;br /&gt;
&amp;lt;br&amp;gt;The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topologie&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Über das 1-wire-Netz kann hier nicht viel erzählt werden. Stern? Bus? Es scheint so, als ob man das mixen kann. Ein Bus-Netz ist nicht so empfindlich. (Anmerkung des Übersetzers: AN148 von Dallas/Maxim beschreibt das Thema ausführlich)&lt;br /&gt;
&amp;lt;br&amp;gt;Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Vorteile des 1-Wire- Busses &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Jeder Teilnehmer ist einzigartig und man kann über 2 Leitungen kommunizieren. Dennoch kann man jeden Teilnehmer individuell adressieren, wenn man möchte. Es gibt 2^48 einzigartige Identifikationsnummern. Einfach ausprobieren..&lt;br /&gt;
&amp;lt;br&amp;gt;Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Natürlich, wenn viele Kabel unerwünscht sind, dann ist das ein großer Vorteil. Und hier wird nur 1 Prozessorpin gebraucht.&lt;br /&gt;
&amp;lt;br&amp;gt;Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS liefert die verschiedensten Typen 1-Wire-Bauteile, und alle sind für den direkten Anschluss an einen Mikroprozessor gemacht. Keine extra Hardware. Es gibt Sensoren für Inputs aus der realen Welt und Potentiometer und Relais, mit denen man direkt etwas  bewirken kann. Alles auf dem selben Bus.&lt;br /&gt;
&amp;lt;br&amp;gt;DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und auch der IButten von DS (schon mal gehört?) basiert auf der 1-Wire-Technologie. &lt;br /&gt;
&amp;lt;br&amp;gt;And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM verbindet den Mikrocontroller mit 1-wire-Slaves so einfach, daß (ab sofort) das auch als Vorteil zählt - vielleicht sogar als einer der Größten.&amp;amp;nbsp;;-)&lt;br /&gt;
&amp;lt;br&amp;gt;BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T20:05:35Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* The benefit of the 1-wire bus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und diese Energie muß auch irgendwie bereitgestellt werden&lt;br /&gt;
&amp;lt;br&amp;gt;And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&amp;lt;br&amp;gt;Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&amp;lt;br&amp;gt;Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&amp;lt;br&amp;gt;With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&amp;lt;br&amp;gt;With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.&lt;br /&gt;
&amp;lt;br&amp;gt;The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS empfiehlt einen anderen Ansatz, genannt &amp;quot;Strong Pullup&amp;quot;, welcher (kurz) mit einem MOS-FET arbeitet. Der versorgt die Datenleitung mit genug Strom während Operationen mit höherem Bedarf. Das ist nicht getestet, aber es sollte natürlich funktionieren. Eine wirkliche Einschränkung gibt es: Bascom unterstützt diese Variante nicht. Das wird hier erwähnt, damit Sie sich nicht wundern. &amp;quot;Strong Pullup&amp;quot; braucht einen extra Mikrocontroller-Pin um den MOS-FET anzusteuern.&lt;br /&gt;
&amp;lt;br&amp;gt;DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Kabellänge&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Bereich ist nur zum Verständnis der Begrenzungen.&lt;br /&gt;
&lt;br /&gt;
Für kurze Leitungen bis 30 Meter ist die Auswahl des Kabels unkritisch. Selbst flache Telefonkabel arbeiten mit einer begrenzten Zahl von 1-Wire-Slaves. Wie auch immer, je länger der 1-wire-Bus, umso mehr unerwünschte Effekte gibt es und und die richtige Auswahl des Kabels bekommt eine größere Bedeutung.&lt;br /&gt;
&amp;lt;br&amp;gt;(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für längere Distanzen empfiehlt DS Twisted-Pair-Kabel (paarweise verdrillte Adern - z.B. CAT5)&lt;br /&gt;
&amp;lt;br&amp;gt;For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS DS Standard-Beispiel spricht von 100 Metern Kabellänge, es ist also kein Problem. Sie zeigen auch Beispiele mit 300 Metern und ich meine, ich habe sowas gesehen mit 600m-Bus, kann es aber gerade nicht finden.&lt;br /&gt;
&amp;lt;br&amp;gt;DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Störungen und CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Je länger das Kabel und rauher die Umgebung, desto mehr fehlerhafte Bits werden erzeugt. Die Bauteile sind mit einem CRC-Generator ausgestattet, das letzte Byte der Sendung ist immer die Prüfsumme. In den Programmbeispielen kann man lernen, wie die Checksumme vom Mikrocontroller berechnet wird. Wenn man merkt, daß viele falsche Bits gelesen werden, sollte man die Kabel verbessern. ( Abschirmen, geringerer Widerstand)&lt;br /&gt;
&amp;lt;br&amp;gt;The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übertragungsgeschwindigkeit&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Beim original 1-Wire-Bus spricht DS von einer Geschwindigkeit von 14 Kilobits / Sekunde. Wem das nicht genug ist: Manche Bauteile haben eine Overdrive-Option. Das verzehnfacht die Geschwindigkeit. Das passiert, indem die Time-Slots kleiner gemacht werden (von 60µs auf 6µs), was natürlich die Übertragung störanfälliger macht. Auch CRC-Fehler werden wahrscheinlich häufiger auftreten. Wenn es da keine Probleme gibt, sind 140kb/s erreichbar. Das ist SCHNELL.&lt;br /&gt;
&amp;lt;br&amp;gt;On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Bascom-Suchroutine findet etwa 50 Geräte pro Sekunde am Bus, Adressieren und lesen einzelner Sensoren geht mit etwa 13 Geräten pro Sekunde&lt;br /&gt;
&amp;lt;br&amp;gt;The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topologie&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Über das 1-wire-Netz kann hier nicht viel erzählt werden. Stern? Bus? Es scheint so, als ob man das mixen kann. Ein Bus-Netz ist nicht so empfindlich. (Anmerkung des Übersetzers: AN148 von Dallas/Maxim beschreibt das Thema ausführlich)&lt;br /&gt;
&amp;lt;br&amp;gt;Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Vorteile von 1-Wire &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Jeder Teilnehmer ist einzigartig und man kann über 2 Leitungen kommunizieren. Dennoch kann man jeden Teilnehmer individuell adressieren, wenn man möchte. Es gibt 2^48 einzigartige Identifikationsnummern. Einfach ausprobieren..&lt;br /&gt;
&amp;lt;br&amp;gt;Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Natürlich, wenn viele Kabel unerwünscht sind, dann ist das ein großer Vorteil. Und hier wird nur 1 Prozessorpin gebraucht.&lt;br /&gt;
&amp;lt;br&amp;gt;Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS liefert die verschiedensten Typen 1-Wire-Bauteile, und alle sind für den direkten Anschluss an einen Mikroprozessor gemacht. Keine extra Hardware. Es gibt Sensoren für Inputs aus der realen Welt und Potentiometer und Relais, mit denen man direkt etwas  bewirken kann. Alles auf dem selben Bus.&lt;br /&gt;
&amp;lt;br&amp;gt;DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und auch der IButten von DS (schon mal gehört?) basiert auf der 1-Wire-Technologie. &lt;br /&gt;
&amp;lt;br&amp;gt;And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM verbindet den Mikrocontroller mit 1-wire-Slaves so einfach, daß (ab sofort) das auch als Vorteil zählt - vielleicht sogar als einer der Größten.&amp;amp;nbsp;;-)&lt;br /&gt;
&amp;lt;br&amp;gt;BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T19:39:57Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Topology */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und diese Energie muß auch irgendwie bereitgestellt werden&lt;br /&gt;
&amp;lt;br&amp;gt;And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&amp;lt;br&amp;gt;Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&amp;lt;br&amp;gt;Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&amp;lt;br&amp;gt;With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&amp;lt;br&amp;gt;With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.&lt;br /&gt;
&amp;lt;br&amp;gt;The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS empfiehlt einen anderen Ansatz, genannt &amp;quot;Strong Pullup&amp;quot;, welcher (kurz) mit einem MOS-FET arbeitet. Der versorgt die Datenleitung mit genug Strom während Operationen mit höherem Bedarf. Das ist nicht getestet, aber es sollte natürlich funktionieren. Eine wirkliche Einschränkung gibt es: Bascom unterstützt diese Variante nicht. Das wird hier erwähnt, damit Sie sich nicht wundern. &amp;quot;Strong Pullup&amp;quot; braucht einen extra Mikrocontroller-Pin um den MOS-FET anzusteuern.&lt;br /&gt;
&amp;lt;br&amp;gt;DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Kabellänge&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Bereich ist nur zum Verständnis der Begrenzungen.&lt;br /&gt;
&lt;br /&gt;
Für kurze Leitungen bis 30 Meter ist die Auswahl des Kabels unkritisch. Selbst flache Telefonkabel arbeiten mit einer begrenzten Zahl von 1-Wire-Slaves. Wie auch immer, je länger der 1-wire-Bus, umso mehr unerwünschte Effekte gibt es und und die richtige Auswahl des Kabels bekommt eine größere Bedeutung.&lt;br /&gt;
&amp;lt;br&amp;gt;(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für längere Distanzen empfiehlt DS Twisted-Pair-Kabel (paarweise verdrillte Adern - z.B. CAT5)&lt;br /&gt;
&amp;lt;br&amp;gt;For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS DS Standard-Beispiel spricht von 100 Metern Kabellänge, es ist also kein Problem. Sie zeigen auch Beispiele mit 300 Metern und ich meine, ich habe sowas gesehen mit 600m-Bus, kann es aber gerade nicht finden.&lt;br /&gt;
&amp;lt;br&amp;gt;DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Störungen und CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Je länger das Kabel und rauher die Umgebung, desto mehr fehlerhafte Bits werden erzeugt. Die Bauteile sind mit einem CRC-Generator ausgestattet, das letzte Byte der Sendung ist immer die Prüfsumme. In den Programmbeispielen kann man lernen, wie die Checksumme vom Mikrocontroller berechnet wird. Wenn man merkt, daß viele falsche Bits gelesen werden, sollte man die Kabel verbessern. ( Abschirmen, geringerer Widerstand)&lt;br /&gt;
&amp;lt;br&amp;gt;The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übertragungsgeschwindigkeit&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Beim original 1-Wire-Bus spricht DS von einer Geschwindigkeit von 14 Kilobits / Sekunde. Wem das nicht genug ist: Manche Bauteile haben eine Overdrive-Option. Das verzehnfacht die Geschwindigkeit. Das passiert, indem die Time-Slots kleiner gemacht werden (von 60µs auf 6µs), was natürlich die Übertragung störanfälliger macht. Auch CRC-Fehler werden wahrscheinlich häufiger auftreten. Wenn es da keine Probleme gibt, sind 140kb/s erreichbar. Das ist SCHNELL.&lt;br /&gt;
&amp;lt;br&amp;gt;On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Bascom-Suchroutine findet etwa 50 Geräte pro Sekunde am Bus, Adressieren und lesen einzelner Sensoren geht mit etwa 13 Geräten pro Sekunde&lt;br /&gt;
&amp;lt;br&amp;gt;The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topologie&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Über das 1-wire-Netz kann hier nicht viel erzählt werden. Stern? Bus? Es scheint so, als ob man das mixen kann. Ein Bus-Netz ist nicht so empfindlich. (Anmerkung des Übersetzers: AN148 von Dallas/Maxim beschreibt das Thema ausführlich)&lt;br /&gt;
&amp;lt;br&amp;gt;Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T16:27:19Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Transfer speed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und diese Energie muß auch irgendwie bereitgestellt werden&lt;br /&gt;
&amp;lt;br&amp;gt;And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&amp;lt;br&amp;gt;Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&amp;lt;br&amp;gt;Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&amp;lt;br&amp;gt;With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&amp;lt;br&amp;gt;With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.&lt;br /&gt;
&amp;lt;br&amp;gt;The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS empfiehlt einen anderen Ansatz, genannt &amp;quot;Strong Pullup&amp;quot;, welcher (kurz) mit einem MOS-FET arbeitet. Der versorgt die Datenleitung mit genug Strom während Operationen mit höherem Bedarf. Das ist nicht getestet, aber es sollte natürlich funktionieren. Eine wirkliche Einschränkung gibt es: Bascom unterstützt diese Variante nicht. Das wird hier erwähnt, damit Sie sich nicht wundern. &amp;quot;Strong Pullup&amp;quot; braucht einen extra Mikrocontroller-Pin um den MOS-FET anzusteuern.&lt;br /&gt;
&amp;lt;br&amp;gt;DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Kabellänge&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Bereich ist nur zum Verständnis der Begrenzungen.&lt;br /&gt;
&lt;br /&gt;
Für kurze Leitungen bis 30 Meter ist die Auswahl des Kabels unkritisch. Selbst flache Telefonkabel arbeiten mit einer begrenzten Zahl von 1-Wire-Slaves. Wie auch immer, je länger der 1-wire-Bus, umso mehr unerwünschte Effekte gibt es und und die richtige Auswahl des Kabels bekommt eine größere Bedeutung.&lt;br /&gt;
&amp;lt;br&amp;gt;(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für längere Distanzen empfiehlt DS Twisted-Pair-Kabel (paarweise verdrillte Adern - z.B. CAT5)&lt;br /&gt;
&amp;lt;br&amp;gt;For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS DS Standard-Beispiel spricht von 100 Metern Kabellänge, es ist also kein Problem. Sie zeigen auch Beispiele mit 300 Metern und ich meine, ich habe sowas gesehen mit 600m-Bus, kann es aber gerade nicht finden.&lt;br /&gt;
&amp;lt;br&amp;gt;DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Störungen und CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Je länger das Kabel und rauher die Umgebung, desto mehr fehlerhafte Bits werden erzeugt. Die Bauteile sind mit einem CRC-Generator ausgestattet, das letzte Byte der Sendung ist immer die Prüfsumme. In den Programmbeispielen kann man lernen, wie die Checksumme vom Mikrocontroller berechnet wird. Wenn man merkt, daß viele falsche Bits gelesen werden, sollte man die Kabel verbessern. ( Abschirmen, geringerer Widerstand)&lt;br /&gt;
&amp;lt;br&amp;gt;The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Übertragungsgeschwindigkeit&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Beim original 1-Wire-Bus spricht DS von einer Geschwindigkeit von 14 Kilobits / Sekunde. Wem das nicht genug ist: Manche Bauteile haben eine Overdrive-Option. Das verzehnfacht die Geschwindigkeit. Das passiert, indem die Time-Slots kleiner gemacht werden (von 60µs auf 6µs), was natürlich die Übertragung störanfälliger macht. Auch CRC-Fehler werden wahrscheinlich häufiger auftreten. Wenn es da keine Probleme gibt, sind 140kb/s erreichbar. Das ist SCHNELL.&lt;br /&gt;
&amp;lt;br&amp;gt;On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Bascom-Suchroutine findet etwa 50 Geräte pro Sekunde am Bus, Adressieren und lesen einzelner Sensoren geht mit etwa 13 Geräten pro Sekunde&lt;br /&gt;
&amp;lt;br&amp;gt;The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T16:14:31Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Noise and CRC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und diese Energie muß auch irgendwie bereitgestellt werden&lt;br /&gt;
&amp;lt;br&amp;gt;And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&amp;lt;br&amp;gt;Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&amp;lt;br&amp;gt;Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&amp;lt;br&amp;gt;With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&amp;lt;br&amp;gt;With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.&lt;br /&gt;
&amp;lt;br&amp;gt;The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS empfiehlt einen anderen Ansatz, genannt &amp;quot;Strong Pullup&amp;quot;, welcher (kurz) mit einem MOS-FET arbeitet. Der versorgt die Datenleitung mit genug Strom während Operationen mit höherem Bedarf. Das ist nicht getestet, aber es sollte natürlich funktionieren. Eine wirkliche Einschränkung gibt es: Bascom unterstützt diese Variante nicht. Das wird hier erwähnt, damit Sie sich nicht wundern. &amp;quot;Strong Pullup&amp;quot; braucht einen extra Mikrocontroller-Pin um den MOS-FET anzusteuern.&lt;br /&gt;
&amp;lt;br&amp;gt;DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Kabellänge&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Bereich ist nur zum Verständnis der Begrenzungen.&lt;br /&gt;
&lt;br /&gt;
Für kurze Leitungen bis 30 Meter ist die Auswahl des Kabels unkritisch. Selbst flache Telefonkabel arbeiten mit einer begrenzten Zahl von 1-Wire-Slaves. Wie auch immer, je länger der 1-wire-Bus, umso mehr unerwünschte Effekte gibt es und und die richtige Auswahl des Kabels bekommt eine größere Bedeutung.&lt;br /&gt;
&amp;lt;br&amp;gt;(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für längere Distanzen empfiehlt DS Twisted-Pair-Kabel (paarweise verdrillte Adern - z.B. CAT5)&lt;br /&gt;
&amp;lt;br&amp;gt;For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS DS Standard-Beispiel spricht von 100 Metern Kabellänge, es ist also kein Problem. Sie zeigen auch Beispiele mit 300 Metern und ich meine, ich habe sowas gesehen mit 600m-Bus, kann es aber gerade nicht finden.&lt;br /&gt;
&amp;lt;br&amp;gt;DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Störungen und CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Je länger das Kabel und rauher die Umgebung, desto mehr fehlerhafte Bits werden erzeugt. Die Bauteile sind mit einem CRC-Generator ausgestattet, das letzte Byte der Sendung ist immer die Prüfsumme. In den Programmbeispielen kann man lernen, wie die Checksumme vom Mikrocontroller berechnet wird. Wenn man merkt, daß viele falsche Bits gelesen werden, sollte man die Kabel verbessern. ( Abschirmen, geringerer Widerstand)&lt;br /&gt;
&amp;lt;br&amp;gt;The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T15:16:55Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Noise and CRC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und diese Energie muß auch irgendwie bereitgestellt werden&lt;br /&gt;
&amp;lt;br&amp;gt;And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&amp;lt;br&amp;gt;Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&amp;lt;br&amp;gt;Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&amp;lt;br&amp;gt;With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&amp;lt;br&amp;gt;With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.&lt;br /&gt;
&amp;lt;br&amp;gt;The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS empfiehlt einen anderen Ansatz, genannt &amp;quot;Strong Pullup&amp;quot;, welcher (kurz) mit einem MOS-FET arbeitet. Der versorgt die Datenleitung mit genug Strom während Operationen mit höherem Bedarf. Das ist nicht getestet, aber es sollte natürlich funktionieren. Eine wirkliche Einschränkung gibt es: Bascom unterstützt diese Variante nicht. Das wird hier erwähnt, damit Sie sich nicht wundern. &amp;quot;Strong Pullup&amp;quot; braucht einen extra Mikrocontroller-Pin um den MOS-FET anzusteuern.&lt;br /&gt;
&amp;lt;br&amp;gt;DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Kabellänge&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Bereich ist nur zum Verständnis der Begrenzungen.&lt;br /&gt;
&lt;br /&gt;
Für kurze Leitungen bis 30 Meter ist die Auswahl des Kabels unkritisch. Selbst flache Telefonkabel arbeiten mit einer begrenzten Zahl von 1-Wire-Slaves. Wie auch immer, je länger der 1-wire-Bus, umso mehr unerwünschte Effekte gibt es und und die richtige Auswahl des Kabels bekommt eine größere Bedeutung.&lt;br /&gt;
&amp;lt;br&amp;gt;(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für längere Distanzen empfiehlt DS Twisted-Pair-Kabel (paarweise verdrillte Adern - z.B. CAT5)&lt;br /&gt;
&amp;lt;br&amp;gt;For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS DS Standard-Beispiel spricht von 100 Metern Kabellänge, es ist also kein Problem. Sie zeigen auch Beispiele mit 300 Metern und ich meine, ich habe sowas gesehen mit 600m-Bus, kann es aber gerade nicht finden.&lt;br /&gt;
&amp;lt;br&amp;gt;DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Je länger das Kabel und rauher die Umgebung, desto mehr fehlerhafte Bits werden erzeugt. Die Bauteile sind mit einem CRC-Generator ausgestattet, das letzte Byte der Sendung ist immer die Prüfsumme. In den Programmbeispielen kann man lernen, wie die Checksumme vom Mikrocontroller berechnet wird. Wenn man merkt, daß viele falsche Bits gelesen werden, sollte man die Kabel verbessern. ( Abschirmen, geringerer Widerstand)&lt;br /&gt;
&amp;lt;br&amp;gt;The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T15:11:52Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Cable lengths */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und diese Energie muß auch irgendwie bereitgestellt werden&lt;br /&gt;
&amp;lt;br&amp;gt;And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&amp;lt;br&amp;gt;Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&amp;lt;br&amp;gt;Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&amp;lt;br&amp;gt;With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&amp;lt;br&amp;gt;With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.&lt;br /&gt;
&amp;lt;br&amp;gt;The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS empfiehlt einen anderen Ansatz, genannt &amp;quot;Strong Pullup&amp;quot;, welcher (kurz) mit einem MOS-FET arbeitet. Der versorgt die Datenleitung mit genug Strom während Operationen mit höherem Bedarf. Das ist nicht getestet, aber es sollte natürlich funktionieren. Eine wirkliche Einschränkung gibt es: Bascom unterstützt diese Variante nicht. Das wird hier erwähnt, damit Sie sich nicht wundern. &amp;quot;Strong Pullup&amp;quot; braucht einen extra Mikrocontroller-Pin um den MOS-FET anzusteuern.&lt;br /&gt;
&amp;lt;br&amp;gt;DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Kabellänge&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dieser Bereich ist nur zum Verständnis der Begrenzungen.&lt;br /&gt;
&lt;br /&gt;
Für kurze Leitungen bis 30 Meter ist die Auswahl des Kabels unkritisch. Selbst flache Telefonkabel arbeiten mit einer begrenzten Zahl von 1-Wire-Slaves. Wie auch immer, je länger der 1-wire-Bus, umso mehr unerwünschte Effekte gibt es und und die richtige Auswahl des Kabels bekommt eine größere Bedeutung.&lt;br /&gt;
&amp;lt;br&amp;gt;(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für längere Distanzen empfiehlt DS Twisted-Pair-Kabel (paarweise verdrillte Adern - z.B. CAT5)&lt;br /&gt;
&amp;lt;br&amp;gt;For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS DS Standard-Beispiel spricht von 100 Metern Kabellänge, es ist also kein Problem. Sie zeigen auch Beispiele mit 300 Metern und ich meine, ich habe sowas gesehen mit 600m-Bus, kann es aber gerade nicht finden.&lt;br /&gt;
&amp;lt;br&amp;gt;DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T13:30:35Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Wie arbeitet man mit dem 1-wire-bus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und diese Energie muß auch irgendwie bereitgestellt werden&lt;br /&gt;
&amp;lt;br&amp;gt;And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&amp;lt;br&amp;gt;Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&amp;lt;br&amp;gt;Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&amp;lt;br&amp;gt;With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&amp;lt;br&amp;gt;With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.&lt;br /&gt;
&amp;lt;br&amp;gt;The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS empfiehlt einen anderen Ansatz, genannt &amp;quot;Strong Pullup&amp;quot;, welcher (kurz) mit einem MOS-FET arbeitet. Der versorgt die Datenleitung mit genug Strom während Operationen mit höherem Bedarf. Das ist nicht getestet, aber es sollte natürlich funktionieren. Eine wirkliche Einschränkung gibt es: Bascom unterstützt diese Variante nicht. Das wird hier erwähnt, damit Sie sich nicht wundern. &amp;quot;Strong Pullup&amp;quot; braucht einen extra Mikrocontroller-Pin um den MOS-FET anzusteuern.&lt;br /&gt;
&amp;lt;br&amp;gt;DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Cable lengths&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T13:23:34Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Wie arbeitet man mit dem 1-wire-bus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und diese Energie muß auch irgendwie bereitgestellt werden&lt;br /&gt;
&amp;lt;br&amp;gt;And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbrauch bei speziellen Kommandos).&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&amp;lt;br&amp;gt;Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&amp;lt;br&amp;gt;Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&amp;lt;br&amp;gt;With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&amp;lt;br&amp;gt;With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstand, 4k7, könnte auch kleiner sein. DS sagt mindestens 1k5, ich habe es bis herunter zu 500 Ohm getestet, darunter ist der Bus nicht mehr nutzbar (AVR). Ein geringerer Widerstand braucht mehr Energie - und macht den Bus unempfindlicher gegen Störungen. Aber das Widerstands-Minimum ist abhängig von den elektrischen Eigenschaften des Mikrocontroller-Pins. Bei 4k7 sollte man bleiben, das ist die Standard-Empfehlung.&lt;br /&gt;
&amp;lt;br&amp;gt;The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Cable lengths&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T13:16:08Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Wie arbeitet man mit dem 1-wire-bus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und diese Energie muß auch irgendwie bereitgestellt werden&lt;br /&gt;
&amp;lt;br&amp;gt;And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbracuh bei speziellen Kommandos).&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Leitungs-Reflexionen &lt;br /&gt;
&amp;lt;br&amp;gt;Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur den Prozessor-Pin als Stromversorgung funktioniert mit weniger als 5 Sensoren. (AVR, Nutzung der 1-wire Funktionen, interner Pullup. 8051 nicht getestet). An gleichzeitige Kommandos an mehrere Sensoren ist nicht zu denken.&lt;br /&gt;
&amp;lt;br&amp;gt;Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit +5V durch einen 4k7-Pullup-Widerstand an der DQ-Leitung funktioniert es mit 70 Sensoren. Aber Vorsicht, für den Fall der gleichzeitigen Temperatur-Konvertierung gibt es hier falsche Ergebnisse. Bei ungefähr 15 Sensoren ist hier das Maximum für die gleichzeitige Ausführung. Diese Erklärung gibt DS auf die Verwendung mit Pullup-Widerstand.&lt;br /&gt;
&amp;lt;br&amp;gt;With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Art wurde ein Bus mit 70 Bauteilen erfolgreich versorgt.&lt;br /&gt;
&amp;lt;br&amp;gt;With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Cable lengths&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T13:02:44Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Wie arbeitet man mit dem 1-wire-bus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und diese Energie muß auch irgendwie bereitgestellt werden&lt;br /&gt;
&amp;lt;br&amp;gt;And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei 1-wire müssen ein paar Sachen beachtete werden. Z.B. darf nicht mehr Energie verbraucht werden, als bereitgestellt wird. Wie das geht? Das ist abhängig vom Bauteil (dessen Verbrauch) und was man damit machen will (der Verbracuh bei speziellen Kommandos).&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz, ungenaue Beschreibung des Strombedarfs, keine Reflexionen &lt;br /&gt;
&amp;lt;br&amp;gt;Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Cable lengths&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T12:40:49Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Wie arbeitet man mit dem 1-wire-bus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und diese Energie muß auch irgendwie bereitgestellt werden&lt;br /&gt;
&amp;lt;br&amp;gt;And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommando ist das mit dem größtem Energiebedarf, gerade wenn es an mehrere Sensoren gesendet wird, das sollte klar sein.&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Cable lengths&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T12:26:03Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Wie arbeitet man mit dem 1-wire-bus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Und diese Energie muß auch irgendwie bereitgestellt werden&lt;br /&gt;
&amp;lt;br&amp;gt;And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
Bei der Verwendung von 2-wire kann dieser Teil übersprungen werden. Man kann allen Teilnehmer gleichzeitig das Kommando &amp;quot;Temperatur konvertieren&amp;quot; übermitteln. Das spart Zeit. Dieses Kommansu ist das mit dem größtem Energiebedarf, mö&lt;br /&gt;
&amp;lt;br&amp;gt;If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Cable lengths&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T12:18:37Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Wie arbeitet man mit dem 1-wire-bus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der 2-wire-Version kommt die Versorgung von einer separaten Quelle. Das kann dieselbe sein, die den Mikroprozessor versorgt. Die Versorgung aus einem Prozessorpin hat bei mir nicht funktioniert.&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manche 1-Wire Bausteine brauchen mehr Strom während bestimmter  Operationen.. Die DS1820 z.B. brauchen eine Menge beim Konvertieren der Temperatur. Weil die Sensoren wissen, wie sie versorgt werden (diese Information kann man auch auslesen), haben manche Operationen verschiedene Ausführungszeiten. Das Kommando &amp;quot;Temperatur konvertieren&amp;quot; z.B. braucht ~200ms bei 2-wire, aber ~700ms bei 1-wire. Das muß bei der Programmierung berücksichtigt werden. &lt;br /&gt;
&amp;lt;br&amp;gt;Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Cable lengths&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T12:08:52Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Wie arbeitet der 1-wire-bus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet man mit dem 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die +5V Versorgung von VDD, bei der 2-wire-Version, sollte von einer separaten Quelle kommen.&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Cable lengths&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T09:03:39Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Wie arbeitet der 1-wire-bus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet der 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die +5V Versorgung von VDD, bei der 2-wire-Version, sollte von einer separaten Quelle kommen.&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Cable lengths&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T08:33:39Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Wie arbeitet der 1-wire-bus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet der 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Dinge müssen bei der Entscheidung des Bus-Types beachtet werden.&lt;br /&gt;
&amp;lt;br&amp;gt;There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kommandos in Bascom sind dieselben in beiden Fällen. Das ist kein Problem.&lt;br /&gt;
&amp;lt;br&amp;gt;The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Cable lengths&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T08:31:15Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Wie arbeitet der 1-wire-bus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet der 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Beschreibung geht nicht auf die Bedeutung der Kommandos ein, die sind meist selbsterklärend. Der Mikrocontroller schreibt Kommandos auf den Bus und liest danach die Antwort ein. Die Kommandos sind abhängig von den Bausteinen, die benutzt werden und was man damit erreichen will. Jeder DS-Baustein hat ein Datenblatt, welches man z.B. unter [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]finden kann. Darin kann man alles über die jeweiligen Kommandos nachlesen.&lt;br /&gt;
&amp;lt;br&amp;gt;I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Cable lengths&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T08:24:25Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Wie arbeitet der 1-wire-bus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet der 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &amp;lt;br&amp;gt;&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Cable lengths&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-23T08:23:42Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* How do you work with 1-wire-bus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie arbeitet der 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset kann auf den Bus geschrieben oder gelesen werden. Wenn nur 1 Sensor angeschlossen ist, oder wenn alle Sensoren gemeinsam angesprochen werden sollen, kann mmit dem Kommanso &amp;quot;Skip Rom&amp;quot; begonnen werden. Das heißt: Ignoriere die IDs der Teilnehmer, überspringe diesen Teil der Kommunikation. &lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein 1-wire-Reset bringt alle Teilnehmer am Bus in den Status der Bereitschaft. Wenn nur ein Teilnehmer adressiert wird, gibt es von den restlichen keine Aktivität bis nicht ein neuer Reset erfolgt ist.&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Cable lengths&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-20T19:20:16Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Wie es funktioniert.(1-wire) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Kommunikation am 1-Wire-bus geht vom Host aus und geschieht über Time-Slots, zeitabhängige aktiv-Low Zustände an der normalerweise auf High liegenden DQ-Leitung. Die Länge der Pulse wird vom Teilnehmer bestimmt, der gerade Daten über den Bus sendet.&lt;br /&gt;
Während der Low-Pulse wird der DS-Teilnehmer aus dem internen Kondensator versorgt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;How do you work with 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Cable lengths&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-20T19:16:17Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Wie es funktioniert.(1-wire) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, dieses mal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt weiß der Host noch nicht, was am Bus teilnimmt, er weiß nur, daß mindestens 1 Teilnehmer angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All communication on the 1-wire bus is initialized by the host, and issued by time-slots of active-low on a normally high line (DQ), issued by the device, which is sending at the moment. The devices(s) internal capacitor supplies its power needs during the low-time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;How do you work with 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Cable lengths&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-20T19:14:49Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* Wie es funktioniert.(1-wire) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Host (Ihr Mikrocontroller(µC) eine Kommunikation starten will, muß er ein Reset-Kommando ausgeben. Das ist eine einfache elektrische Funktion,die die DQ-Leitung für eine Zeit auf Low setzt(480µS beim original DS 1-wire-Bus). Das bringt die DS-Bauteile in Reset-Modus, woraufhin diese einen Präsenz-Puls senden und danach in Bereitschaft gehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Präsenz-Puls ist einfach ein Aktives Low, diesesmal von den Busteilnehmern ausgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, the host cannot know what is on the bus, it is only aware of that at least 1 DS device is attached on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All communication on the 1-wire bus is initialized by the host, and issued by time-slots of active-low on a normally high line (DQ), issued by the device, which is sending at the moment. The devices(s) internal capacitor supplies its power needs during the low-time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;How do you work with 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Cable lengths&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de</id>
		<title>Using the 1 WIRE protocol/de</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/Using_the_1_WIRE_protocol/de"/>
				<updated>2013-02-20T18:57:11Z</updated>
		
		<summary type="html">&lt;p&gt;Michael K: /* How it works. (1-wire) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=&amp;lt;div id=&amp;quot;idcontent&amp;quot;&amp;gt;Übersicht&amp;lt;div id=&amp;quot;innerdiv&amp;quot;&amp;gt;=&lt;br /&gt;
Das 1-Wire-Protokoll war eine Erfindung von Dallas Semiconductor (heute Maxim Integrated Products). Es braucht nur eine Leitung für eine 2-Wege-Kommunikation. Natürlich wird noch eine Versorgung und Ground benötigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Beitrag wurde von Göte Haluza geschrieben. Er testete die neuen 1-Wire-Suchroutinen beim Bau einer Wetterstation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dallas Semiconductor (DS) 1-wire. Dies ist eine Kurzbeschreibung des 1-Wire-Busses und dessen Umsetzung in Bascom. Für detailliertere Informationen über 1-Wire besuchen Sie bitte [http://www.maxim-ic.com www.maxim-ic.com]. Durch Bascom wird 1-wire einfach. Dieser Text beschreibt den Zugang zum Thema aus der Sicht des Bascom-Nutzers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1-Wire-Net ist ein serielles Kommunikationsprotokoll, welches von DS-Geräten benutzt wird. Der Bus kann auf 2 Arten implementiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 2 Leitungen. Dann wird DQ und Ground benutzt. Die 5V-Versorgung erfolgt mit einem Pullup-Widerstand über die DQ-Leitung und lädt einen Kondensator im DS-Baustein. Der Kondensator versorgt das Bauteil während der Kommunikation, wenn die Datenleitung für kurze Pulse auf Ground liegt.&lt;br /&gt;
Dieser Bus wird 1-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit 3 Leitungen, wenn Vdd des Bauteils mit +5V versorgt wird und DQ und GND wie oben. Dieser Bus wird 2-Wire genannt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sieht, daß die Ground-Leitung von DS nicht mitgezählt wird. Trotzdem benutzen wir die DS-Bezeichnungen weiterhin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Wie es funktioniert.(1-wire)&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Der normale Zustand des Busses ist DQ = High. Über DQ wird das Bauteil versorgt und kann seine Aufgabe erfüllen, für die es gebaut wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the host (your micro controller (uC)) wants something to happen with the 1-wire bus, it issues a reset-command. That is a very simple electric function that happens then; the DQ goes active low for a time (480uS on original DS 1-wire bus). This put the DS-devices in reset mode; then (they) send a presence pulse, and then (they) listen to the host.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The presence pulse is simply an active low, this time issued by the device(s).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, the host cannot know what is on the bus, it is only aware of that at least 1 DS device is attached on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All communication on the 1-wire bus is initialized by the host, and issued by time-slots of active-low on a normally high line (DQ), issued by the device, which is sending at the moment. The devices(s) internal capacitor supplies its power needs during the low-time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;How do you work with 1-wire-bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Thereafter, you can read a device, and write to it. If you know you only have 1 sensor attached, or if you want to address all sensors, you can start with a &amp;quot;Skip Rom&amp;quot; - command. This means; take no notice about the IDs of the sensors - skip that part of the communication.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you made a 1-wire-reset, all devices of the bus are listening. If you chose to address only one of them, the rest of them will not listen again before you have made a new 1-wire-reset on the bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I do not describe BASCOM commands in this text - they are pretty much self-explanatory. But the uC has to write the commands to the bus - and thereafter read the answer. What you have to write as a command depends on devices you are using - and what you want to do with it. Every DS chip has a data sheet, which you can find at [http://www.dalsemi.com/datasheets/pdfindex.html http://www.dalsemi.com/datasheets/pdfindex.html]. There you can find out all about the actual devices command structure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are some things to have in mind when deciding which of the bus-types to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The commands, from BASCOM, are the same in both cases. So this is not a problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The +5V power-supply on the VDD when using a 2-wire bus has to be from a separate power supply, according to DS. But it still works with taking the power from the same source as for the processor, directly on the stabilizing transistor. I have not got it to work taking power directly from the processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some devices consume some more power during special operations. The DS1820 consumes a lot of power during the operation &amp;quot;Convert Temperature&amp;quot;. Because the sensors knows how they are powered (it is also possible to get this information from the devices) some operations, as &amp;quot;Convert T&amp;quot; takes different amount of time for the sensor to execute. The command &amp;quot;Convert T&amp;quot; as example, takes ~200mS on 2-wire, but ~700mS on 1-wire. This has to be considered during programming.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And that power also has to be supplied somehow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 2-wire, you don't have to read further in this part. You can do simultaneously &amp;quot;Convert T&amp;quot; on all the devices you attach on the bus. And save time. This command is the most power-consuming command, possible to execute on several devices, I am aware of.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use 1-wire, there are things to think about. It is about not consuming more power than you feed. And how to feed power? That depends on the devices (their consumption) and what you are doing with them (their consumption in a specific operation).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Short, not-so-accurate description of power needs, not reflecting on cable lengths.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the processor pin as power supplier, will work &amp;lt; 5 sensors. (AVR, 1-wire-functions use an internal pull-up. 8051 not yet tested). Don't even think of simultaneous commands on multiple sensors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With +5V through a 4K7 resistor, to the DQ-line, 70 sensors are tested. But, take care, cause issuing &amp;quot;Convert T&amp;quot; simultaneously, would cause that to give false readings. About ~15 sensors is the maximum amount of usable devices, which simultaneously performs some action. This approach DS refers to as &amp;quot;pull-up resistor&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this in mind, a bus with up to 70 devices has been successfully powered this way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resistor mentioned, 4K7, could be of smaller value. DS says minimum 1K5, I have tested down to 500 ohm - below that the bus is not usable any more. (AVR). Lowering the resistor feeds more power - and makes the bus more noise resistant. But, the resistor minimum value is naturally also depending on the uC-pin electric capabilities. Stay at 4K7 - which is standard recommendation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS recommends yet another approach, called &amp;quot;strong pull-up&amp;quot; which (short) works via a MOS-FET transistor, feeding the DQ lines with enough power, still on 1-wire, during power-consuming tasks. This is not tested, but should naturally work. Because this functionality is really a limited one; BASCOM has no special support for that. But anyway, we tell you about it, just in case you wonder. Strong pull-up has to use one uC pin extra - to drive the MOS-FET.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Cable lengths&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
(this section is only for some limitation understanding)&lt;br /&gt;
&lt;br /&gt;
For short runs up to 30 meters, cable selection for use on the 1-Wire bus is less critical. Even flat modular phone cable works with limited numbers of 1-Wire devices. However, the longer the 1-Wire bus, the more pronounced cable effects become, and therefore greater importance is placed on cable selection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For longer distances, DS recommends twisted-pair-cable (CAT5).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS standard examples show 100 meters cable lengths, so they say, that's no problem. They also show examples with 300m cabling, and I think I have seen something with 600-meter bus (but I cant find it again).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Noise and CRC&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The longer cable and the noisier environment, the more false readings will be made. The devices are equipped with a CRC-generator - the LSByte of the sending is always a checksum. Look in program examples to learn how to re-calculate this checksum in your uC. AND, if you notice that there are false readings - do something about your cables. (Shield, lower resistor)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Transfer speed&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
On the original 1-wire bus, DS says the transfer speed is about 14Kbits /second. And, if that was not enough, some devices has an overdrive option. That multiplies the speed by 10. This is issued by making the communication-time-slots smaller (from 60 uS to 6uS ) which naturally will make the devices more sensitive, and CRC-error will probably occur more often. But, if that is not an issue, ~140Kbit is a reachable speed to the devices. So, whatever you thought before, it is FAST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BASCOM scanning of the bus is finds about 50 devices / second , and reading a specific sensors value to a uC should be about 13 devices / second.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Topology&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Of the 1w-net - that is an issue we will not cover so much. Star-net, bus-net? It seems like you can mix that. It is a bus-net, but not so sensitive about that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;The benefit of the 1-wire bus&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Each device is individual - and you can communicate with it over the media of 2 wires. Still, you can address one individual device, if you like. Get its value. There are 64 ^ 2 unique identifications-numbers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Naturally, if lot of cables are unwanted, this is a big benefit. And you only occupy 1 processor pin.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DS supplies with different types of devices, which all are made for interfacing an uC - directly. No extra hardware. There are sensors, so you can get knowledge about the real world, and there are also potentiometers and relays, so you can do something about it. On the very same bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the Ibutton approach from DS (ever heard of it?) is based on 1wire technology. Maybe something to pick up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
BASCOM let you use an uC with 1wire-devices so easy, that (since now) that also has to count as a benefit - maybe one of the largest.&amp;amp;nbsp;;-)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Nachteile des 1-wire-Busses&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Soweit bekannt, ist DS der einzige Hersteller von Sensoren für diesen Bus. Manche Leute meinen, deren Bauteile sind teuer.&lt;br /&gt;
Bis jetzt war es wirklich schwierig, mit den Bauteilen zu kommunizieren. Insbesondere, wenn mehrere Slaves an einem Bus teilnehmen.&lt;br /&gt;
Manche Leute sagen, der 1-wire-Bus wäre langsam, ich denke das ist nicht so. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: 'Arial';  color: #000000&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Göte Haluza&lt;br /&gt;
&lt;br /&gt;
System engineer&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM_HARDWARE/de]]&lt;/div&gt;</summary>
		<author><name>Michael K</name></author>	</entry>

	</feed>