Skocz do zawartości

timer0 bascom


sjacek

Pomocna odpowiedź

właśnie uczę się bascom'a i chciałem napisać prosty timer za pomocą przerwań ale coś jest nie tak, sprawdzałem kod ale nie widzę błędu, proszę o pomoc

kod:

$regfile = "m32def.dat"
$crystal = 16000000

Config Pind.0 = Output
Config Timer0 = Timer , Prescale = 256                      '256/250/250'

On Timer0 Odmierz_1s
Dim Licz_4ms As Byte
Enable Interrupts
Enable Timer0
Load Timer0 = 250


Do
Loop
End

Odmierz_1s:

Load Timer0 = 250
Incr Licz_4ms
If Licz_4ms = 250 Then
Licz_4ms = 0
Toggle Portd.0
End If

Return
Link do komentarza
Share on other sites

Ekspertem z Bascoma nie jestem, ale możliwe że to instrukcja config pind.0 bo ona nie bardzo ma sens, powinno być config portd.0 = output, rejestr pind zawiera realne stany logiczne na wyjściach/wejściach, służy tylko do odczytu. Myślę że to może pomóc, jak nie to pisz dalej. A jaki masz mikrokontroler, bo częstotliwość kwarcu jest duża?

Link do komentarza
Share on other sites

niestety to nie to, nic się nie zmieniło. Dioda zapala się na chwilę (jakby szybko mrugała) i gaśnie (diodę oczywiście mam na pind.0). A co do uC to Atmega 32

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

A próbowałeś uruchomić sobie to jako symulację? Dopisujesz bodajże $sim i jest taka opcja w BASCOM - możesz śledzić działanie krok po kroku i łatwo rozkminić co jest nie tak.

Link do komentarza
Share on other sites

o ile dobrze rozumiem tą symulację to napięcie na pind.0 wogóle się później nie zmienia, co jest zgodne z tym co się dzieje w rzeczywistości, w pętli zmieniają się stany jakiś innych wyprowadzeń których nie ogarniam

Link do komentarza
Share on other sites

Może najpierw pytanie pomocnicze 🙂 Czy jakiś inny program działał na tych ustawieniach, z tym programatorem i przy takiej częstotliwości kwarcu, bo według dokumentacji to 16 MHz jest maksymalną częstotliwością, więc raczej przy kwarcu zewnętrznym. Bo sam program wygląda poprawnie. I w sumie niepotrzebnie pytałem o uC, jest w kodzie że m32

edit: a co do uwagi o pind.0 i portd.0 to jednak błąd mój 🙂 możesz wpisać po config i port, i pin, BASCOM zrozumie oba, bo tak naprawdę to nie ustawia ani rejestru portd, ani pind, tylko ddrd (data direction regiser D)

Link do komentarza
Share on other sites

Coś się wymyśli. Jeżeli taki program działa przy

do

wait 1

toggle portd.0

loop

end

to rzeczywiście coś konkretnie z przerwaniami. Nie wiem jak bascom radzi sobie z obsługą stosu (uczyłem sie go aby pobieżnie, żeby miec podstawy do dalszych języków) ale z tym raczej nie powinno być problemu przy takich prostych przerwaniach.

edit:

Ewentualnie spróbuj:

Config portd = 1
portd = 254
Config Timer0 = Timer, Prescale 256
enable interrupts
dim licznik as byte
'nie dawaj na razie enable timer0, można wtedy zobaczyc co jest nie tak, czy to przerwania

do
if TOV0 = 1 then
incr licznik
  if licznik = 250 then
  licznik = 0
  toggle portd.0
  end if
TOV0 = 0
end if
loop
end
Link do komentarza
Share on other sites

TOV0 to rejestr ustawienia flagi przerwania od Timera0. Obsługuję tu przerwanie w sposób niestandardowy, bez wykorzystania stosu, bo chcę sprawdzić co nie działa. Jak pójdzie to bardziej wiadomo gdzie szukać problemu 🙂 A kompiluje się u Ciebie, a jeżeli tak to jak działa?

Link do komentarza
Share on other sites

o ile się nie mylę to jest wewnętrzny kwarc

No to zasadniczo jest problem, bo może się jednak mylisz ... ustawiałeś w tym jakieś fusebity? Bo może ona pracuje na 1MHz i stąd masz takie działanie? Sczytaj jakie są ustawione fusebity, wrzuć na forum i dalej pomyślimy co masz źle.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.