logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Kolizyjnosc przerwan Timera0 i Timera1 z poziomu BASCOMA

Arusek 04 Lis 2005 21:39 1021 5
REKLAMA
  • #1 1955746
    Arusek
    Poziom 14  
    Posty: 165
    Ocena: 1
    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(_at_)wp.pl
    Stanowi to dla mnie bardzo powazny problem.Prosze o kontakt naprawde zorientowanych w temacie.
    Z powazaniem
    Arkadiusz G
    [/b]
  • REKLAMA
  • #2 1955778
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Aleś tajemniczy. Napisał byś przynajmniej na jakim procku to robisz.
  • REKLAMA
  • #3 1955855
    Arusek
    Poziom 14  
    Posty: 165
    Ocena: 1
    Procek Atmega8
    ogolnie jest to przekaznik wielofunkcyjny z jednym wyswietlaczem 7seg i dwoma przyciskami i jeszcze 6 diod do godzin min i sek i ms i czasu T2.
    Wszystko dziala pieknie ale musze ograniczyc koniecznie pobor pradu z powodow odemnie nie zaleznych (odgronie ) i dlatego uzywam timerato do sterowania impulsowego przekaznika..
    i teraz po dodaniu tego przerwania wszystko mi sie wykrzacza :(
    jak obslugiwac dwa przerwania jednoczesnie?
  • REKLAMA
  • #4 1955886
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Nie znam BASCOMA ale te 15us wydaje się mi dosyć krytyczne czasowo. Może powinieneś to wygenerować sprzętowo a nie programowo.
    Co do obsługi tych dwóch przerwań to niema żadnych problemów pod warunkiem że nie dochodzi do "przeciążenia czasowego".
  • REKLAMA
  • #5 1955939
    Arusek
    Poziom 14  
    Posty: 165
    Ocena: 1
    O czy mmyslisz piszac sprzetowo?
    te 15 us jest stosowane w produkowanych przekaznikach czasowych w ktorych sa stosowane uP.
    probowalem roznych koncepcji.
    timer1 zglasza przerwanie co 100ms a timer0 co 15us
    w timerze0 kontroluje countert1 i jesli zbliza sie do przerwania to blokuje timer0 tuz przed przerwaniem t1. dochodzi do przerwania od timera1 i pod koniec obslugi zalaczam spowrotem timer0.
    niby powinno byc dobrze ale nie dzial jak trzeba.moze to ten bascom?
    nie mam tyle czasu zeby napisac to w c bo dopiero zaczynam a sam program zajmuje kolo 7kb. :( i co tu zrobic?
  • Pomocny post
    #6 1955952
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    W obsłudze przerwanie Timer1 zrób tylko ustawianie flagi, a załączanie i całą resztę przenieś do pętli głównej, właśnie tu sprawdzające stan tej flagi. Zamiast grzebać programowo W Timer1, wykorzystaj możliwości Timer1 compare, np w trybie PWM, bez używania przerwania.
    Ogólnie polecam :
    http://www.easy-soft.tsnet.pl/modules.php?name=News&file=article&sid=37
    --
    Pozdrawiam, Daniel
REKLAMA