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 trwania impulsu
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Witam!
Prosze o pomoc w napisaniu procedury ktora zmiezy mi czas krotkich dodatnich impulsow podawanych na wej int0 lub int1.
Przedzial czasowy ilmpulsow to 1ms do 2ms.
z gory dziekuje
Prosze o pomoc w napisaniu procedury ktora zmiezy mi czas krotkich dodatnich impulsow podawanych na wej int0 lub int1.
Przedzial czasowy ilmpulsow to 1ms do 2ms.
z gory dziekuje
To jest pisane z "palca" (tzn szare komórki już się wyłączyły) potraktuj to jako szkic rozwiązania :
do tego samego sygnału są podłączone obydwa przerwania
config Int0 narastające Int1 opadające.
Obsługa Int0
Czas=0
Start Timer1 (bo jest dokladniejszy )
Return
Obsługa Int1
Stop Timer 1
cls lcd czas=0
Return.
niestety resztę musisz sprawdzić sam.
Pozdrawiam do poniedzialku.
do tego samego sygnału są podłączone obydwa przerwania
config Int0 narastające Int1 opadające.
Obsługa Int0
Czas=0
Start Timer1 (bo jest dokladniejszy )
Return
Obsługa Int1
Stop Timer 1
cls lcd czas=0
Return.
niestety resztę musisz sprawdzić sam.
Pozdrawiam do poniedzialku.
sablik może się mylę, ale TIMER0 od TIMER1 nie różnią się dokładnością, co najwyżej TIMER2 od pozostałych (chyba że chodzi o inny procek niż 8051)
po za tym zmienił bym "obsługę INT1", obsługa LCD jest długo trwała na przerwanie
obsluga INT
stop TIMER
setb wykonano
return
a w głównym programie sprawdza ów bit i w przypadku jego ustawienia wykonuje odpowiedni podprogram
po za tym zmienił bym "obsługę INT1", obsługa LCD jest długo trwała na przerwanie
obsluga INT
stop TIMER
setb wykonano
return
a w głównym programie sprawdza ów bit i w przypadku jego ustawienia wykonuje odpowiedni podprogram
Są trzy możliwości
- zastosować przerzutnik monostabilny np. 121 do uzyskania szpilki (trochę kiepski pomysł)
- zastosować At90S8535 lub 2313 i masz przerwania
- najlepsze rozwiązanie posiedzieć trochę w sieci, i napisać kawałek w asemblerze, jakiś czas próbowałem takiego ustawienia :
MCUCR.ISC11 = 1 'These 2 codes will set the INT1 to generate
MCUCR.ISC10 = 0 'an interrupt on the falling edge of a signal.
MCUCR.ISC01 = 1 'These 2 codes will set the INT0 to generate
MCUCR.ISC00 = 1 'an interrupt on the rising edge of a signal
Ale dla M32 nie było to dobre bo się czasem przywieszał
- zastosować przerzutnik monostabilny np. 121 do uzyskania szpilki (trochę kiepski pomysł)
- zastosować At90S8535 lub 2313 i masz przerwania
- najlepsze rozwiązanie posiedzieć trochę w sieci, i napisać kawałek w asemblerze, jakiś czas próbowałem takiego ustawienia :
MCUCR.ISC11 = 1 'These 2 codes will set the INT1 to generate
MCUCR.ISC10 = 0 'an interrupt on the falling edge of a signal.
MCUCR.ISC01 = 1 'These 2 codes will set the INT0 to generate
MCUCR.ISC00 = 1 'an interrupt on the rising edge of a signal
Ale dla M32 nie było to dobre bo się czasem przywieszał
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 37 gości