logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmega32 - błędne zliczanie impulsów zewnętrznych na liczniku T0

uzi18 09 Kwi 2008 10:53 1586 3
REKLAMA
  • #1 5010526
    uzi18
    Poziom 24  
    Posty: 752
    Pomógł: 37
    Ocena: 82
    Walcze z licznikiem na Atmega 32 inicjacja wyglada tak :

    
    DDRB = 0xff; // DDRB jako wyjscie
    // t0 JAKO LICZNIK
    PORTB |= _BV(0);    // BEZ PODCIAGNIECIA NIE CHCE LICZYC
    TCCR0 = _BV(CS01)|_BV(CS02); //_BV(CS00)|  cs0 rosnace/~opadajace zbocze
    TCNT0 = 200; 
    TIMSK |= _BV(TOIE0);  // T0 wywoluje przerwanie
    


    Caly problem polega na tym ze nie wiem czmu bez ustawienia w PORTB0 bitu 0 nie chce liczyc zewnetrznych impulsow.

    Pin jest podciagniety zewnetrznie drabinka 4k7 i elektrolit 1u od pina do masy .

    Max czestotoliwosc to ok. 20Hz

    Bez podciagniecia wewnetrznego licznik zwieksza sie tylko o 1 (wartosc 201) i dalej nie liczy.
    Za to z podciagnieciem potrafi zliczyc kilka-kilkadziesiat impulsow na raz.

    Prosilbym o pomoc w tej sprawie.
    Wole jednak uczyc sie pisac programy w C niz w Bascom.

    Moze to jest problem z aplikacja i zle dobranym filtrem RC ale na innych elementach wcale nie jest lepiej.

    Pozdrawiam
    Bartłomiej Zimoń
  • REKLAMA
  • REKLAMA
  • #3 5010596
    zerpo
    Poziom 22  
    Posty: 463
    Pomógł: 50
    Ocena: 134
    DDRB = 0xff; // DDRB jako wyjscie

    Dlaczego ustawiasz PORTB jak wYjście, a nie jako wEjście?
    Spróbuj ustawić jako wejście, może zadziała.
  • #4 5010987
    uzi18
    Poziom 24  
    Posty: 752
    Pomógł: 37
    Ocena: 82
    Nie wiem taki byl przyklad. Bezmyslnie skopiowalem.

    Moze i macie racje.
    Powinienem wykonac jeszcze :
    DDRB &= ~(_BV(PB0));


    Sprawdze przy najblizszej okazji i dam znac.

    Powiem jeszcze tylko ze licznik przestal swirowac jak tylko podlaczylem pod niego docelowy uklad z wyjsciem OC do zliczania.
    Moj glowny blad (podczas testow) polegal na tym ze z przycisku byly generowane impulsy zamiast z tranzystora - jak widac czasem szumy stykow psuja cala impreze.

    Dzieki wam wielkie.
REKLAMA