Impulsator obrotowy

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
Daymian
-
Posty: 82
Rejestracja: 25 lip 2006, 21:23
Lokalizacja: Bochnia
Kontakt:

Impulsator obrotowy

Post autor: Daymian » 26 lip 2006, 14:55

Jak napisać program (W Bascomie) (i/lub) jak podłonczyć impulsator obrotowy do procesora AVRtak żeby przy szybkich obrotach ośką nie gubiło impulsów ani nie zliczało w przeciwna strone. Jak kręce powoli to wszystko jest ok, ale szybkie obroty to albo gubienie impulsów albo zlicznie w przeciwną strone. Mam impulastor ten z 3 wyjściami-2 syg. a trzeci to do masy lub plusa. Wie ktoś co z tym zrobić i jak temu zaradzić?

tasza
Użytkownik
Posty: 1391
Rejestracja: 21 lut 2005, 15:02

Post autor: tasza » 26 lip 2006, 15:05

proszę poczytać:
:arrow: http://forum.mikrokontrolery.net/viewto ... =1104#1104 ( na dole jest link do artykułu z EdW :idea: )

tasza

Daymian
-
Posty: 82
Rejestracja: 25 lip 2006, 21:23
Lokalizacja: Bochnia
Kontakt:

Post autor: Daymian » 27 lip 2006, 8:34

Dzięki za link ale... są drobne problemy. Aby mikroprosesor widział każdą zmiane stanu na pinie impulsatora wyzwalanie przerwania musi być ustawione ne zmiane zbocza (w Bascomie "Config INTx = Change") Ale niewiem jak to jest z tą konfiguracją tych przerwań? W Helpie do Bascoma pisze:
"Uwaga! W układach AVR Mega wyzwalanie przerwania na liniach INT0-INT3 odbywa sie na skutek niskiego poziomu (LOW LEWEL) i nie jest on konfigurowany."
Jednak jak kompiluje program to zmieniajac konfiguracje INT0-INT3 na inną niż "LOW LEVEL" dla nikekórych procesorów program sie skompiluje a dla niektórych nie. Od czego to zalezy? Czy to luka w Bascomie czy pomyłka w Helpie do Bascoma?
A wracając do impulsatora to nie ma jakiegoś innego sposobu niż te przerwania? Bo przerwania które możńa ustawić na "Change" teoretycznie to tylko INT4-INT7 a to jest np. AtMega128...ale bez przesady żeby stosować takiego giganta (w dodatku ciężkiego w montażu i wymagającego precyzyjniej zrobionej płytki) do zwykłego regulatora temperatury z impulsatorem obrotowym. Chyba że takie drobne udogodnienie bedzie okupione takim wielkim kosztem?:(

tasza
Użytkownik
Posty: 1391
Rejestracja: 21 lut 2005, 15:02

Post autor: tasza » 27 lip 2006, 8:43

Daymian pisze:A wracając do impulsatora to nie ma jakiegoś innego sposobu niż te przerwania?
przecież napisałam tam także o drugiej metodzie...wystarczy poczytać i się zastanowić.
podsumowując: uruchamiasz jakikolwiek timer, tak aby dość często zgłaszał przerwanie,
w obsłudze przerwania obserwujesz stan jednej z linii impulsatora, po wykryciu zmiany
badasz stan drugiej linii - w zależności czy to 1 czy 0 rozpoznajesz kierunek obrotu.

Daymian
-
Posty: 82
Rejestracja: 25 lip 2006, 21:23
Lokalizacja: Bochnia
Kontakt:

Post autor: Daymian » 27 lip 2006, 8:50

A potrafisz rozwiązać ten niuans z tą konfiguracją tych przerwań INT0-INT3?

[ Dodano: 2006-07-27, 10:06 ]
A te obsługe impulsatora to możesz umieścić na Elportalu, ja i koledzy po fachu będziemy Ci wdzieczni :grin:

tasza
Użytkownik
Posty: 1391
Rejestracja: 21 lut 2005, 15:02

Post autor: tasza » 27 lip 2006, 9:14

Daymian pisze:"Uwaga! W układach AVR Mega wyzwalanie przerwania na liniach INT0-INT3 odbywa sie na skutek niskiego poziomu (LOW LEWEL) i nie jest on konfigurowany.
:arrow: http://atmel.com/dyn/resources/prod_doc ... oc2486.pdf (ATmega8)
strona 66, "External Interrupts"
atmel pisze: The external interrupts can be triggered by a falling or rising edge or a low level.
This is set up as indicated in the specification for the MCU Control Register – MCUCR.
odpowiednią konfigurację rejestru MCUCR możesz ustawić wstawką assemblerową :idea:

tasza

Daymian
-
Posty: 82
Rejestracja: 25 lip 2006, 21:23
Lokalizacja: Bochnia
Kontakt:

Post autor: Daymian » 27 lip 2006, 9:27

A mógłbyś mi takową napisać? Dal Ciebie to pewnie pryszcz...dla mnie nie :sad:

[ Dodano: 2006-07-27, 10:30 ]
A co do tego z Data Sheets AtMega8 to tam jest napisane że przerwanie może być skonfigurowane na opadające, narastające, poziomem niskim...a może być skonfigurowane na ZMIANE stanu?

tasza
Użytkownik
Posty: 1391
Rejestracja: 21 lut 2005, 15:02

Post autor: tasza » 27 lip 2006, 10:11

Daymian pisze:A mógłbyś mi takową napisać?
mogłabym... :idea:

tyle że ja omijam Bascom z daleka, napisałam w ciemno, z helpa...

Kod: Zaznacz cały

$asm
ldi R27, $05 ' int0, int1 uczulone na dowolną zmianę stanu
!out MCUCR, R27
$end asm
i nie wiem jaki wpływ będzie miała taka modyfikacja MCUCR na resztę kodu....
lub raczej - czy bascom nie poustawia tego rejestru potem tak jak będzie sam chciał...
po prostu poeksperymentuj
Daymian pisze:a może być skonfigurowane na ZMIANE stanu?
Obrazek

tasza

Daymian
-
Posty: 82
Rejestracja: 25 lip 2006, 21:23
Lokalizacja: Bochnia
Kontakt:

Post autor: Daymian » 27 lip 2006, 11:11

Dzięki :grin: Rzeczywiście wszystko jest.
A wstawke spróbuje wykorzystać, może działa.

ODPOWIEDZ