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.

Sprawdzenie konfiguracji w C na atmega32...

krzysb91 17 Maj 2012 00:17 886 1
  • #1 17 Maj 2012 00:17
    krzysb91
    Poziom 6  

    Witajcie.
    Piszę w C na atmega32.
    Mam problem bo nie widzę niektórych sygnałów z czujników zadawanych na procek.
    Chce skonfigurować 12 wejść z pull-up z czego 8 to cały portC, a kolejne 4 to bajt wyższy portu A.

    Wyłączyłem JTAG a mimo to nadal nie działa:

    Code:

                DDRA=0x0C;
                PORTA|=0xF0;
                PORTC=0xFF;
                DDRC=0x00;

    // zczytywanie stanu z pinu:
    int i;
    for(i=0;i<12;i++){

    czujniki [i]='0';
    }
    if((PINC & 0x01)){
       czujniki[0]='1';
    }
    if((PINC & 0x02)){
       czujniki[1]='1';
    }
    if((PINC & 0x04)){
       czujniki[2]='1';
    }
    if((PINC & 0x08)){
       czujniki[3]='1';
    }
    if((PINC & 0x10)){
       czujniki[4]='1';
    }
    if((PINC & 0x20)){
       czujniki[5]='1';
    }
    if((PINC & 0x40)){
       czujniki[6]='1';
    }
    if((PINC & 0x80)){
       czujniki[7]='1';
    }
    if((PINA & 0x80)){
       czujniki[8]='1';
    }
    if((PINA & 0x40)){
       czujniki[9]='1';
    }
    if((PINA & 0x20)){
       czujniki[10]='1';
    }
    if((PINA & 0x10)){
       czujniki[11]='1';
    }



    Dzięki wielkie.
    Przełomem był i tak JTAG, ale nadal nie wiem co jest nie tam.

    0 1
  • #2 17 Maj 2012 07:48
    pawel-jwe
    Poziom 30  

    krzysb91 napisał:
    kolejne 4 to bajt wyższy portu A

    Chyba coś pomyliłeś, 1 bajt = 8 bitów, więc chyba chodziło Ci o 4 starsze bity portu A.
    Co do kodu to pamiętaj że masz pull-up więc wciśnięcie przycisku powoduje zmianę danego bitu rejestru PINC/PINA na wartość '0', puszczenie przycisku ponownie ustawia '1'.
    więc warunek w funkcji 'if', aby była realizowana przy wciśniętym danym przycisku powinien być np. taki:
    if(!(PINC & 0x01)){
    czujniki[0]='1';
    }
    PS. Rozumiem że to fragment kodu, dlatego nie ma funkcji 'main'

    0
  Szukaj w 5mln produktów