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] [C] - INT2 nie działa na nowym procesorze, możliwa flaga w rejestrze?

dbk20 25 Lip 2014 09:19 1539 9
REKLAMA
  • #1 13823573
    dbk20
    Poziom 10  
    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 / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 13823607
    Sparrowhawk
    Poziom 22  
    Ja raczej podejrzewał bym innym ustawienie fusebitów ;-)

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

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #3 13823642
    dbk20
    Poziom 10  
    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)
  • REKLAMA
  • #4 13823650
    tmf
    VIP Zasłużony dla elektroda
    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.
  • REKLAMA
  • #5 13823698
    dbk20
    Poziom 10  
    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.
  • REKLAMA
  • #6 13823809
    Fredy
    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".
  • #7 13823947
    dbk20
    Poziom 10  
    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 :(
  • #8 13824009
    tmf
    VIP Zasłużony dla elektroda
    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.
  • #9 13824111
    dbk20
    Poziom 10  
    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 :)
  • #10 13825067
    BlueDraco
    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ć.
REKLAMA