INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Interrupts mit Arduino Due
13.11.2015, 15:29
Beitrag #33
RE: Interrupts mit Arduino Due
Ja bei mir läufts mittlerweile.
In deinem Quellcode fällt mir zunächst auf das du das aktivieren der Interupts mit NVIC_EnableIRQ(PIOC_IRQn); vor der eigentlichen konfiguration macht. Weiss nicht ob das so funktionier. Ich würd nach der konfig machen.

Was du definitiv machen musst ist in dem Interrupt handler das Interrupt Register auslesen. Nur dadurch wird dieses gelöscht und somit der INterrupt als abgearbeitet signalisiert.
Das auslesen ahbe ich so als erte Zeile in der ISR gemacht:

Code:
int32_t ISRC = PIOC->PIO_ISR;
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.11.2015, 15:55
Beitrag #34
RE: Interrupts mit Arduino Due
(13.11.2015 15:29)chhec schrieb:  Ja bei mir läufts mittlerweile.
In deinem Quellcode fällt mir zunächst auf das du das aktivieren der Interupts mit NVIC_EnableIRQ(PIOC_IRQn); vor der eigentlichen konfiguration macht. Weiss nicht ob das so funktionier. Ich würd nach der konfig machen.

Was du definitiv machen musst ist in dem Interrupt handler das Interrupt Register auslesen. Nur dadurch wird dieses gelöscht und somit der INterrupt als abgearbeitet signalisiert.
Das auslesen ahbe ich so als erte Zeile in der ISR gemacht:

Code:
int32_t ISRC = PIOC->PIO_ISR;

Dankesehr, dort liegt der Hase wohl im Pfeffer. Leider ist PIOC_Handler() bereits in \Arduino15\packages\arduino\hardware\sam\1.6.5\cores\arduino\WInterrupts.c zu

Code:
void PIOC_Handler(void) {
    uint32_t isr = PIOC->PIO_ISR;
    uint32_t i;
    for (i=0; i<32; i++, isr>>=1) {
        if ((isr & 0x1) == 0)
            continue;
        if (callbacksPioC[i])
            callbacksPioC[i]();
    }
}

festgelegt, sodass ich bei einer eigenen Definition nun den Fehler 'multiple definition of PIOC_Handler()' bekomme. An einem anderen PC diesen Mittwoch war das komischerweise nicht der Fall. Gibt es einen eleganteren Weg, dieses Problem zu lösen, als einfach WInterrupts.c und WInterrupts.h anzupassen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.11.2015, 08:42
Beitrag #35
RE: Interrupts mit Arduino Due
Das wundert mich. Bei mir gab es dieses Problem nicht
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino Ethernet mit USB 2 Serial Converter/Welche Einstellungen im Arduino-Sketch lociluke 1 1.113 05.05.2015 13:40
Letzter Beitrag: Bitklopfer
  Arduino Mega-Projekt mit EEPROM auf Arduino Due portieren Foto-Ralf 17 3.137 16.03.2015 12:06
Letzter Beitrag: Foto-Ralf
  Interrupts für eine bestimmte Zeit unterbrechen?? kai.l 5 1.324 13.10.2014 14:34
Letzter Beitrag: kai.l
  [gelöst:] Hardware-Timer-Interrupts beim Mega HaWe 1 915 26.09.2014 22:11
Letzter Beitrag: HaWe
  Frage zu Interrupts schnutzkurt 3 1.750 17.02.2014 10:47
Letzter Beitrag: Bitklopfer
  Zwei Zeitkritische Interrupts gleich verarbeiten subseven 12 5.895 09.01.2014 19:17
Letzter Beitrag: rkuehle
  Interrupts oder nicht? AtroCty 4 2.200 21.06.2013 16:16
Letzter Beitrag: Tobii

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste