Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[atmega32] [c] - int2 - działa i nie działa

25 Lip 2014 09:19 1209 9
  • Poziom 9  
    Wrzucam kawałek kodu z którym mam problem,

    problem taki że gdy wgram na jeden procesor na którym wcześniej cos robiłem - działa, wgrywam na nowy, nie działa int2 i tylko to.

    podejrzewam jakąś flagę w jakimś rejestrze ale poddaje sie po dwóch wieczorach szukania, może ktoś z kolegów pomoze?

    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Poziom 21  
    Ja raczej podejrzewał bym innym ustawienie fusebitów ;-)

    I jesteś pewny co do właściwego działania tego:

    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Poziom 9  
    jtag wylaczony, 8mhz zegarek przestwaiony wewnetrzny, i power fast rise ustawione.

    tyle z fuseow

    co int0 i int1 działa bez problemu (tak chciałem bez podciagania bo enkoder dosc szybko impulsuje a podciaganie do vcc robi mi parabole na oscyloskopie na jednym zboczu)
  • Moderator Mikrokontrolery Projektowanie
    Podłączyłeś enkoder do MCU bez podciągania? Tak być nie może, bo enkoder daje np. masę i wyjście rozwarte, coś musi do Vcc podciągać. Poza tym podłączanie wszelkiego typu switchy pod przerwania nie jest rozsądne.
  • Poziom 9  
    tmf napisał:
    Podłączyłeś enkoder do MCU bez podciągania? Tak być nie może, bo enkoder daje np. masę i wyjście rozwarte, coś musi do Vcc podciągać. Poza tym podłączanie wszelkiego typu switchy pod przerwania nie jest rozsądne.


    nikt nie mówi o podłączaniu tu switchy. mam czysciutkie prostokaciki takie jakie chcem.

    nie rozwiazuje to problemu ze na jednym procesorze to działa na drugim nie. jeden i drugi to atmega32.

    jak zamienie je w płytkach miejscami to jest tak jak napisalem wczesniej : sprawa programowa.
  • Poziom 27  
    dbk20 napisał:


    co int0 i int1 działa bez problemu (tak chciałem bez podciagania bo enkoder dosc szybko impulsuje a podciaganie do vcc robi mi parabole na oscyloskopie na jednym zboczu)


    to nie jest logiczne. Raczej odwrotnie to by miało sens .
    Podciągnięcie nie może pogorszyć kształtu impulsu, raczej jego brak.
    Sprawdź, czy to wyjście co tak reaguje na podciągnięcie nie jest "trafione".
  • Poziom 9  
    Fredy napisał:
    dbk20 napisał:


    co int0 i int1 działa bez problemu (tak chciałem bez podciagania bo enkoder dosc szybko impulsuje a podciaganie do vcc robi mi parabole na oscyloskopie na jednym zboczu)


    to nie jest logiczne. Raczej odwrotnie to by miało sens .
    Podciągnięcie nie może pogorszyć kształtu impulsu, raczej jego brak.
    Sprawdź, czy to wyjście co tak reaguje na podciągnięcie nie jest "trafione".


    przypominam że jest to temat o braku przerwania INT2,
    przypominam ze zdiagnozowano problem programowy.
    przypominam ze na procesorze "używanym" robie wsad programu i viola!-działa,
    przypominam że jakikolwiek nowy porcesor wezme i wrzuce TEN SAM wsad - NIE DZIAŁA.
    przypominam że o fusebitach było chwilę wyżej.

    analizując powyższe, wcześniej na "uzywanym" procesorze gdzies do jakiegos rejestru musiałem wstawic flage tudziez ja wyzerowac zeby nie bylo dyskusji, i w tym programie brakuje prawdopodobnie takiego wpisu w jakis rejestr kroty tamten procesor mial (a bo sobie cos pisalem wgrywalem, pisalem, wgrywalem i tak dalej)

    proszę skupcie się na kodzie :(
  • Moderator Mikrokontrolery Projektowanie
    dbk20 napisał:
    tmf napisał:
    Podłączyłeś enkoder do MCU bez podciągania? Tak być nie może, bo enkoder daje np. masę i wyjście rozwarte, coś musi do Vcc podciągać. Poza tym podłączanie wszelkiego typu switchy pod przerwania nie jest rozsądne.


    nikt nie mówi o podłączaniu tu switchy. mam czysciutkie prostokaciki takie jakie chcem.

    nie rozwiazuje to problemu ze na jednym procesorze to działa na drugim nie. jeden i drugi to atmega32.

    jak zamienie je w płytkach miejscami to jest tak jak napisalem wczesniej : sprawa programowa.


    Enkoder to nic innego jakdwa (trzy) zwierane naprzemiennie switche i tak też musi jego działanie być rozpatrywane, w efekcie rezystory podciągające są absolutnie niezbędne. Bez nich właśnie raz to działa raz nie. Być może włączasz wewnętrzny podciągacz, lecz nie na każdym pinie związanym z enkoderem i stąd problem. Na sprawdzanie czym się wykonanie programu różni pomiędzy prockami pomaga symulator.
  • Poziom 9  
    tmf napisał:


    Enkoder to nic innego jakdwa (trzy) zwierane naprzemiennie switche i tak też musi jego działanie być rozpatrywane, w efekcie rezystory podciągające są absolutnie niezbędne. Bez nich właśnie raz to działa raz nie. Być może włączasz wewnętrzny podciągacz, lecz nie na każdym pinie związanym z enkoderem i stąd problem. Na sprawdzanie czym się wykonanie programu różni pomiędzy prockami pomaga symulator.



    1. enkoder jest podlaczony do int0 i int1 - działa wyśmienicie! tak jak do tej pory - faktycznie nie nadazalem gasic tranzystora z tad wziala mi sie parabola, wiec temat uciety musi zostac.
    2. INT2 o który toczy sie batalia - NADAL NIE DZIAŁA - niezaleznie czy dotkne go rezystorem od masy czy od vcc przerwanie NIE JEST WYZWALANE,
    3. Nadal na "uzywanym" procesorze działa a na 5 (pięciu słownie) nowych ten wsad nie chodzi.

    pozatym to jest to enkoder liniowy magnetyczny na ktorym nie ma czegos takiego jak "drgajace" styki a na wyjsciu, oraz, akurat ten, wystawia logiczne +5 i logiczne 0 na kanałach A i B wiec nie wiem o co te "halo" było z rezystorami. tym bardziej ze dziala na jednym i drugim i nie tego dotyczy problem

    problem rozwiązany : włączyć rezystory podciągające i je wyłączyć. ale tylko dla int2, dla int 0 i 1 nie trzeba bylo.

    omg. czary. ale już rozumiem o co chodzi.

    do zamknięcia :)
  • Specjalista - Mikrokontrolery
    Nie rozumiesz, o co chodzi i nadal nie działa, a jeśli działa, to przez czysty przypadek. Zmieni się np. wilgotność powietrza i przestanie działać.