- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 18 von 18

Thema: GICR Problem

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.07.2006
    Beiträge
    143
    Anzeige

    Praxistest und DIY Projekte
    hat keiner mehr eine Idee?
    wäre um hilfe sehr erfreut

  2. #12
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    IMHO verwendest du die falschen Makros (wie etwa INT1)

    Code:
    	// INT0 on raising edge
    	// clear pending INT0
    	// enable INT0 interrupt
    	MCUCR |= (1 << ISC01) | (1 << ISC00);
    	GIFR = (1 << INTF0);
    	GICR |= (1 << INT0);
    Das Flag zurücksetzen brauchst du wohl nicht.
    Wenn GICR nicht gefunden wird, dann stimmt was mit deiner Umgebung nicht. Es muss auch gehen, wenn du es nicht selber definierst!

    Bist du sicher, daß du alles richtig konfiguriert hast?

    Gibt mal auf Konsole in deinem Verzeichnis ein.

    Code:
    avr-gcc -mmcu=atmega8 -E -dM datei.c | grep GICR
    Disclaimer: none. Sue me.

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.07.2006
    Beiträge
    143
    in der Konsole erscheint:
    C:\ATMEGA8\ADXL\ADSXLR2>avr-gcc -mmcu=atmega8 -E -dM adsxlr2.c | grep GICR
    #define GICR _SFR_IO8(0x3B)

    wenn ich den Befehl GIFR Benutze kommt beim compilieren:
    ../ADSXLR2.c:36: error: `GIFR' undeclared (first use in this function)

    gibt es ein tutorial wie ich meine AVR Studio einrichten sollte?

  4. #14
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    mit ...|grep GIFR muss ne Entsprechende Ausgabe kommen! falls nicht hast du vielleicht nen anderen Controller eingestellt?
    Disclaimer: none. Sue me.

  5. #15
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.07.2006
    Beiträge
    143
    mit grep GIFER kam #define GIFR _SFR_IO8(0x3A)
    das ich auch meinem Programm beigefügt habe.

    Leider Funktionierts aber noch immer nicht..
    Ich hab jetzt PD2 mit einem Wiederstand auf Masse gezogen.
    Wenn ich jetzt mit +5Volt auf PD2 gehe, leuchtet die LED PC3 und schaltet auch wieder ab, sobald die 5V weg sind.

    PD3 (INT1) ist unbeschaltet.

    Die LED PC2 die vom Interrupt aktiviert werden sollte, bleibt leider immer noch dunkel wenn ich mit 5v an die pd2 oder pd3 gehe

    hier der Aktuelle Code:
    Code:
    #include <avr/interrupt.h>
    #include <avr/signal.h>
    #include <avr/io.h> 
    #include <avr/delay.h>      /* definiert _delay_ms() ab avr-libc Version 1.2.0 */
    
    #define GIMSK _SFR_IO8(0x3B)
    #define GICR GIMSK 
    #define GIFR _SFR_IO8(0x3A)
    
    
    SIGNAL(SIG_INTERRUPT0)         // signal handler for external interrupt
    {
    	PORTC|=(1<<PC2); //LED2 anschalte
    }  
    
    SIGNAL(SIG_INTERRUPT1)         // signal handler for external interrupt
    {
    	PORTC|=(1<<PC2); //LED2 anschalte
    }  
    
    
    int main (void){
    
       DDRC = 0xff; //alles als Ausgang def.
       PORTC =0x00; //PullUP's aus
      
       DDRD  =0x00;	//alles EIngang
       PORTD =0x00;	//PullUp's aus
    
    	//LED's ausschalten
    	PORTC&=(!(1<<PC3)); 	PORTC&=(!(1<<PC2)); 	PORTC&=(!(1<<PC1)); 	PORTC&=(!(1<<PC0)); 
    
    
    	// INT0 on raising edge
    	// clear pending INT0
    	// enable INT0 interrupt
    	MCUCR |= (1 << ISC01) | (1 << ISC00) | (1 << ISC10)|  (1 << ISC11);
    	GIFR = (1 << INTF0);
    	GICR |= (1 << INT0); 
    
    	sei();
    
    
      while(1){
    
    		if (PIND & (1<<PD2) ){ 
    		PORTC|=(1<<PC3); //LED3 anschalte
    		}
    		else{
    		PORTC&=(~(1<<PC3)); 
    		}
      }        
    }
    Vielen Dank für eure Antworten!

  6. #16
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    -- wird diese Defines GIMSK, GICR und GIFR raus! Nochmal: Entweder sie werden gefunden, oder etwas stimmt nicht. Falls etwas nicht stimmt behebst du das nicht dadurch daß du die Defines nachhackst! Das verdeckt nur einen Fehler und verschiebt in an eine viel schwerer zu findende Stelle!
    -- es muss heissen PORTC &= ~(1<<PC3) etc

    Du willst die LED mit INT0 einschalten und mit INT1 wieder aus?
    Disclaimer: none. Sue me.

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.07.2006
    Beiträge
    143
    vielen Dank für deine Antwort!
    Ich will Die LED mit int0 und int1 anschalten, funktioniert aber beides nicht...

    Was kann ich denn am GCC compiler ändern dass ich die defines weglassen kann?

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.07.2006
    Beiträge
    143
    Juhhu es Funktioniert!!!
    Ich habe blos das AVR Studio neu installiert und das neue Update reingeladen!!

    Vielen Dank nochmals an alle die mir geholfen haben!

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Labornetzteil AliExpress