AT91SAM7S przerwania

Feb 14, 2009 1 Replies

Witam !



W celach dydaktycznych bawiê siê procesorem AT91SAMS. Nie bardzo rozumiem dwóch spraw zwi±zanych z przerwaniami.


  1. W³±czy³em przerwanie od Timera. W rejestrze AIC_SMR ustawi³em SRCTYPE na "High level Sensitive" Przerwanie dzia³a prawid³owo. Ale tylko je¶li w nim odczytujê rejestr TC0_SR. Je¶li tego nie robiê to przerwanie wykonuje siê w kó³ko tzn. nie wykonuje siê program g³ówny. Z jakiego powodu tak siê dzieje ?


  1. W³±czy³em przerwanie od PIOA. W rejestrze AIC_SMR ustawi³em SRCTYPE na "High level Sensitive" Wszytko dzia³a prawid³wo. Zmieniam SRCTYPE na "Positive edge triggered". Podobnie jak w przypadku Timera przerwanie wykonuje siê w kó³ko co blokuje procesor. Dzieje siê tak nawet gdy w przerwaniu wpisujê do PIOA__IDR same jedynki. Czyli wy³±czam przerwania od PIOA. Z jakiego powodu siê tak dzieje ?



Pawe³



Nie znam akurat tego procka ale ogólnie w przerwaniu sprzêtowym musisz potwierdziæ jego przyjêcie, wyzerowaæ jak±¶ flagê, inaczej zg³asza siê w kó³ko

A jeste¶ pewien ¿e przerwanie obs³ugujesz tylko raz? Mo¿e krêcisz siê w przerwaniu a¿ nie zniknie zewnêtrzny sygna³.

pewnie to co w 1. ->zbocze ustawia jak±¶ flagê

- czyli nowe ju¿ nie przyjdzie ale aktualne musisz do koñca obs³u¿yæ.

zbyszek

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required