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
Interrupt wenn softwareSerial Daten
28.04.2016, 22:18
Beitrag #1
Interrupt wenn softwareSerial Daten
Guten Abend Community,

ich habe heute das Problem, dass ich, sobald Daten in den SoftwareSerial Buffer eintreffen müssen diese verarbeitet werden. Ich habe gesehen für den normalen Serial Bus ist die funktion serialEvent() vorgesehen. Gibt es sowas auch für SoftwareSerial? Oder kann ich Manuell ein Interrupt auslösen? Ich habe einen benachbarten Pin der HIGH geht sobald Daten ankommen. Kann ich den Loop und alle bisher gestarteten Funktionen unterbrechen solange dieser HIGH ist?

Beste Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.04.2016, 12:13
Beitrag #2
RE: Interrupt wenn softwareSerial Daten
Hallo BennYI,
meines Wissens ist SoftwareSerial==NewSoftSerial.
Die Hompage ist https://www.pjrc.com/teensy/td_libs_NewSoftSerial.html
Es gibt die Funktion (mySerial.available()), habe ich ausprobiert.
Die könnte man im loop einfügen, derart:
if (mySerial.available()) {
tue irgendwas;
}
und so einen bufferüberlauf???? abfangen.
LG, tiny85fan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.04.2016, 00:02 (Dieser Beitrag wurde zuletzt bearbeitet: 30.04.2016 00:03 von BennIY.)
Beitrag #3
RE: Interrupt wenn softwareSerial Daten
Das Bringt nichts, der Loop ist zu langsam, der Buffer wird zu langsam bearbeitet. Der Master wartet auf ein ACK und dies kommt nicht. Der Master macht Timeout und erst da nach schafft es der Controller das ACK zu senden. Ich muss sofort wenn Daten eintreffen die Empfangsroutine Starten ich kann nicht warten bis Loop neu startet.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.05.2016, 18:39
Beitrag #4
RE: Interrupt wenn softwareSerial Daten
Hallo BennIY,
normalerweise würde man so ein Signal mit einem Interrupt abfangen. Leider unterbindet aber eine ISR (Interrupt Service Routine) den Empfang von seriellen Daten, weil sie bevorzugt und exclusiv abgearbeitet wird. Bevor Du jetzt mit Laufzeit-verkürzten ISRs experimentierst, versuche doch mal folgendes:
1.: das empfangene Signal öfter (viel öfter) im loop abfragen und ggf. dann in eine ACK Routine springen.
2.: dazu Deinem AVR erst mal Beine machen. Ich takte meine µCs dazu immer mit dem clk prescaler hoch, etwa so:

Code:
void setup()  
{        // µC related
    noInterrupts();
    CLKPR = 0x80;    // run at
    CLKPR = 0x00;    // 8MHz internal Osc.
    interrupts();
}
Wie genau das bei Deinem AVR geht, hängt vom Typ ab und steht im rtfm.
(read the f manual)
Viel Glück, tiny85fan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Daten Visualisieren MeisterQ 12 539 01.12.2016 19:36
Letzter Beitrag: MeisterQ
  while Schleife nach sleep mode interrupt tklaus 13 238 23.11.2016 17:40
Letzter Beitrag: Tommy56
  Data Logger Daten auf SD Card schreiben Crichton 12 272 22.11.2016 18:32
Letzter Beitrag: Crichton
  I2C Daten übertragen Gandalf 3 211 04.11.2016 13:20
Letzter Beitrag: hotsystems
  NRF24L01 Interrupt MeisterQ 22 512 02.11.2016 15:50
Letzter Beitrag: MeisterQ
  Interrupt matthias3579 5 219 15.10.2016 13:23
Letzter Beitrag: hotsystems
  Daten über USB verarbeiten Felix91 10 319 12.10.2016 13:00
Letzter Beitrag: Tommy56
  Can-Bus Shield ok, aber keine Daten Clubsport 38 1.531 01.09.2016 14:17
Letzter Beitrag: Clubsport
  Interrupt und Sicherung der Prozessorregister MKc 5 224 31.08.2016 11:17
Letzter Beitrag: MKc
  Daten an mysql diode1990 24 1.296 31.07.2016 10:29
Letzter Beitrag: Gandalf

Gehe zu:


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