- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 23

Thema: Interrupt Problem mit c

  1. #11
    Erfahrener Benutzer Begeisterter Techniker Avatar von avrrobot
    Registriert seit
    12.01.2011
    Beiträge
    210
    Blog-Einträge
    9
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Ja, aber das dürfte sich ja eigentlich nicht ändern.

  2. #12
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.070
    Warum nicht? Wenn der Timer richtig eigestellt ist sollte sich das Flag ändern.

    Könntest du den aktuellen Code posten?

    MfG Hannes

  3. #13
    Erfahrener Benutzer Begeisterter Techniker Avatar von avrrobot
    Registriert seit
    12.01.2011
    Beiträge
    210
    Blog-Einträge
    9
    Ach so, ja stimmt.
    Code:
    #ifndef F_CPU
    #define F_CPU    1000000
    #endif
    
    #include <avr/io.h>
    #include <util/delay.h>
    #include <stdint.h>
    #include <avr/interrupt.h>
    
    
    
    ISR(TIMER2_OVF_vect)
    {
    PORTB ^= (1<<PB0);
    }
    
    
    int main(void){
        DDRB |= (1<<PB0);
        TCCR2 = (1<<CS22) | (1<<CS20);
        TIMSK |= (1<<TOIE2);
        sei();
        while(1){
        if((TIFR & TOV2) == 0) PORTB |= (1<<PB0);
        if((TIFR & TOV2) == 1) PORTB &= ~(1<<PB0);
        }
    }
    Die LED ist dann dauerhaft an.
    Geändert von avrrobot (27.09.2011 um 18:49 Uhr)

  4. #14
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.070
    Ich habe den Code etwas geändert. Es funktioniert so. Das Flag wird gesetzt. Ich schaue noch warum der Int nicht ausgeführt wird.

    Hier mein Code (den Prescaler habe ich geändert dadurch es schneller geht).
    Code:
    #ifndef F_CPU
    #define F_CPU    1000000
    #endif
    
    #include <avr/io.h>
    #include <util/delay.h>
    #include <stdint.h>
    #include <avr/interrupt.h>
    
    
    
    ISR(TIMER2_OVF_vect)
    {
    PORTB ^= (1<<PB0);
    }
    
    
    int main(void){
        DDRB |= (1<<PB0);
        TCCR2 = (1<<CS20); //(1<<CS22) | (1<<CS20);
        TIMSK |= (1<<TOIE2);
        sei();
        while(1)
        {
            while(TIFR & TOV2)
            {
                 PORTB ^= (1<<PB0);
                _delay_ms(500);
                TIFR |= (1<<TOV2);
            }
        }
    }
    MfG Hannes

  5. #15
    Erfahrener Benutzer Begeisterter Techniker Avatar von avrrobot
    Registriert seit
    12.01.2011
    Beiträge
    210
    Blog-Einträge
    9
    In dem Fall liegt an B0 immer 0 an.
    Edit: Nur so, die LED ist aktiv, wenn 1 an B0 anliegt.

  6. #16
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.070
    Ich habe es mit dem Simulator getestet. Da hat es funktioniert. Leider habe ich keinen Mega32 zur Hand.

    MfG Hannes

  7. #17
    Erfahrener Benutzer Begeisterter Techniker Avatar von avrrobot
    Registriert seit
    12.01.2011
    Beiträge
    210
    Blog-Einträge
    9
    Ja, ich werde mal nen andren mega32 reintun.

  8. #18
    Erfahrener Benutzer Begeisterter Techniker Avatar von avrrobot
    Registriert seit
    12.01.2011
    Beiträge
    210
    Blog-Einträge
    9
    Hatte doch grad nur nen mega16 da, es gibt einen astreines rechtecksignal an B0.
    Edit: Hab doch noch nen mega32 gefunden, bei dem gehts auch nicht.
    Geändert von avrrobot (27.09.2011 um 19:52 Uhr)

  9. #19
    Erfahrener Benutzer Begeisterter Techniker Avatar von avrrobot
    Registriert seit
    12.01.2011
    Beiträge
    210
    Blog-Einträge
    9
    Da fragt man sich nur noch, warum das so ist?

  10. #20
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.070
    Habe gerade das Datenblatt angeschaut (Errata). Hier ist das Datenblatt http://www.atmel.com/dyn/resources/p...ts/doc2503.pdf

    Auf Seite 336 steht das es Probleme mit dem Timer geben kann. Es steht auch eine Lösung dort.

    Füge im Code diese Zeile ein "TCNT2 = 0xff;"
    Diese Zeile muss vor der Zeile mit TCCR-Register sein.

    MfG Hannes

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Ähnliche Themen

  1. Problem mit Interrupt
    Von Naxos im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 30.12.2008, 07:56
  2. Problem mit Interrupt
    Von Stefan_84 im Forum Assembler-Programmierung
    Antworten: 20
    Letzter Beitrag: 27.06.2008, 19:59
  3. Interrupt Problem
    Von Rohbotiker im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 28.08.2007, 20:32
  4. Interrupt problem!
    Von Jannek im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 14.05.2007, 00:26
  5. interrupt problem
    Von xanatos im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 11.04.2005, 18:08

Berechtigungen

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

Solar Speicher und Akkus Tests