mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC32 USART1 RX-Interrupt geht nicht zu


Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Community,
ich habe da ein schwerwiegendes Problem. (OK, das sind sie ja alle 
irgendwie)

Ich möchte eine GPS- Maus auslesen. Sobald ein Zeichen im USART Buffer 
vorhanden ist wird dieses in einen Buffer gespeichert und anschließend 
ausgewertet. Die ganze Routine läuft auch ganz gut mit einem PIC18F.
Jetzt wollte ich das Projekt auf einen PIC32 implementieren. Und hier 
geht gar nichts mehr.
Interrupts werden ausgelöst, aber das RX Flag kann nicht gelöscht werde. 
Habe es schon mit allen möglichen funktionen probiert, aber das SCH**** 
Flag lässt sich nicht löschen.

So jetzt zu meiner Frage hat schon mal jemand ein ähnliches Problem 
gehabt?
Oder gibts ne Idee woran das liegen kann?

Oder ist es eventuell besser einfacher, das Register zu pollen?
Wie macht ihr sowas?

Vielen Dank füreure Hilfe

MfG Klaus

Autor: AS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus schrieb:
> So jetzt zu meiner Frage hat schon mal jemand ein ähnliches Problem
> gehabt?

Nein ;)

Klaus schrieb:
> Oder gibts ne Idee woran das liegen kann?

Äh, ja. An Dir? ;-))


Nur mal auf die Schnelle rauskopiert, so sieht das bei mir meistens aus:
void __ISR(_UART_1_VECTOR, ipl3) _U1RXInterrupt(void)
{
  if(mU1RXGetIntFlag())
  {
    while(U1STAbits.URXDA)
      asUART1_RXBufWriteChar(U1RXREG & 0xFF);
    mU1RXClearIntFlag();
  }
}

Beharkst Du vielleicht nur das berühmt berüchtigte, falsche Bit?

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, ich habe jetzt noch mal ne ganze weile rumprobiert.
Ich polle jetzt das U1STAbits.URXDA BIT um zu sehn ob daten da sind.
Also ich lese Daten vom UART1 ein und gebe dieses über UART3 wieder aus.
Komischer weise hängt sich der PIC regelmäßig auf. Es gibt Phasen da 
läuft es wunderbar durch und dann, nach einem Neustart funktioniert 
wieder gar nichts.

Woran kann das liegen. Also Pegel sind es definitiv nicht sehen alle 
echt super aus. BAudrate ist auch genau eingestellt. Daten werden über 
ein max232 angepasst (Habe auch schon 2 verschieden genommen, weil ich 
dachte die beeinflussen sich gegenseitig). Interrupts sind alle aus, ich 
erlaube nur RX.
Langsam gehen mir die Ideen aus?

Achso danke noch mal für deinen Ratschlag, hat aber leider nicht 
funktioniert.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.