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

[atmega32][C] - stan wysoki - niskie napięcie

merazmus 05 Lis 2012 10:51 1539 6
  • #1 05 Lis 2012 10:51
    merazmus
    Poziom 2  

    Witam,
    Dopiero rozpoczynam moją zabawę z programowaniem mikrokontrolerów i chciałem trochę pobawić się 7-segmentowym wyświetlaczem LED. Napisałem prosty program, który powinien zapalić wszystkie jego segmenty. Katody podłączyłem do portu C, a anodę do portu D.

    Code:
    #include <avr/io.h>
    

    int main(void)
    {
       DDRC = 0xFF;
       DDRD = 0xFF;
       
        while(1)
        {
          PORTC = 0x00;
          PORTD = 0xFF;
        }
    }

    Problem w tym, że świeci się tylko połowa segmentów. Po zmierzeniu napięcia pomiędzy portem PD0, a PC0..PC7 okazuje się, że na niektórych wyjściach portu C jest 4,7V, na niektórych 1,7V, a na pozostałych 0V. Co może być przyczyną?

    0 6
  • CControls
  • CControls
  • #3 05 Lis 2012 11:43
    perlon
    Poziom 19  

    Dokładnie jest to napisane w DS s.60

    Code:

    • TDI – Port C, Bit 5
    TDI, JTAG Test Data In: Serial input data to be shifted in to the Instruction Register or Data Reg-ister (scan chains). When the JTAG interface is enabled, this pin can not be used as an I/O pin.
    • TDO – Port C, Bit 4
    TDO, JTAG Test Data Out: Serial output data from Instruction Register or Data Register. When
    the JTAG interface is enabled, this pin can not be used as an I/O pin.
    The TD0 pin is tri-stated unless TAP states that shifts out data are entered.
    • TMS – Port C, Bit 3
    TMS, JTAG Test Mode Select: This pin is used for navigating through the TAP-controller state
    machine. When the JTAG interface is enabled, this pin can not be used as an I/O pin.
    • TCK – Port C, Bit 2
    TCK, JTAG Test Clock: JTAG operation is synchronous to TCK. When the JTAG interface is
    enabled, this pin can not be used as an I/O pin.


    Z programu nie wynika, że JTAG jest wyłączony więc diody z pinów C2,C3,C4,C5 nie będą świecić.
    Na marginesie nic autor nie napisał w temacie rezystorów ograniczających prąd LED'ów. Czyżby ich nie było?

    0
  • #5 05 Lis 2012 12:35
    perlon
    Poziom 19  

    Eee...
    Żeby nie ruszać JTAG'a chyba katody do portu D, anoda do VCC lub do pinu innego niż C2...C5 ale przez tranzystor bo pin nie wydoli prądowo. Przecież katody na porcie C autor już miał i świecą tylko niektóre.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #6 05 Lis 2012 13:20
    merazmus
    Poziom 2  

    Faktycznie, wyłączenie JTAG pomogło. Teraz wszystkie piny portu C mają około 4,7V. Rozumiem, że akurat te piny są używane do programowania przez JTAG i przez to nie można ich używać dopóki się tego nie wyłączy?

    Czy należy stosować rezystory ograniczające prąd przy podłączaniu diody? Gdzieś czytałem, że do atmegi nie trzeba podłączać rezystora zewnętrznego, ponieważ przy ustawieniu portu jako wyjściowy, jest podłączany wewnętrzny rezystor.

    0
  • #7 05 Lis 2012 13:41
    perlon
    Poziom 19  

    ATmegi nie mają wewnętrznych rezystorów w trybie Output. Podłączenie diody bez rezystorów niechybnie prowadzi do wydatku w postaci nowego kontrolera i/lub wyświetlacza.

    0