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.

Problem z przewaniem zewnętrznym ATmega8

luki2828 09 Paź 2015 20:53 516 3
  • #1 09 Paź 2015 20:53
    luki2828
    Poziom 17  

    Witm męczę się od dwóch dni z przerwaniem zewnętrznym Atmega8. Programowania dopiero się uczę chciałem wypróbować jak najbardziej łopatologicznie się da, jak działają takowe przerwania. Program działa tak ze cały czas miga na przemian raz jedna raz druga dioda lecz gdy na 4 pinie pojawi sie stan niski zacznie działać przerwanie i na 10s zapali się 3 dioda podpięta do pinu 28. Niestety program działa tak ze załącza się przerwanie program główny zatrzymuje się na 10s lecz dioda podpięta do PC 5 nie zapala się.

    Code:

    #include <avr/io.h>
    #include <util/delay.h>
    #include <avr/interrupt.h>

    #define LED_PIN_1 (1<<PC5)
    #define LED_PIN_2 (1<<PD7)
    #define LED_PIN_3 (1<<PD6)

    #define LED1_ON PORTB &= ~LED_PIN_1
    #define LED2_ON PORTD &= ~LED_PIN_2
    #define LED3_ON PORTD &= ~LED_PIN_3

    #define LED1_OFF PORTB |= LED_PIN_1
    #define LED2_OFF PORTD |= LED_PIN_2
    #define LED3_OFF PORTD |= LED_PIN_3

    int main(void)
    {
       DDRB |= (1<<PC5);
       DDRD |= (1<<PD6);
       DDRD |= (1<<PD7);
       DDRD &= ~(1<<PD2);
       
       PORTD |= (1<<PD2);
       
       
       MCUCR |= (1<<ISC01);
       GICR |= (1<<INT0);

       sei();
       while(1)
       {
          LED2_ON;
          _delay_ms(1000);
          LED2_OFF;
          _delay_ms(1);
          LED3_ON;
          _delay_ms(1000);
          LED3_OFF;
          
       }
    }

    ISR(INT0_vect)
    {
       LED1_ON;
       _delay_ms(10000);
       LED1_OFF;   
    }

    0 3
  • Pomocny post
    #3 09 Paź 2015 21:04
    BlueDraco
    Specjalista - Mikrokontrolery

    W programie sterowanie diodą D1 jest na porcie B, nie C.

    2
  • #4 09 Paź 2015 21:04
    luki2828
    Poziom 17  

    Wiem o tym po prostu dałem taki czas żeby naocznie widzieć czy To działa. Wiedze ze przerwanie sie załącza czeka te 10s tylko dlaczego nie zapala diody.

    Cholera no to się skompromitowałem, że takiego błędu nie potrafiłem znaleźć może to przemęczenie gdyż siadam do programowania o 21 słaby po całym dniu z czego wynikło to przeoczenie. Bardzo bardzo dziękuję i przepraszam za w pewnym sensie zamiecenie forum.

    0