RTV forum PL | NewsGroups PL

Dostęp do rejestrów i debugowanie w IAR 4.41A dla AT91SAM7S64 - pytania

IAR 4.41A AT91SAM7S64 dwa pytanka

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Dostęp do rejestrów i debugowanie w IAR 4.41A dla AT91SAM7S64 - pytania

azazel
Guest

Sun Nov 02, 2008 9:48 am   



Witam
Wczesniej programowałem w tym samym IAR tylko na LPC2378, teraz postanowilem
poznac SAM7S64 i
mam dwa pytanka dotyczących IAR dla SAM7.

Dostęp do rejestrów
w LPC robilem np tak:
FIO0SET |= 1<<15;

czyli wpis do rejestru FIO0SET.

a w SAM7S:
AT91C_BASE_PIOA->PIO_PER |= 1<<15

czemu nie można poprostu albo cos podobnego?
PIOA_PER |= 1<<15

I jak włączyć debugowanie krok po kroku w kodzie C a nie w disassemblerze
wiem że na LPC też miałem z tym problem i się ten sam komunikat pojawiał
(raz jakos to włączylem ale nie wiem jak)
Oto komunikat:

The stack plug-in failed to set a breakpoint on "main". The stack window
will not be able to display stack contents

Oczywiscie rozumiem co to znaczy tylko jak to naprawić?

Pozdrawiam
AzaZeL

Michał Lankosz
Guest

Sun Nov 02, 2008 12:43 pm   



Quote:
Wczesniej programowałem w tym samym IAR tylko na LPC2378, teraz
postanowilem poznac SAM7S64 i
mam dwa pytanka dotyczących IAR dla SAM7.

Dostęp do rejestrów
w LPC robilem np tak:
FIO0SET |= 1<<15;

czyli wpis do rejestru FIO0SET.

a w SAM7S:
AT91C_BASE_PIOA->PIO_PER |= 1<<15


W SAMach wiele rejestrów jest podzielonych na: Enable, Disable, Status.
Jeśli wpisujesz wartość do rejestru Enable, to ustawiają się tylko bity
gdzie wpisujesz jedynkę. Jeśli wpisujesz do Disable to zerują się tylko bity
na pozycjach gdzie znajdują się jedynki. Aktualną wartość rejestru odczytasz
z rejestru Status.
W powyższym przypadku wpisz po prostu

AT91C_BASE_PIOA->PIO_PER = 1<<15;

pamiętaj, że pozostałe linie nie zostaną zmodyfikowane!

Quote:
czemu nie można poprostu albo cos podobnego?
PIOA_PER |= 1<<15

Nie wiem jak w IARze, ale w GCC jest możliwy zapis:
*AT91C_PIOA_PER=1<<15;

Ogólnie jednak zostały stworzone struktury i w jej obrębie pojedyncze
rejestry dlatego, że może występować wiele identycznych peryferiów w
mikrokontrolerze. Na przykład może być 1, 2, 3 UARTy. Program powinien być
tak napisany, aby zmiana w jednym miejscu wskaźnika na numer urządzenia
spowodowało prawidłową pracę tego urządzenia. Zatem funkcji albo stałej
przypisuje się adres bazowy urządzenia, w obrębie którego wybiera odpowiedni
rejestr ze struktury.
W SAM7S64 jest jeden port I/O, a w SAM7X256 na przykład dwa. Dzięki
wskaźnikom jest prościej wykorzystać fragmenty lub cały program do pracy na
innym mikrokontrolerze lub po prostu przy zmianie jego otoczenia.
Po przejściu z AVRów było to dla mnie na początku strasznie zagmatwane, ale
teraz już widzę dobre strony takiego podejścia. Nie mówię, że kod jest
bardzo przejrzysty, ale i stopień złożoności tego procesora i liczby
peryferiów wymaga jakiegoś usystematyzowania.

Co do reszty - nie wypowiadam się, nie znam IARa.

Michał

Janusz
Guest

Mon Nov 10, 2008 8:49 am   



Dziekuje bardzo za ospowiedź
Pozdrawiam
AzaZeL

elektroda NewsGroups Forum Index - Elektronika Polska - Dostęp do rejestrów i debugowanie w IAR 4.41A dla AT91SAM7S64 - pytania

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map