PORTF a atmega128

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

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
Mems
Příspěvky: 5
Registrován: 28 úno 2010, 00:00

PORTF a atmega128

#1 Příspěvek 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
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#2 Příspěvek od Andrea »

DDRF, PORTF, DDRG, PORTG a PING nejsou přímo bitově adresovatelné.
Uživatelský avatar
Mems
Příspěvky: 5
Registrován: 28 úno 2010, 00:00

re

#3 Příspěvek 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.
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

Re: re

#4 Příspěvek 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 :oops: )
PORTF |= (1<<1); // Nastavi PORTF.1
PORTF |= (1<<2); // Nastavi PORTF.2
PORTF &= ~(1<<1); // Shodi PORTF.1
PORTF &= ~(1<<2); // Shodi PORTF.2
Uživatelský avatar
Mems
Příspěvky: 5
Registrován: 28 úno 2010, 00:00

re

#5 Příspěvek od Mems »

jj C, vyzkouším to
Uživatelský avatar
Mems
Příspěvky: 5
Registrován: 28 úno 2010, 00:00

re

#6 Příspěvek od Mems »

tak to šlape,
bravoo!
je vidět, že v C moc neumíš :D
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
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#7 Příspěvek 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.
Uživatelský avatar
Mems
Příspěvky: 5
Registrován: 28 úno 2010, 00:00

re

#8 Příspěvek od Mems »

super :)
už je mi to jasný
good work!
díky
Odpovědět

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