Licznik Zdarzen?

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Adrian01
-
Posty: 9
Rejestracja: 16 lip 2005, 14:30
Lokalizacja: Bogatynia
Kontakt:

Licznik Zdarzen?

Post autor: Adrian01 » 25 lis 2005, 23:52

Problem wyglada nastepujaca:
Chcialem za pomoca Mikrokontrolera zliczac impulsy ze starej tarczy od telefonu(takiej gdzie numerki trzeba wykrecac) wyglada to tam ze dwa z wyprowadzen to zalacznik ktory po wykreceniu danego nuerku otwiera sie dokladnie tyle razy jaka liczbe sie wybralo...potrzebuje te impulsy policzac...normlanie z przerwaniami nie daje rady bo to za szybko sie dzieje i gubi impulsy...chyba ze jest jakis specjalny szybki sposob...jak takie cos zrealizowac?...robilem to na MSP430 od TI ale moze tez byc przeciez na ATmega8 albo 32 bo takie akurat mam...najlepiej wiec by bylo zeby to zrobic w asmeblerze...jak macie jakies ciekawe pomysly dajcie znac (wiem ze to nalzy raczej uzyc przechwytywania ale w jaki sposob najlepiej...jezeli ktos juz robil cos podobnego dajcie znac)....ja probuje dalej

Awatar użytkownika
c4r0
Moderator
Posty: 2150
Rejestracja: 13 kwie 2004, 19:56
Lokalizacja: z lasu
Kontakt:

Post autor: c4r0 » 26 lis 2005, 11:40

Niemożliwe że nienadąża. Przecież te impulsy są całkiem wolne, jeśli w przerwaniu masz tylko inkrementację zmiennej to musi działać :roll:

Gienek
-
Posty: 32
Rejestracja: 01 sie 2003, 8:05
Lokalizacja: Tarn-Góry

Post autor: Gienek » 27 lis 2005, 12:19

Możesz użyć przerwań ale pod warunkiem że impulsy nie są zakłucone. Znając życie takie styki nie będą pozbawione oscylacji styków i musisz to odfiltrować. Najprościej jest to zrobic timeram, którego interwał jest większy od czasu oscylacji tych styków a ten z kolei będzie testował to wejście.

Awatar użytkownika
c4r0
Moderator
Posty: 2150
Rejestracja: 13 kwie 2004, 19:56
Lokalizacja: z lasu
Kontakt:

Post autor: c4r0 » 27 lis 2005, 16:09

Gienek pisze:Najprościej jest to zrobic timeram, którego interwał jest większy od czasu oscylacji tych styków [...]
A nie prościej kondensatorkiem :?: :idea:

Awatar użytkownika
Koppel
Użytkownik
Posty: 500
Rejestracja: 24 lip 2005, 18:05
Lokalizacja: Gliwice

Post autor: Koppel » 27 lis 2005, 16:14

c4r0 pisze:
Gienek pisze:Najprościej jest to zrobic timeram, którego interwał jest większy od czasu oscylacji tych styków [...]
A nie prościej kondensatorkiem :?: :idea:
Nie :mrgreen: :idea:

Gienek
-
Posty: 32
Rejestracja: 01 sie 2003, 8:05
Lokalizacja: Tarn-Góry

Post autor: Gienek » 27 lis 2005, 16:16

c4r0 pisze:A nie prościej kondensatorkiem
ale niewiem czy równie skutecznie.

Adrian01
-
Posty: 9
Rejestracja: 16 lip 2005, 14:30
Lokalizacja: Bogatynia
Kontakt:

[shadow=red]Zaczyna Dzialac [/shadow]

Post autor: Adrian01 » 27 lis 2005, 19:57

Wszystko dzaial na razie tak jak planowalem...

- te impulsy wcale nie takie wolne sa to wbrew pozorom dzieje sie dosyc szybko ale przerwaniami spokojnie to bedzie dzialac no i musze je oczywiscie troche spopolinic mala petla opozniajaca...

-kondensatorek nie byl ba chyby roziazanie zbyt dobrym...poza tym przeciez to wlasnie o to chodzi ze by sie obejsc bez takich srodkow...

-jak na razie po wykreceniu numeru na tarczy w moim rejestrze R10 pojawia sie dokladnie liczba ktora wybralem...wyswietlam to jescze na linijce diod...super...a propos to on zlicza oba impulsy zarowno otwarcie styku jak i zamkniecie..no i trzeba bylo te liczbe przez dwa podzielic a w asemblerze to nie tak prosto ale sie okazalo ze wstarczy odjac 2 tyle razy az rejestr bedzie 0 no i policzyc ile razy sie odejlo i juz dzielenie przez 2 zalatwione...genialnie proste :))

-teraz te liczby chce wyswietlich na wyswietlaczu ze starego kalkulatora...to taki lamopwy wyswietlacz...powinna byc zabawa...dzieki za pomysly

P.S. to wszystko bedzie jeszcze oczywiscie po podaniu odpowiedniej kombinacji liczb sterowac silnikiem krokowym...wszystko typowe ale na nietypowach elementach...super zabawa...[shadow=red][/shadow][shadow=000080][/shadow][shadow=red][/shadow][shadow=000080][/shadow]

Awatar użytkownika
Koppel
Użytkownik
Posty: 500
Rejestracja: 24 lip 2005, 18:05
Lokalizacja: Gliwice

Re: [shadow=red]Zaczyna Dzialac [/shadow]

Post autor: Koppel » 27 lis 2005, 21:04

Adrian01 pisze:..no i trzeba bylo te liczbe przez dwa podzielic a w asemblerze to nie tak prosto
Aby podzielić liczbę przez 2 należy liczbę przesunąć o jedną pozycję w prawo. Jeśli się nie mylę:

Kod: Zaznacz cały

lsr rejestr
Ale instrukcję wyrzuciłem z "pamięci podręcznej", więc mogę się mylić ;]

Adrian01
-
Posty: 9
Rejestracja: 16 lip 2005, 14:30
Lokalizacja: Bogatynia
Kontakt:

assembler

Post autor: Adrian01 » 28 lis 2005, 7:04

Tez taki sposob znalazlem...ale ze robie w IAR System to okazalo sie ze lsr nie funcjonuje co by nie tracici czasu na szukanie polecenia poradzilem sobie inaczej

- zawsze to jakies rozwiazanie tez prawda...moze sie gdzie indziej przydac

- wiemnatomiast ze to z tam przesuwaniem to musi dzialac i przyjze sie temu napewno blizej...

- Dzieki

Awatar użytkownika
jejek
-
Posty: 63
Rejestracja: 12 lip 2005, 8:16
Lokalizacja: Będzin
Kontakt:

Post autor: jejek » 28 lis 2005, 15:51

Dodam jeszcze że (o ile dobrze mi się zdaje na ATmegach) można skonfigurować którym zboczem ma być wyzwalane przerwanie i wtedy już niczego nie musisz dzielić.

Jejek

ODPOWIEDZ