Witam
Mam problem z LPC1114 i impulsatorem, do rzeczy.
Kod wygląda tak
Kod przerwań tak:
Zmienna numerek(volatile int numerek=100;) powinna się inkrementować lub dekrementować przy ruchach impulsatora. Niestety wynik jest taki, że zmienna numerek zwiększa się lub zmniejsza o jakieś losowe wartości (najczęściej o jeden lub dwa chociaż zdarza się, że po jednym "tyknięciu" o 50). Czasami nawet zwiększa się zamiast zmniejszać i na odwrót.
Jaka jest tego przyczyna? Próbowałem zwiększać delayck (argument to ilość NOP) ale daje to dziwne rezultaty. Dodam, że do pinów impulsatora są dołączone malutkie kondensatory do masy by zniwelować drgania styków. Mierzyłem oscyloskopem czas przejścia ze stanu wysokiego na niski (falling edge) na pinach impulsatora i jest on trochę krótszy niż 100ns, nie występują żadne drgania stykow.
Będę wdzięczny za każdą pomoc.
Mam problem z LPC1114 i impulsatorem, do rzeczy.
Kod wygląda tak
Kod: C / C++
Kod przerwań tak:
Kod: C / C++
Zmienna numerek(volatile int numerek=100;) powinna się inkrementować lub dekrementować przy ruchach impulsatora. Niestety wynik jest taki, że zmienna numerek zwiększa się lub zmniejsza o jakieś losowe wartości (najczęściej o jeden lub dwa chociaż zdarza się, że po jednym "tyknięciu" o 50). Czasami nawet zwiększa się zamiast zmniejszać i na odwrót.
Jaka jest tego przyczyna? Próbowałem zwiększać delayck (argument to ilość NOP) ale daje to dziwne rezultaty. Dodam, że do pinów impulsatora są dołączone malutkie kondensatory do masy by zniwelować drgania styków. Mierzyłem oscyloskopem czas przejścia ze stanu wysokiego na niski (falling edge) na pinach impulsatora i jest on trochę krótszy niż 100ns, nie występują żadne drgania stykow.
Będę wdzięczny za każdą pomoc.