Witam.
CZy jest ktos kto jest dobrze obeznany w obsludze przerwan z poziomu BASCOMA.
procek - ATMEGA8
Otoz moj problem polega na konflikcie tych dwoch przerwan.
Timer1 obsluguje mi odliczanie czasu np 100ms.
tzn po nastawionym czasie zalacza sie przekaznik poprzez podanie syg wysokiego na tranzystor.i ustawiana jest flaga zalczenia
Timer0 sluzy do podawania sygnalu prostokatnego o czasie 15us.
tzn po zalaczeniu przez Timer1 pinu sterujacego tranzystorem przekaznika.nastepuje zmaina syg na sterowanie tranzystrem syg prostokatnym w celu zmniejszenia poboru pradu przez przekaznik.
Po zlozeniu programu w calosc jakos te dwa przerwania komplikuja mi reszte programu.(programowanie czasu na 7seg,podglad itp)
jak obslugiwac timery aby oba poprawnie odmierzaly czasy i przerwania i sie nawzajem nie blokowaly?
Pozdrawiam
moj gg 5473355
meil Arusek(małpa)wp.pl
Stanowi to dla mnie bardzo powazny problem.Prosze o kontakt naprawde zorientowanych w temacie.
Z powazaniem
Arkadiusz G
Kolizyjnosc przerwan Timera0 oraz Timera1 z poziomu BASCOMA
Jaka jest częstotliwość zegara? Jeśli wywołujesz przerwanie co 15us, przy rezonatorze 4MHz będzieo ono się "odzywać" co 60cykli. Aby program wogóle miał szanse działać musisz zmieścić się w krótszym czasie z obsługą przerwania. Sensowne wydaje się poświęcenie na to max 30cykli. Jednak wtedy wykonywanie programu głównego będzie 2x wolniejsze niż w chwili gdy przerwanie będzie wyłączone.
Optymalizacja w BASCOMie to sprawa całkowicie mi obca. Mogę polecić jedynie dwa rozwiązania:
1. Napisanie procedury w asemblerze (pamiętać o NOSAVE i samemu zająć się zapisaniem potrzebnych rejestrów).
2. Wykorzystanie sprzętowego PWM - wtedy obsługa przerwania wogóle jest zbędna
Optymalizacja w BASCOMie to sprawa całkowicie mi obca. Mogę polecić jedynie dwa rozwiązania:
1. Napisanie procedury w asemblerze (pamiętać o NOSAVE i samemu zająć się zapisaniem potrzebnych rejestrów).
2. Wykorzystanie sprzętowego PWM - wtedy obsługa przerwania wogóle jest zbędna