Wróżenie z fusów - ATtiny24

Witam Walczę z problemem i nie wiem o co chodzi, może przeoczyłem coś oczywistego. ATTiny 24 w roli sterownika do silnika prądu stałego (zmiana kierunku obrotów, miękki start itp. pierdoły) Do procka przyłączone są dwa przekaźniki: główny do portu A pin 3 lub 5 kierunkowy do portu B pin 1

Sterowanie obrotami za pomocą potencjometru, przetwornik AD skonfigurowany z zewnętrznym napięciem odniesienia 5V przy działa z rozdzielczością 10 bitów. Pomiar na Port A pin 2 Wynik pomiaru jest bezpośrednio wkładany do rejestru sterującego 10 bitowym PWM. Pwm działa na wyjściu portu A pin 6

Wszystko działa ładnie, do momentu przekroczenia przez potencjometr progu 1V. Powyżej tego ATTiny wyłącza przekaźnik główny. Wciśnięcie ponownie przycisku start powoduje załączenie przekaźnika na moment i ponowne otwarcie. Sprawdzałem na dwóch pinach portu A. Takie same objawy. W tym samym czasie Port B działa tak jak powinien. Przekaźnik trzyma kiedy trzeba, więc to nie reset procka. O co może chodzić?

Reply to
TomaszB
Loading thread data ...

TomaszB pisze:

I to my mamy wróżyć? Skąd możemy wiedzieć w jaki sposób sterujesz tym przekaźnikiem?

Dariusz Żołna

Reply to
Dariusz Zolna

Dariusz Zolna pisze:

Sterowanie jest bardzo proste, mam dwie procedury:

.equ przek_gl_port = PORTA .equ przek_gl_pin = 3

uruchom: sbi przek_gl_port,przek_gl_pin ret zatrzymaj: cbi przek_gl_port,przek_gl_pin ret

Procedury są wywoływane odpowiednio na wciśniecie przycisku. Wywołanie tych procedur jest tylko w obsłudze przerwanie zewnętrznego INT0. W symulatorze AVRStudio wszystko działa jak trzeba.

Reply to
TomaszB

TomaszB pisze:

A odpowiednio filtrujesz drgania tego przycisku?

Reply to
Adam Dybkowski

TomaszB pisze:

A to przerwanie ma być wywoływane przez jakie zdarzenie? Spróbuj opisać co i w jakiej sytuacji powinno się dziać, a co się dzieje.

Dariusz Żołna

Reply to
Dariusz Zolna

Dariusz Zolna pisze:

Zdarzenie jest wywoływane zboczem opadającym na pinie INT0 mikrokontrolera. Cały układ klawiatury wygląda tak, że 3 piny są ustawione jako wejście z podciąganiem i po wciśnięciu przycisku zwierają do masy. Do każdego z przycisku, przez diodę jest podłączony pin INT0. Wciśnięcie każdego powoduje wyzwolenie przerwania. W przerwaniu najpierw czekam 100ms żeby upewnić się, że to jest zamierzone wciśnięcie, na koniec czekam kolejnych 100ms, żeby upewnić się, że puszczony. to działa jak powinno. Bez wciśnięcia przycisku STOP żadna inna procedura nie wywołuje rozłączenia przekaźnika.

Opis tego co się dzieje:

  1. Potencjometr jest ustawiony w skrajnym, lewym położeniu. Mierzone napięcie = 0.
  2. Wciskam przycisk START/STOP i przekaźnik się załącza. Kolejne wciśnięcie spowoduje jego rozłączenie, tak ma być
  3. Przekręcenie potencjometru powyżej 1V powoduje automatyczne rozłączenie przekaźnika (tak nie powinno być)

układ zachowuje się analogicznie, kiedy potencjometr jest ustawiony na maksymalne prawe położenie, mierzone napięcie to 5V. Przy obniżaniu napięcia o około 1V też następuje wyłączenie przekaźnika.

Reply to
TomaszB

TomaszB pisze:

A nie masz przypadkiem jakiegoś problemu z nachodzeniem na siebie zmiennych w pamięci? Jednej, która trzyma odczyt z ADC, a drugiej ze stanem przekaźnika? Trochę to tak wygląda jakby miało związek ze zmianą młodszego bitu, drugiego bajtu z ADC.

Dariusz Żołna

Reply to
Dariusz Zolna

TomaszB pisze:

A może źle skonfigurowałeś układ przerwań i te procedury wywoływane są zmianem stanu logicznego na dowolnym pinie?

PH

Reply to
Paweł Hadam

Paweł Hadam pisze:

Procedura siedzi w przerwaniu INT0. Przerwania od zmiany stanu pinów PCINT0 oraz PCINT1 są nieużywane. Rejestry związane z przerwaniem od stanu pinów są wyzerowane: PCMSK0, PCMSK1, GIFR (PCIF1, PCIF0). To nie to. Sprawdzę, ale nie wiem jeszcze jak, co ze zmiennymi. Dzięki za podpowiedzi:) Pozdrawiam

Reply to
TomaszB

Paweł Hadam pisze:

Błąd był dużo prostszy i bardziej banalny. W procedurze ustawiania prędkości, zamiast rjmp użyłem rcall. Po zmianie wszystko działa jak trzeba :) Pozdrawiam TomaszB

Reply to
TomaszB

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.