Witam,
od wczoraj usiluje napisac program korzystajacy z 16bitowego licznika w atmedze16, ktory dzielac zewnetrzny kwarc przez 1024 da mi 1milisekunde, a pozniej te milisekundy bede mogl sobie spokojnie zliczac..
widze to tak:
$crystal=7372800
Dim Czas As Long
Config Timer1 = Counter, Compare A = Set, Prescale = 1024
Compare1a = 7200 '7372800/1024 => 7200 czyli jedna milisekunda
Set Timsk.4
Set Timsk.0
Enable Interrupts
On Compare1a inkrementuj
Do
'
Loop
inkrementuj:
incr Czas
return
No i niestety nie umiem tego doprowadzic do dzialania, z przerwan jestem cienki jak barszcz.. Chcialbym miec tez mozliwosc kasowania tego licznika..
Czy jakas dobra dusza jest mi w stanie pomoc? Z gory bardzo dziekuje.
Pozdrawiam, szpulek.
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ęlicznik czasu w ms na atmedze16
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Witam,
dlatego uzywam tutaj tego comapare, gdyz oprocz tego czasu bede mial jeszcze kilka operacji, ktore moga spowodowac przepelnienie, wiec musze miec to zrobione wlasnie w ten sposob..
wiem, ze da sie to tak zrobic, ale na podstawie helpa z bascoma nie umiem sobie z tym poradzic..
czy ktos to rozwiazal w taki sposob?
chcialbym, zeby to dzialalo tak, w compare ustawilem sobie liczbe, wynikajaca z kwarcu i dzielnika 1024, jezeli licznik osiagnie taka wartosc ma sie wyzerowac oraz urochomic ma wygenereowac, ktore zliczy mi wystapienie tych przerwan, czyli milisekund..
dobrze rozumuje?
pzdr, szpulek
dlatego uzywam tutaj tego comapare, gdyz oprocz tego czasu bede mial jeszcze kilka operacji, ktore moga spowodowac przepelnienie, wiec musze miec to zrobione wlasnie w ten sposob..
wiem, ze da sie to tak zrobic, ale na podstawie helpa z bascoma nie umiem sobie z tym poradzic..
czy ktos to rozwiazal w taki sposob?
chcialbym, zeby to dzialalo tak, w compare ustawilem sobie liczbe, wynikajaca z kwarcu i dzielnika 1024, jezeli licznik osiagnie taka wartosc ma sie wyzerowac oraz urochomic ma wygenereowac, ktore zliczy mi wystapienie tych przerwan, czyli milisekund..
dobrze rozumuje?
pzdr, szpulek
byc moze faktycznie uzywasz tego ukladu do jakiegos bardzo specyficznego zadania i musisz miec compare ale wydaje mi sei ze nie ma roznicy jak to zrobisz... bo prezciez zadna roznica czy bedzeisz zliczal od 0 do 7200 czy od (65536 - 7200) do 0 i czy przerwanie pygeneruje prezpełnienie czy rejest compare... sprobuj.... ja nigdy compare nie uzywalem ale opisany byl w ktoryms z ostatnich edw w kursie oslej łączki to tam poszukaj
witam,
juz sobie z tym poradzilem, gdyby ktos potrzebowal:
dim czas as long
On Compare1a Inkrementuj_licznik_1ms 'przerwanie dla odliczenia 1ms w timer1
Compare1a = 7373 'zawartość licznika dla odliczenia 1ms przy kwarcu 7372800 Hz (zliczanie od zera)
Tccr1b = &B00001001 'ustawienie rejestru niezbędne do poprawnej pracy licznika: włącz Timer1 prescale 1 , zerowanie przy zrównaniu z CompareA
Enable Compare1a 'włączamy obsługę przerwania licznika
Enable Interrupts
do
loop
Inkrementuj_licznik_1ms:
'tutaj wejdzie co 1ms
incr czas
Return
pzdr, szpulek
juz sobie z tym poradzilem, gdyby ktos potrzebowal:
dim czas as long
On Compare1a Inkrementuj_licznik_1ms 'przerwanie dla odliczenia 1ms w timer1
Compare1a = 7373 'zawartość licznika dla odliczenia 1ms przy kwarcu 7372800 Hz (zliczanie od zera)
Tccr1b = &B00001001 'ustawienie rejestru niezbędne do poprawnej pracy licznika: włącz Timer1 prescale 1 , zerowanie przy zrównaniu z CompareA
Enable Compare1a 'włączamy obsługę przerwania licznika
Enable Interrupts
do
loop
Inkrementuj_licznik_1ms:
'tutaj wejdzie co 1ms
incr czas
Return
pzdr, szpulek
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 34 gości