Problem s Atmega8

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
pokrivnik
Příspěvky: 79
Registrován: 05 úno 2009, 01:00

#16 Příspěvek od pokrivnik »

Andrea píše:Kdybys napsal, že reaguje jen dioda odpovídající ta, tak to bych věděla proč.
Jj maš pravdu, reaguje iba ta, som sa sekol, už som to menil toľko krát...

V čom je chyba?

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#17 Příspěvek od Andrea »

(1<<PB1) je 2, výsledkem (PINB & (1<<PB1)) je tudíž buď 0 nebo 2, nikdy ne 1.

Uživatelský avatar
pokrivnik
Příspěvky: 79
Registrován: 05 úno 2009, 01:00

#18 Příspěvek od pokrivnik »

Andrea píše:(1<<PB1) je 2, výsledkem (PINB & (1<<PB1)) je tudíž buď 0 nebo 2, nikdy ne 1.
Tak tomu teraz nechápem, môžeš vysvetliť? Ďakujem :)

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#19 Příspěvek od Andrea »

A co nechápeš? << je rotace vlevo, & je bitový AND, (1<<PB1) je rotace 1 o PB1 bitů doleva, PB1 je 1, takže výsledek je 2, a když uděláš bitový AND 2ky s čímkoliv, tak výsledek je 0 nebo 2.

Uživatelský avatar
pokrivnik
Příspěvky: 79
Registrován: 05 úno 2009, 01:00

#20 Příspěvek od pokrivnik »

Andrea píše:A co nechápeš? << je rotace vlevo, & je bitový AND, (1<<PB1) je rotace 1 o PB1 bitů doleva, PB1 je 1, takže výsledek je 2, a když uděláš bitový AND 2ky s čímkoliv, tak výsledek je 0 nebo 2.
Ahaa, tak ja som to pochopil tak že v tomto prípade

#define tl (PINB & (1<<PB1))
#define ta (PINB & (1<<PB0))

bude tl definovať tlačítko pripojené k portu PB1 a ta bude definovať tlačítko pripojené k portu PB0, a keď hocikde v programe napíšem tl alebo ta bude to predstavovať daný pin

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#21 Příspěvek od Andrea »

To by to muselo být napsané nějak takhle:
#define tl ((PINB >> PB1) & 0x01)
#define ta ((PINB >> PB0) & 0x01)

Uživatelský avatar
pokrivnik
Příspěvky: 79
Registrován: 05 úno 2009, 01:00

#22 Příspěvek od pokrivnik »

Vďaka, vidím že to musím poriadne naštudovať :roll:

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#23 Příspěvek od Andrea »

To jo, u jednočipů jsou ty bitové operace docela důležité a hojně používané.

Uživatelský avatar
Atlan
Příspěvky: 4499
Registrován: 10 kvě 2004, 02:00
Bydliště: Košice

#24 Příspěvek od Atlan »

kebz netestoval tak hlupo odmienku TL==1 tak bz na to neprsiel.. kebz len testoval if (tl) tak bz mu to islo ..na druhej strane sa nieco naucil :D

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#25 Příspěvek od Andrea »

bzbzbz :roll:

Uživatelský avatar
Atlan
Příspěvky: 4499
Registrován: 10 kvě 2004, 02:00
Bydliště: Košice

#26 Příspěvek od Atlan »

lepsie ako i/y :D hlupo nastavena klavesnica.... vratme sa k teme jo

Uživatelský avatar
WLAB
Příspěvky: 867
Registrován: 13 zář 2005, 02:00
Bydliště: Praha

#27 Příspěvek od WLAB »

Jabych tedy radeji pouzival necu ve smyslu:


#define TL (PINB & 0x04) /*0x04 maska tlacitka TL*/

a vyhodnocoval bych to jako

if (TL) .....

je to rychlejsi, a myslim, ze i prehlednejsi. Rozumny kompliator na to stejne pouzije na AVRku instrukce bitovych operaci, ikdyz ten C zapis operuje s celym slovem.
de omnibus dubitandum est

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“