Stránka 1 z 1
PORTF a atmega128
Napsal: 28 úno 2010, 21:16
od Mems
Ahoj poradí mi někdo s portem PORTF, abych s ním mohl pracovat jako s ostatními porty.
Chtěl bych ovládat piny PORTU F samostatně
Nejde mi přeložit kod PORTF.1 = 1;
hlásí mi to chybu
Error: the first argument of the '.' operator must be of 'struct' or 'union' type
Napsal: 28 úno 2010, 21:40
od Andrea
DDRF, PORTF, DDRG, PORTG a PING nejsou přímo bitově adresovatelné.
re
Napsal: 28 úno 2010, 21:46
od Mems
ou
a nevíš jak bych to mohl vyřešit přes tu struct nebo union?
právě bych potřeboval spínat PORTF.1 a následně PORTF.2 přičemž PORTF.1 nechat beze změny.
Re: re
Napsal: 28 úno 2010, 21:52
od Andrea
Mems píše:ou
a nevíš jak bych to mohl vyřešit přes tu struct nebo union?
právě bych potřeboval spínat PORTF.1 a následně PORTF.2 přičemž PORTF.1 nechat beze změny.
V jakém jazyce?
V C asi takhle (snad moc nekecám, v C neumím

)
PORTF |= (1<<1); // Nastavi PORTF.1
PORTF |= (1<<2); // Nastavi PORTF.2
PORTF &= ~(1<<1); // Shodi PORTF.1
PORTF &= ~(1<<2); // Shodi PORTF.2
re
Napsal: 28 úno 2010, 21:53
od Mems
jj C, vyzkouším to
re
Napsal: 28 úno 2010, 22:11
od Mems
tak to šlape,
bravoo!
je vidět, že v C moc neumíš
a můžeš mi ty příkazy vysvětlit?
PORTF |= (1<<1); // Nastavi PORTF.1
PORTF &= ~(1<<1); // Shodi PORTF.1
poznám tu disjunkci a konjunkci a bitový posun, ale co ty čísla jak to s tím souvisí hlavně ta první číslice?
díky
Napsal: 28 úno 2010, 22:17
od Andrea
x<<y znamená posuň x o y bitů doleva, takže 1<<1 je posuň 1 o 1 bit takže výsledek je 00000010b, 1<<2 je posuň 1 o 2 bity, výsledek je 00000100b a to je pak použité jako bitová maska pro nastavení příslušného bitu v hodnotě na PORTF pomocí bitového ORu. ~ je negace, takže vytvoří negovanou bitovou masku pro shození bitu pomocí bitového ANDu.
re
Napsal: 28 úno 2010, 22:24
od Mems
super
už je mi to jasný
good work!
díky