Hallo zusammen, bin ganz neu in diesem bereich! Möchte uart kommunikation durch interrupt kontrollieren! könnt Ihr mir bitte ein paar Ideen geben?! Danke
Hallo Nichts gegen Anfänger und deren Fragen, aber das ist jetzt wieder genau so ein Beispiel, über das man sich im Forum so aufregt. Einerseits weiss niemand, was du jetzt willst und andererseits sieht es so ein bisschen nach "Ich habe keine Ahnung, präsentiert mir mal eine Lösung". Wenn du ein Problem hast, auch ein simples, dann poste es ruhig. Aber bitte formuliere klar, WAS das Problem ist und WAS du jetzt haben möchtest. Gruss Michael
Und vorher das Tutorial lesen. Da stehen nämlich eigentlich alle benötigten Infos drin!
Worum gehts denn genauer: RS232-Verbindung Mikrocontroller - PC ? welcher Controller, AVR oder PIC? woher kommen die Daten, wohin sollen sie gehen, nur eine Datenrichtung? wie schnell muß es sein, Baudrate?
Ein Weg dahin wäre: Das Datenblatt des Controllers nehmen und nachschaun, welche Register für UART zur Verfügung stehen und was man da reinschreiben muss, damit UART aktiviert und initialisiert wird. Dann nachschaun, welche Interrupts es gibt und wie sie aufgerufen werden. In ASM wäre das über die Interrupt-Sprungtabelle, mit Hochsprachen kenne ich mich nicht aus. Dann (in ASM) den jeweiligen Int aktivieren (USRT-Steuer-Register) und Interrupts global einschalten. Bei UART über Interrupt sollte man sich auch noch Ringbuffer für RX und TX im SRAM anlegen, auf die das Hauptprogramm dann zugreifen kann. Somit kann UART über Interrupts völlig im Hintergrund laufen, während das Hauptprogramm Daten in den TX-Ringbuffer schiebt, wenn sie anfallen und in regelmäßigen Abständen den RX-Ringbuffer ausliest, bis er leer ist. Ich hoffe ich konnte dir helfen, auch wenn du nicht genannt hast, in welcher Programmiersprache auf welchem Mikrocontroller du das realisieren willst. ...
ALso, ich programmiere einen ATmega32 mit C_Sprache, die Daten sollen in beide Richtungen laufen(senden und empfangen)! Die Daten sollen dann von Atmega32 gesendet werden! Die uart initialisierung....habe ich schon nur das Prinzip mit dem Interrupt kapiere ich noch nicht soooo ganz: wann soll es ausgelöst werden.....
Ein Interrupt wird von einem "externen Ereignis" ausgelöst. Im Falle von UART stehen 3 Interrupts bereit, siehe Datenblatt Mega32 Tabelle 18 auf Seite 42. 14 $01A USART, RXC USART, Rx Complete 15 $01C USART, UDRE USART Data Register Empty 16 $01E USART, TXC USART, Tx Complete Die genaue Erklärung findest du auf Seite 156 (Transmitter Flags and Interrupts) für das Senden und auf Seite 150 (Receive Compete Flag and Interrupt) für das Empfangen. Die Interrupts sagen dir, dass ein Zeichen angekommen ist (RXC) und (in den RX-Ringbuffer) gesichert werden muss bzw. dass UDR beim Senden leer ist (UDRE) und ein weiteres Zeichen (aus dem TX-Ringbuffer) nachgeschoben werden darf. TXC sagt dir, dass alle Bits gesendet wurden und UART-TX deaktiviert werden kann, falls keine weiteren Daten zum Senden anstehen. ...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.