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

Praca portu atmega8 w trzech stanach

polair 04 Kwi 2007 00:17 962 2
  • #1 04 Kwi 2007 00:17
    polair
    Poziom 10  

    Witam wszystkich chętnych do udzielenia mi pomocy:]

    Chce wykorzystać uC atmega8 do sprawowania kontroli nad układem MAX1452. z układem tym można się komunikować wykorzystując jego we/wy cyfrowe (DIO). aby prawidlowo współpracować z maxim'em musze mieć możliwość wprowadzenia pinu uC w stan wysokiej impedancji. Poza tym, ten sam pin musi na przemian sprawować funkcję we i wy cyfrowego. Na lini tej musi być stan wysoki, gdy nie ma transmisji między układami. Stąd wniosek, że powinienem zrobić pull up, co jednocześnie umożliwi mi wykorzystanie tego pinu jako we. Co z pracą jako wyjście i w stanie wys. impedancji? Jeżeli to konieczne, zakładam możliwość sterowania napięciem na rezystorze podciągającym. Czy mogę zrobić to w ten sposób, a potem ustawiać rejestry dla na wartości właściwe dla trybu który potrzebuje?

    Z góry dziękuje. Pozdrawiam. PAWEŁ

    0 2
  • #2 04 Kwi 2007 03:35
    ktrot
    Poziom 19  

    Cytat:
    Jeżeli to konieczne, zakładam możliwość sterowania napięciem na rezystorze podciągającym.

    Nie ma potrzeby. Wszystko co potrzebujesz avr zawiera. Dla uproszczenia będę sterował pinem B0 (PORT B)
    Code:

    DDRB=1    //pin jako wyjście
    PORTB=1   //pin w stanie wysokim (wyjście)
    DDRB=0    //pin jako wejście, podciąganie włączone (z powodu poprzedniej instrukcji)
    PORTB=0   //pin dalej jest wejściem ale podciąganie wyłaczone wysoka impedancja)


    Należy pamietać o odpowiednim ustawieniu portu przy przejściu z pracy jako wejście na wyjście (lub odwrotnie) przykład:
    Code:

    DDRB=0   //pin jako wejście
    PORTB=1  //podciąganie właczone
    //chcemy teraz ustawić pin jako wyjście w stanie niskim:
    PORTB=0  //odłączamy podciąganie
    DDRB=1   //ustawiamy pin jak wyjście (stan niski)
    //teraz ustawiamy pin jako wejście z podciąganiem:
    PORTB=1  //najpierw stan wysoki wyjścia
    DDRB=0   //teraz mamy wejście z podciąganiem


    Dodam jeszcze, że stan portu sprawdzamy rejestrem PINB a nie PORTB.

    0
  • #3 04 Kwi 2007 20:23
    polair
    Poziom 10  

    Wielkie dzięki ktrot :] Składam układ i testuje.

    Pozdrawiam. Paweł

    0