Witam!
Kolega poprosił mnie o zrobienie mini-komputerka do Opla Corsy, mającego wyświetlać dane na wyświetlaczu radia. Problem pojawił się, kiedy zechciałem wyświetlać na bieżąco prędkość - program zgłupiał (choć, raz na kilka odświeżeń wyświetlacza pojawiła się poprawna prędkość) a przy większych prędkościach Atmega ulegała resetom lub się zawiesza.
Wyświetlacz to standardowy TID, korzystający ze zmodyfikowanego I2C do komunikacji, prędkość zbierana jest z wbudowanego w skrzynię impulsatora dającego 16256 impulsów/kilometr. Poniżej program, opierający się na znalezionej w sieci metodzie wyświetlania danych na TID. W załączniku schemat urządzenia.
Cały kod:
A tutaj tylko część odpowiedzialna za obliczanie prędkości:
Proszę o pomoc, bo zadanie mnie odrobinę przerasta. Dawno nie bawiłem się mikrokontrolerami i większości rzeczy pozapominałem. Może zabrałem się za mierzenie prędkości od złej strony? Mam wrażenie, że problem leży w przerwaniach, które mogą pojawić się w trakcie przesyłania danych na ekran wyświetlacza i zakłócać transmisję. Jeśli ktoś, kto zna Bascoma trochę lepiej niż ja (a o to nie trudno) zna sposób na mierzenie prędkości z przyzwoitą rozdzielczością, który nie zakłóci wyświetlania, czekam. Układ jest na razie zmontowany "na pająka" i przelutowanie impulsów np. na wejście jakiegoś timera nie stanowi problemu.
Pozdrawiam!
Kolega poprosił mnie o zrobienie mini-komputerka do Opla Corsy, mającego wyświetlać dane na wyświetlaczu radia. Problem pojawił się, kiedy zechciałem wyświetlać na bieżąco prędkość - program zgłupiał (choć, raz na kilka odświeżeń wyświetlacza pojawiła się poprawna prędkość) a przy większych prędkościach Atmega ulegała resetom lub się zawiesza.
Wyświetlacz to standardowy TID, korzystający ze zmodyfikowanego I2C do komunikacji, prędkość zbierana jest z wbudowanego w skrzynię impulsatora dającego 16256 impulsów/kilometr. Poniżej program, opierający się na znalezionej w sieci metodzie wyświetlania danych na TID. W załączniku schemat urządzenia.
![[atmega8][Bascom] Zewnętrzne przerwania uniemożliwiają komunikację przez I2C [atmega8][Bascom] Zewnętrzne przerwania uniemożliwiają komunikację przez I2C](https://obrazki.elektroda.pl/1053894400_1334512003_thumb.jpg)
Cały kod:
Code: vbnet
A tutaj tylko część odpowiedzialna za obliczanie prędkości:
Code: vbnet
Proszę o pomoc, bo zadanie mnie odrobinę przerasta. Dawno nie bawiłem się mikrokontrolerami i większości rzeczy pozapominałem. Może zabrałem się za mierzenie prędkości od złej strony? Mam wrażenie, że problem leży w przerwaniach, które mogą pojawić się w trakcie przesyłania danych na ekran wyświetlacza i zakłócać transmisję. Jeśli ktoś, kto zna Bascoma trochę lepiej niż ja (a o to nie trudno) zna sposób na mierzenie prędkości z przyzwoitą rozdzielczością, który nie zakłóci wyświetlania, czekam. Układ jest na razie zmontowany "na pająka" i przelutowanie impulsów np. na wejście jakiegoś timera nie stanowi problemu.
Pozdrawiam!