Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Christian Zietz Newsgroups: de.sci.electronics Subject: =?UTF-8?Q?Re:_Arduino:_=22digitalWrite=22_geht._=22PORTD/PORB=22_is?= =?UTF-8?Q?t_unzuverl=c3=a4ssig=3f?= Date: Sat, 8 Apr 2017 11:03:01 +0200 Lines: 31 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: individual.net S8L5HgP83fW2bGqkyNoRRgnN63KI5jmkhxM+9IJicL7rvmtQ== Cancel-Lock: sha1:kGGNywNBThqv9eEXuyCuyyRgQMg= User-Agent: Mozilla/5.0 (Windows NT 6.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 In-Reply-To: Xref: csiph.com de.sci.electronics:225889 Manuel Reimer schrieb: > On 04/02/2017 11:50 AM, Manuel Reimer wrote: >> // Set one byte to the parallel interface >> void ParportWriteData(unsigned char aData) { >> unsigned char maskD = B11111100; >> unsigned char bitsD = aData << 2; > PORTD &= B10000011; >> PORTD = (PORTD & ~maskD) | (bitsD & maskD); >> unsigned char maskB = B00000011; >> unsigned char bitsB = aData >> 6; >> PORTB = (PORTB & ~maskB) | (bitsB & maskB); >> } > jetzt falle ich aber wirklich vom Glauben ab. Fix ist oben eingebaut. > Aber warum???? > > Wenn ich diese Bitfolge zuerst auf "PORTD" "unde", dann funktioniert > alles wie gewünscht. Der Unterschied ist mir aber nicht klar. Mir ist nicht ganz klar, wie Du auf diese Bitfolge gekommen bist. Warum ausgerechnet B10000011? Abgesehen davon ist sowas immer ein Grund, sich den generierten Assembler-Code anzugucken. Poste ihn doch mal für beide Fälle, ohne und mit "Fix". Grüße Christian -- Christian Zietz - CHZ-Soft - czietz (at) gmx.net WWW: http://www.chzsoft.de/ PGP/GnuPG-Key-ID: 0x52CB97F66DA025CA / 0x6DA025CA