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

odczyt pinu gdy jest on ustawiony jako wyjście-Atmega

panbosman 22 Kwi 2010 10:42 2257 20
REKLAMA
  • #1 7990210
    panbosman
    Poziom 12  
    witam.
    czy możemy odczytać pin gdy jest on ustawiony jako wyjście.
    np.
    przy porównaniu pomiędzy OCR1x a TCNT1 na wyjściu ustawiany jest jakiś poziom a ja chcę go odczytać.
    Czy jest to poprawna metoda?

    albo może ktoś podpowie jak generować przerwanie w trybie PWM w momencie zrównania się OCR1x a TCNT1.
  • REKLAMA
  • Pomocny post
    #2 7990217
    tadzik85
    Poziom 38  
    Tak można sprawdzać stan wyjścia ustawionego jako wyjście.

    Istnieje przerwania COMPA. ale nie mam pojęcia jak to jest w trybie PWM. Musiałbyś doczytać w dokumentacji . Jeśli twój tryb PWM wykorzystuje porównanie z compA zapewne da się to zrobić.
  • #3 7990399
    panbosman
    Poziom 12  
    TIMER1 COMPA Timer / Licznik 1 dopasowanie porównania A

    Masz chyba rację ale jak to jest w szczegółach?
    Kiedy następuje przerwanie w PWM -korekcja fazy, przy odliczaniu w dół czy górę?

    Potrzebne mi jest rozróżnienie by PWM był poprawny fazowo.
    Jednak chyba zdecyduję się na czytanie pinu OC1A/ OC1B.
  • #4 7992987
    rpal
    Poziom 27  
    tadzik85 napisał:
    Tak można sprawdzać stan wyjścia ustawionego jako wyjście.
    Tylko co z tego że sprawdzisz kolego stan tego pinu i co ci to da ? Zobaczysz mniej więcej to samo co jest akurat wpisane w port.
  • #5 7993019
    tadzik85
    Poziom 38  
    Tylko, że kolega chce sprawdzać stan wyjścia które sterowane jest sprzętowo przez licznik. Poza tym zdarzyć się może ze stan któregoś piny zmieniany jest np. w przerwaniu a ty chcesz w pętli głównej sprawdzić jego stan. Sam to stosuje dość często. Np. sterując buzzer, który włączany jest podczas przyciskania klawisza klawiatury 4x4 i innych akcjach, wobec czego nie chce by przy obsłudze klawiatury buzzer był wyłączany. A w tym celu nie jest potrzebna jakaś flaga po prostu odczytujesz stan portu.
  • REKLAMA
  • #6 7993051
    rpal
    Poziom 27  
    tak czy inaczej odczytanie z pinu a odczytanie z portu niczym się nie różni bo odwzorowuje te same informacje z tą tylko różnicą ze z pinu jest minimalnie później :)
  • #7 7993209
    janbernat
    Poziom 38  
    Coś mi się tu nie zgadza.
    Odczytanie rejestru Pin- tak.
    Ale odczytanie rejestru Port- to jest odczytanie tego co było ustawione w tym rejestrze.
    A kierunek jest ustawiony w DDR.
  • #8 7993248
    Konto nie istnieje
    Poziom 1  
  • #9 7993258
    rpal
    Poziom 27  
    a co się Panu nie zgadza ? port jest wyjściem, w PORTx jest wpisana dana a na PINx ta dana jest odwzorowana. No chyba że akurat pin będąc wyjściem ktoś zewrze do masy albo do zasilania to może być coś innego niż się spodziewano :)
    Jak będę miał wolną chwile to sprawdzę to jednak jtag-iem :)
  • REKLAMA
  • #10 7993301
    Konto nie istnieje
    Poziom 1  
  • #11 7993338
    panbosman
    Poziom 12  
    Panowie.
    wracając do sedna sprawy:
    czy możliwe jest w trybie PWM poprawnym fazowo użycie przerwania
    TIMER1 COMPB?
  • #12 7993354
    Konto nie istnieje
    Poziom 1  
  • #13 7993372
    panbosman
    Poziom 12  
    Myślałem o tym ale to mało elegancko (wg mnie:D).
    Masz kolego pomysł jak odróżniać w przerwaniu czy jest z odliczania w dół czy w górę?
  • #14 7993377
    tadzik85
    Poziom 38  
    atom sprzętowo !
  • #15 7993397
    Konto nie istnieje
    Poziom 1  
  • #16 7993413
    tadzik85
    Poziom 38  
    A jak chcesz zrobić to programowo?
  • REKLAMA
  • #17 7993419
    Konto nie istnieje
    Poziom 1  
  • #18 7993429
    panbosman
    Poziom 12  
    programowo mogę np. sprawdzać Bit przepełnienia TOV1 i ustawiać flagę ale może są prostsze sposoby

    Dodano po 1 [minuty]:

    timer liczy do top a potem w dół do 0. To jest PWM poprawny fazowo
  • #19 7993444
    tadzik85
    Poziom 38  
    Od przepełnienia tez jest przerwanie. atom wszystko wina przecinka którego połknąłeś.
  • #20 7993509
    Konto nie istnieje
    Poziom 1  
  • #21 7993557
    panbosman
    Poziom 12  
    Dzięki Panowie za dysputę.
    Zamykam temacik.
REKLAMA