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

[Atmega8L][Bascom]Przekonfigurowanie portu w locie

atlantis2 07 Gru 2010 07:25 1408 5
  • #1 8836626
    atlantis2
    Poziom 17  
    Witam,

    Problem jest następujący: chcę skonstruować moduł - kartę przekaźników: 8 wyjść przekaźnikowych oraz 8 wejść/wyjść cyfrowych lub wejść analogowych. Całość będzie komunikowała się po USART, lecz pytanie czy takie rozwiązanie będzie dobre. Chcę aby jeden port (8 pinów) było uniwersalnych - tzn. aby każdy z nich można było skonfigurować jako wejście, wejście z pullup'em, wyjście, wejście analogowe odbierając odpowiedni rozkaz z USART'a (czyli zmiana trybu portu podczas wykonywania programu). Czy takie rozwiązanie w ogóle ma sens biorąc pod uwagę brak jakiegokolwiek zabezpieczenia portu? Kolejne pytanie czy wewnętrzny pullup dotyczy całego portu czy można go włączyć tylko na konkretnym pinie? I na koniec czy Atmega8L zasilana napięciem 3,3V toleruje 5V na porcie?
  • #2 8837482
    FastProject
    Poziom 28  
    Zmiana kierunku portu jest jak najbardziej możliwa podczas działania programu-także jednego pinu. Wystarczy zmieniać odpowiednie bity w rejestrze DDRx odpowiedniego portu i ustawiać rejestr PORTx w zależności od kierunku czy funkcji portu.

    Nie wiem co masz na myśli pisząc:
    Cytat:
    wejście analogowe odbierając odpowiedni rozkaz z USART'a


    A na Atmega8L zasilaną napięciem 3,3V nie możesz podać bezpośrednio napięcia 5V. W przypadku zasilania napięciem 3,3V maksymalne napięcie na pinie portu to Vcc+0,5V, czyli w twoim przypadku 3,8V.

    Proponuję czasami zajrzeć do dokumentacji procesora...tam jest wszystko o co pytałeś.
  • #3 8837723
    atlantis2
    Poziom 17  
    Daro_Elektronik napisał:

    Nie wiem co masz na myśli pisząc:
    Cytat:
    wejście analogowe odbierając odpowiedni rozkaz z USART'a



    Generalnie chodzi mi o coś takiego, że wysyłam rozkaz z terminala RS232, np. SET PORTB.7=ADC i od tego momentu ten port skonfigurowany będzie jako wejście analogowe, analogicznie np. SET PORTB.7=OUT i już port będzie wyjściem cyfrowym...
  • Pomocny post
    #4 8837788
    FastProject
    Poziom 28  
    Rozumiem, o co ci chodzi, ale nie ma w Bascomie instrukcji z taką składnią jak napisałeś...SET PORTB.7=ADC.

    Po odebraniu komendy, czy ramki, czy jak tam wolisz sterować procesorem przez RS232, musisz zmienić stan i kierunek portów za pomocą wspomnianych rejestrów.

    Np:
    
    If key="A" then
       DDRC=&b01010101
       PORTC=&b10101010
    end if
    


    "KEY" Pobierasz z USARTa za pomocą wybranej instrukcji.
  • #5 8840937
    atlantis2
    Poziom 17  
    Wiem, że nie ma takiej instrukcji - chodziło mi tu o przykład własnej komendy, po której odebraniu program wykona zmianę w rejestrach ;) Tak czy inaczej dziękuję za udzielone informacje.
  • #6 8840988
    galusz
    Poziom 15  
    Co do 5V to Atmega ma wewnątrz diody zabezpieczające, więc zawsze można podpiąć 5V przez rezystor wpięty szeregowo. Nie pamiętam dokładnie ile wytrzymują te diody ( chyba 8 mA??), więc 1kOhm powinno wystarczyć.
REKLAMA