Miganie diody wywołane przerwaniem timera.

Witam. Ucze programować się w bascomie i zachciało mi się zrobić miganie diody które będzie wywołane przerwaniem Timera1 poczytałem i wydłubałem taki program:

Config Portb = &B11111111 ' cały port B jako wyjście Portb = &B00000000 Config Portd = &B1111100 Portd = &B111111

Config Timer1 = Timer , Prescale = 64

Enable Interrupts Enable Timer1

Timer1 = 125

On Timer1 Label1 Nosave

Do Loop

Label1:

Portb.0 = 1 Waitms 100 Portb.0 = 0 Waitms 100

Return

Jak powinien wyglądać poprawnie bo raczej ten coś nie bardzo chce działac...

Z góry dzięki za pomoc

Reply to
Jarek
Loading thread data ...

A jaki masz kwarc?? Bo jak coś w stylu 1MHz, a procek zapewne AVR (bo tego też nie podałeś!!) to przerwanie zostanie zgłoszone po około 16ms od startu :D... . No chyba, że ten Timer jest 16bit, to już lepiej... ale to musiałbyś napisać o jaki procek chodzi

Skracasz cykl Timera?? Hmmm... no są dwa wyjścia - dla Timera 8-bit skracasz o połowę czyli już masz 8ms... a dla Timera 16-bit to skrócenie jest nieznaczne :/

Czemu NoSave?? Poki główna pętla jest pusta, to może to nie przeszkadzać, ale w przyszłości może przeszkadzać!! Uważaj na to!!

Jesteś pewny, że podpiąłeś LEDa do odpowiedniego pinu??

Ostatnia linijka jest zbędna!! Po wygaszeniu diody opóźnienie do kolejnego zapalenia wykona Timer!! Marnowanie czasu w przerwaniu to poważny błąd w przypadku większości (bardziej rozbudowanych) programów!

A sprawdzałeś w symulatorze programowym?? Generalnie napisz jaki to procek oraz co i jak działa!! I czy działało coś prostszego?? Spróbuj może zrobić program taki, który w pętli ma taki zestaw komend: Do portb.0=1 waitms 250 portb.0=0 waitms 250 Loop

Powinien migać diodą ale bez używania przerwań. Druga sprawa:

-zadeklarowałeś BASCOMowi jakiego kwarcu używasz?? Bo bez tego nie możesz użyć komendy waitms, gdyż czasy mogą być zupełnie inne od zamierzonych!!

-jestes pewny, że dobrze dobrałeś częstotliwość kwarcu i prescale?? choć w przypadku przykładowego programu dzięki obecności waitms powinno to i tak działać!!...

-nie pamiętam już za dużo z Bascoma... czy linia Enable Timer1 oznacza włączenie zegara, czy zezwolenie na przerwania?? bo MUSZISZ zezwolic na przerwanie z timera 1, a czy go musisz włączać czy nie - to nie pamiętam, sprawdź w katalogu, albo poszukaj jak to się robi w BASCOMie :)... chyba komenda START....

Pozdrawiam Konop

Reply to
Konop

Ciach :-)

Więc tak mam procek ATTINY 2313 i kwarc 4Mhz przy dzieleniu przez 64 a później danie do timera1 = 125 powinno wg. mnie dać impuls co 2ms. Miganie diody led działa... pisałem pod ten procek już inne programy ale przerwania mi nie wychodzą.. jedyne co udało mi się z przerwań zrobić to przerwanie zewnętrzne poprzez int0 a z tym timerem to nie bardzo wiem jak zrobić przerwanie po przepełnieniu czyli jeżeli timer (akurat w tym przypadku) zliczy 125 impulsów... może ktoś by mi mógł napisać program który by działał?? A ja bym już z niego sobie załapał jak to robić... Z góry dziękuje za pomoc

Reply to
Jarek

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.