Hallo Banzai (und andere die's nicht verstehen)
na ja, dass ist auch ein bisschen Schade...der Code oben ist mir völlig fremd (und ich dachte, ich kann C).
aber dass kann ich mich vorstellen.
z.B. 'abracadabra, sim sala bim...'
========================================
TCCR2 &= ~ ( (1<<CS22) | ( 1<<CS21) | (1<<CS20) )
TCCR2 ist ein register im Atmega8L chip, ein Timer/counter2 control register.
========================================
CS22 ist nicht anderes als 2 (wieso denn?)
in test.c steht irgendwo #include "asuro.h"
dass heisst an dieser stelle sollte mann eigentlich die Datei asuro.h zwischenfugen, aber da wird die test.c Datei so gross und unubersichtlich und es ist einfacher um hier asuro.c zu includen statt complet zu kopieren.
aber, aber...
in asuro.h steht auch wieder #include <avr/io.h>, #include <avr/interrupt.h> und #include <avr/signal.h>
ai, ai....und wass sehe ich irgendwo in avr/io.h? nah,
#elif defined (__AVR_ATmega8__)
# include <avr/iom8.h>
und wenn wir in <avr/iom8.h> gucken, dort steht irgendwo
#define CS22 2
#define CS21 1
#define CS20 0
so fur CS22 kann man auch '2' lesen
ich hab nicht gesagt dasses einfach ist
<avr/iom8.h> ist die datei C:\WinAVR\avr\include\avr\iom8.h, ja, ja
========================================
TCCR2 &= ~ ( (1<<CS22) | ( 1<<CS21) | (1<<CS20) )
anders geschrieben
TCCR2 &= ~ ( (1<<2) | ( 1<<1) | (1<<0) )
aufmerkung zwischendurch: binair heist so wass wie 'bitweis'.
1<<2 heist, die 1 wird zweimahl nach links geschoben, oder
binair: aus 0000 0001 wird 0000 0100
oder
hex: aus 0x01 wird 0x04
anders geschrieben
TCCR2 &= ~ ( (0x04) | (0x02) | (0x01) )
die '|' damit is ODER gemeint
(0x04) oder (0x02) oder (0x01) ist dass gleiche wie
binair: 0000 0100 = hex: 0x04
binair: 0000 0010 = hex: 0x02
binair: 0000 0001 = hex: 0x01
------------------------------ oder, oder, macht zusammen
binair: 0000 0111 = hex: 0x07
seuche, seuche...
========================================
TCCR2 &= ~ ( (1<<CS22) | ( 1<<CS21) | (1<<CS20) )
ist gleich wie
TCCR2 &= ~ ( 0x07 )
'~' heisst 'invertiere mahl'
so ~( 0x07 ) ist gleich
~ (binair: 0000 0111) = (binair: 1111 1000) = hex: 0xF8
========================================
TCCR2 &= ~ ( (1<<CS22) | ( 1<<CS21) | (1<<CS20) )
ist gleich wie
TCCR2 &= 0xF8
ist gleich wie
TCCR2 = TCCR2 & 0xF8
ist gleich wie
TCCR2 = TCCR2 UND 0xF8
anders gesagt
binair: 0110 0011 = TCCR2, mit ein beispiel inhalt, VOR der anderung
binair: 1111 1000 = hex: 0xF8
----------------------------- jetzt ein UND function bitweise durchfuhren
binair: 0110 1000 = hex: 0x68 = resultat dass wieder zuruck geschrieben wird nach TCCR2
jetzt kan mann sehen dass die rechter 3 bits in TCCR2 jetzt '0' sind unabhagig wass vorher in die rechter 3 bits von TCCR2 war
und dass die linker 5 bits in TCCR2 sich NICHT geanderd haben
so, sosososo,
========================================
TCCR2 &= ~ ( (1<<CS22) | ( 1<<CS21) | (1<<CS20) )
ist nicht anderes als mache die 3 rechter bits in TCCR2 mahl alle drei '0' und lass die ubrigen bits ungeandert.
Bis soweit diese Sendung,
ich wunsche ihnen einen gute nacht
gruss,
Henkes
Lesezeichen