Guest
Wed Mar 12, 2008 10:04 pm
witam
Mam kod zaczerpnięty z przykładu dla uC at91sam7s256:
PIOA_PER = 0x0000000F;
PIOA_OER = 0x0000000F;
Nie mogę go skompilować. Natomiast bez problemu kompiluje się kod:
AT91F_PIO_CfgOutput(AT91C_BASE_PIOA, 0x0000000F);
lub nawet
AT91_REG *www = (AT91_REG*)AT91C_BASE_PIOA->PIO_SODR;
*www = 0x0000000F;
Używam eclipsa i gnuarm. Jakie biblioteki muszę ściągnąć żeby móc odwoływać
się do rejestrów w ten krótszy, bezpośredni sposób? Obecnie mam biblioteki
AT91SAM7S256.h, lib_AT91SAM7S256.h.
pozdrawiam
tn
Janusz U.
Guest
Thu Mar 13, 2008 8:41 am
Quote:
się do rejestrów w ten krótszy, bezpośredni sposób? Obecnie mam biblioteki
AT91SAM7S256.h, lib_AT91SAM7S256.h.
i te Ci wystarcza, sprobuj tak AT91C_BASE_PIOA->PIO_CODR, nie boj sie tez
funkcji inline (np. AT91F_PIO_CfgOutput(AT91C_BASE_PIOA, AT91C_PIO_PA7), bo
szczegolnie one nie kosztuja w szybkosci dzialania...
pozdrawiam
Janusz U.
Adam Dybkowski
Guest
Sat Mar 15, 2008 8:42 pm
tom_ny@NOSPAM.wp.pl pisze:
Quote:
Mam kod zaczerpnięty z przykładu dla uC at91sam7s256:
PIOA_PER = 0x0000000F;
PIOA_OER = 0x0000000F;
Nie mogę go skompilować. Natomiast bez problemu kompiluje się kod:
AT91F_PIO_CfgOutput(AT91C_BASE_PIOA, 0x0000000F);
Polecam jednak stosowanie tego ostatniego sposobu (z wykorzystaniem makr
dostarczanych przez Atmela), jeżeli będziesz kiedyś chciał przejść na
inny procesor to często zaoszczędzi wielu późniejszych zmian w
projekcie. Samo konfigurowanie portów lub machanie bitami dużo nie
zmienia się (z procesora na procesor, zakładając że pozostajemy cały
czas w ARMach od Atmela) ale np. wykorzystanie makr związanych z portem
szeregowym, SSC, czy odczytywaniem częstotliwości zegara pozwala
uprościć sobie życie. Szczególnie, że "ręcznie" w takich przypadkach
trzeba byłoby się sporo napisać. A podany na początku postu przykład
kodu źródłowego to na pewno nie dla gcc. Może IAR łyknie...
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.