- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 7 von 7

Thema: externer Interrupt

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die Bezeichnung für den Interrupt sieht mir mit INT0_6 zumindest verdächtig aus. Dabei ist GCC recht pingelig - die neuere Version sollte aber wenigstens eine Warnung geben wenn das falsch ist.

    Das Ende der ISR mit RTI macht der Compiler schon, darum muss man sich nicht künnern, wenn man es nicht expizit verlangt. Man muss noch daran denken die Zählervariable als volatile zu deklarieren, damit der Compiler nicht zu viel wegoptimiert.

    Für einen Incrementalgeber muss man aber schon etwas mehr machen als nur die Interrupts Zählen, denn einen Interrupt gibt es in beide Richtungen. Das mindeste ist eine unterscheidung nach hoch oder runter zählen, je nachdem ob die 2. Lichtschranke zu dem Incrementalgeber H oder L ist, oder notfalls auch noch nach der Polung am Motor.

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    sei()
    nein das wird schon in der RP6Lib gemacht das meinte ich nicht - Du musst die passenden Pin Change Interrupts aktivieren!

    MfG,
    SlyD

  3. #3
    Neuer Benutzer Öfters hier Avatar von Jumptime
    Registriert seit
    02.11.2012
    Ort
    mitten in Sachsen
    Beiträge
    26

    Lächeln externer Interrupt geschafft

    Hallo,
    ich möcht das von mir begonnene Thema noch beenden. Eure Antworten haben mich zumindest auf den Weg gebracht. Die Lib half mir nicht wirklich weiter, aber der Hinweis zum Pin Change Interrupt und zum Datenblatt (Datenblatt - eher Datenbuch mit 447 Seiten ) brachte den Erfolg. Eigentlich gar nicht schwer. Und so hat es geklappt:

    Ich habe den PCINT16 an Port PK0 gewählt

    Code:
            DDRK &= ~(1<< PINK0);	// PORT K PIN 0 als Eingang	
            PORTK |= (1<< PINK0);		// Pull Up eingeschalten
    	PCMSK2 = (1<< PCINT16);	// Bit 0 im Pin Change Mask Register PCINT16 gesetzt
    	PCICR = (1<<PCIE2);		// Pin Change Interrupt Control Register 
    						// Bit 2 des Pin Change Interrupt Enable gesetzt
    
    ISR(SIG_PIN_CHANGE2)	               // Interruptroutine
    {
    	if (status_RL ==1)
    	{
    		RA_M5++;
    	}
    	else if (status_RL ==2)
    	{
    		RA_M5--;
    	}
            if ((RA_M5> 20) || (RA_M5< -20))
    	{
    		ARM_STOP();
    	}
    	//reti();
    }
    Aber so richtig verstanden habe ich das Ganze noch nicht wirklich, naja wenn's funktioniert.

    Mit freundlichen Grüßen, Kai
    mein Bot: RP6v2, M256 WiFi Erweiterungsmodul, Liniensensor und Roboterarm mit Ansteuerung

Ähnliche Themen

  1. externer Interrupt
    Von 1udo1 im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 04.02.2009, 10:56
  2. Externer Interrupt
    Von simple im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 22.08.2006, 08:44
  3. Externer Interrupt
    Von Brands_Freund im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 25.02.2006, 12:22
  4. Externer Interrupt ATMega8
    Von Ronnie.B im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 19.12.2005, 17:40
  5. Externer Interrupt will nicht :(
    Von Lionic im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 04.10.2005, 18:30

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress