- LiFePO4 Speicher Test    Werbung      
Ergebnis 1 bis 6 von 6

Thema: Problem mit INT0 ATtiny84A

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    927
    Dann kann eigentlich nur ein in der IDE falsch ausgewählter Controllertyp (falsche inkludierte Header-Datei) oder eine veraltete Header-Datei die Ursache sein.

    Bei mir in der iotnx4.h ist der Vektor allerdings auch mehrfach deklariert:
    #define INT0_vect _VECTOR(1)
    #define EXT_INT0_vect _VECTOR(1)
    #define SIG_INTERRUPT0 _VECTOR(1)

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.277
    Also im Simulator funktioniert es bei mir!
    Code:
    /*
     * Servopuls.cpp
     *
     * Created: 06.09.2021 19:19:49
     * Author : USER
     */ 
    
    /**********            ATtiny84A 8MHz           ***************/
    
    
    
    #include<avr/io.h>
    #include<avr/interrupt.h>
    
    
    
    
    #define F_CPU 8000000UL
    
    
    
    
    uint16_t start_puls,end_puls,laenge_puls;
    uint8_t steigend, fallend;
    
    
    
    
    void init_timer_0 (void)
    {
        TCCR0A = 0x00;
        TCCR0B = (1<<CS01) + (1<<CS00);
        TIMSK0 = (1<<TOIE0) ;
        TCNT0 =131;
    
    
    
    
    }
    
    
    
    
    void init_timer_1(void)
    {
        TCCR1A=0x00;
        TCCR1B= (1<<CS11);
        
    }
    
    
    ISR (INT0_vect)
    {
        if (steigend == 1)
        {
            start_puls=TCNT1;
            steigend=0;
            MCUCR |= (1<<ISC01);
            MCUCR &= ~(1<<ISC00);
        }
        else
        {
            end_puls=TCNT1;
            laenge_puls=end_puls-start_puls;
            steigend=1;
            MCUCR |= (1<<ISC01);
            MCUCR |= (1<<ISC00);
        }
        
    }
    
    int main(void)
    {
        init_timer_1();
        
        DDRA = 0xFF;
        
        DDRB &= ~(1<<PORTB2);
        MCUCR |= (1<<ISC01) | (1<<ISC00); // INT0 auf  steigende Flanke
        GIMSK |= (1<<INT0);
        
        sei();
        
        while(1)
        {
            if (laenge_puls<1300)
            {
                PORTA = 0b00000001;
            }
            if ((laenge_puls>1300)&&(laenge_puls<1700))
            {
                PORTA = 0b00000010;
            }
            if(laenge_puls>1700)
            {
                PORTA = 0b00000100;
            }
        }
    }

Ähnliche Themen

  1. C INT0 an 328 - (M)Ein Problem
    Von oberallgeier im Forum Bascom / C / ASM / Sketch / Codesammlung / Programmschnipsel
    Antworten: 3
    Letzter Beitrag: 30.10.2017, 05:17
  2. ATtiny84a PWM
    Von OpaReinhard im Forum Arduino -Plattform
    Antworten: 6
    Letzter Beitrag: 23.03.2016, 19:34
  3. Int0 wird bei direkt bei 'Enable Int0' ausgelöst - Warum?
    Von malthy im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 30.08.2010, 19:10
  4. Int0 / Int1 Problem ( Prellen )
    Von BlaueLed im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 28.01.2010, 12:38
  5. Unverständliches Problem mit INT0 / INT1
    Von popi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 04.09.2008, 15:34

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

    Werbung      fchao-Sinus-Wechselrichter AliExpress