AVR - jaký je rozdíl mezi PINA.1 = 1 a mezi PORTA.1 = 1?

Dobrý den , jaký je rozdíl mezi PINA.1 = 1 a mezi PORTA.1 = 1?

:arrow_right: administrator: přejmenováno z "avr"

pin -> čteš
port -> zapisuješ

díky :slight_smile:

To bylo trochu zjednodušené :confused:

Pomocí DDRA a PORTA volíš konfiguraci portu.
(Pull-up, vysokoimpedačí vstup, totem v log.0 a totem v log.1)

Pomocí PINA čteme.

Ještě jsem se chtěl zeptat co znamená výraz:
#define INIT_TIMER0 TCNT0=0x100L-F_XTAL/64L/500L
hlavně ty Lka nevím co znamenají
díky

Lko na konci číslice nařizuje překladači,
že se k němu má chovat jako k Long (Long int).

Zdarec,
neni uplne presne k tematu ale souvisi to se ctenim z portu.
Po dlouhy dobe jsem se zase dostal k avr a hodinu tu resim, proc mi nefunguje kotrola pinu…
if(~(PINB & (1<<PB4))) nefunguje, vzdy vyhodnoceno jako true
if(!(PINB & (1<<PB4))) funguje

Nemelo by makat oboji?

A preco by to malo rovnako fungovat?

~ zneguje bajt, ak je v bajte aspon jedna nula, potom je podmienka vzdy vyhodnotena ako TRUE

! je negacia podmienky, t.j. ak je PINB&(1<<PB4) nulove, potom je podmienka platna

To jsem vedel, ale teprve ted mi doteklo, ze vysledkem “PINB & (1<<PB4)” je bud 0 nebo 1 na miste PB4 a po negaci jsou bud samy 1 nebo chybi na miste PB4 ale nula to nevyjde… :unamused:
No nic, priste nemyslet :smiley:
S tou negaci bych to musel napsat jako (~PINB) & (1<<PB4)

Presne tak. Ale to sa stava casto, ze nieco trivialne je zdrojom poruchy, nad ktrorym nejeden mozog zostane stat i niekolko dni.