Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Pomiar czasu stanu L przy pomocy przechwytywania w uC AVR

Sławek5
-
-
Posty: 485
Rejestracja: 15 sie 2003, o 16:40
Lokalizacja: Szczecin
Kontaktowanie:

Pomiar czasu stanu L przy pomocy przechwytywania w uC AVR

Postautor: Sławek5 » 15 kwie 2013, o 06:35

Cześć.
Potrzebuje się poradzić.
Buduję sobie układ zliczający w jakimś okresie np 2 sek czas trwania stanu niskiego. W uC 8051 było to dość proste bo licznik mógł być bramowany stanem L, lecz w AVR nie mam tej funkcji i muszę trochę inaczej podejść do tego.
Myślałem o czymś takim.
1. Z uwagi na pojemność licznika użyty jest preskaler przez 256 sygnału zegarowego XTAL
2. odblokowuje dwa przerwania, od zbocza opadającego i przechwytującego stal licznika Timer1 przy zboczu narastającym.
3. Zasada jest taka że zbocze opadające wyzwala pomiar, zeruje stan licznika a zbocze narastające "łapie" jego stan i dodaje do zmiennej która przechowuje jego wartość w tym z góry zadanym czasie.

Ale..... jak zwykle coś.
Czy przy każdym wyzwoleniu pomiaru zboczem opadającym prawidłowa jest instrukcja Timer1=0; zerująca wartość licznika?
Czy przy każdym wyzwoleniu pomiaru uruchamiać licznik np w Bascomie start timer1, a po nadejściu przechwytywania zatrzymywać np stop timer1 czy pozostawić go cały czas pracującego? Co z preskalerem, czy wymaga on jakiegoś zerowania?

Nie wiem czy mam jeszcze na coś zwrócić uwagę, co powoduje że pomiary mi się wyłożą?

Awatar użytkownika
Tomasz Gumny
-
-
Posty: 685
Rejestracja: 4 lut 2004, o 23:31
Lokalizacja: Trzcianka/Poznań

Re: Pomiar czasu stanu L przy pomocy przechwytywania w uC AV

Postautor: Tomasz Gumny » 15 kwie 2013, o 11:59

Czasem dobrze podać typ procesora. Jeśli w onym jest wejście ICP, to warto je wykorzystać. Preskaler można zerować, ale jeśli włączasz go tylko z powodu za krótkiego licznika, to doliczaj przerwania od OVF.

Sławek5
-
-
Posty: 485
Rejestracja: 15 sie 2003, o 16:40
Lokalizacja: Szczecin
Kontaktowanie:

Re: Pomiar czasu stanu L przy pomocy przechwytywania w uC AV

Postautor: Sławek5 » 15 kwie 2013, o 12:33

Fakt, najważniejszej rzeczy nie podałem. Pewnie domyśliliście sie że to AVR.
A co z zatrzymaniem licznika, warto to robić? Czy niech sobie biegnie a w przerwaniach: pierwszym INTx wyzerować a w drugim ICP przechwycić wartość?

Awatar użytkownika
Tomasz Gumny
-
-
Posty: 685
Rejestracja: 4 lut 2004, o 23:31
Lokalizacja: Trzcianka/Poznań

Re: Pomiar czasu stanu L przy pomocy przechwytywania w uC AV

Postautor: Tomasz Gumny » 15 kwie 2013, o 15:21

Wejście ICP przepisuje zawartość licznika "w locie", więc wystarczy zmieniać aktywne zbocze. Nadal nie znamy typu procesora...

Sławek5
-
-
Posty: 485
Rejestracja: 15 sie 2003, o 16:40
Lokalizacja: Szczecin
Kontaktowanie:

Re: Pomiar czasu stanu L przy pomocy przechwytywania w uC AV

Postautor: Sławek5 » 15 kwie 2013, o 16:29

nie wykorzystuje jakiś specjalnych funkcji liczników więc ATMega8 mi wystarczy.
łatwiej mi będzie jednak w int0 lub int1 zerować stan licznika a w ICP odczytać jego wartość tylko czy przed zerowaniem zatrzymać go czy po prostu do rejestrów wpisać 0

Wróć do „AVR/AVR32”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 7 gości