www.mikrocontroller.net

Forum: Compiler & IDEs uart-problem mit atmega16


Autor: Jack (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
habe ein problem mit dem avr-studio
beim simulieren der uart.
beim senden von daten wird nach dem
ende der sendung kein interrupt ausgelöst.
hatte schon jemand solch ein problem?

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Werden beide nicht ausgelöst?

Für UDRE hast Du ja einen Interrupt-Handler (SIG_UART_DATA) geschrieben
und auch das UDRIE Bit gesetzt. Für SIG_UART_TRANS ebenfalls (TXCIE)...
Vielleicht liegts auch nur am Simulator...

Autor: Hirsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jack ich versuche das gleiche gerade mit einem Atmega 128
Hast Du auch noch irgendwelche Header oder C Dateien aus der lib mit
eingebunden? Funktioniert dies programm auch so ähnlich mit nem atmega
128?
Danke

Autor: Jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hirsch
es werden keine zusätzlichen dateien eingebunden
auser das was im code angegeben ist. über den atmega128
kann ich nichts sagen.

es funktioniert auch alles sauber, nur nach dem letzten senden
der daten müsste ein interrupt durch "SIG_UART_TRANS" ausgelöst
werden. dieser wird aber nicht ausgelöst.
setze ich aber im avr-studio manuel das bit TXC, so wird dieser
korrekt ausgeführt.
liegt das am avr-studio oder an meinem code.

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kanns noch nicht zu 100% ausschliessen, aber ich vermute, daß es am
Studio liegt. Kannst Du den Code denn nicht mal auf nem realen
Prozessor testen?

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Scheint am Simulator zu liegen!?
Der Interrupt für UDRE wird nur ein einziges mal ausgelöst, egal, wie
oft man ihn aktiviert und wie viele Bytes übertragen werden.

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieser "Bug" tritt bei vielen IRQ's auf. Anscheinend setzt der
Simulator das Interrupt-Flag nicht automatisch zurück wenn eine ISR
aufgerufen wurde. Eventuell hilft es nun dieses Interruptflag per Code
selber in der ISR zurückzusetzen. Einfach eine 1 in das Register
schreiben, damit der Simulator des Interuptflag neu einliest.

Gruß Hagen

Autor: Jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke für eure antworten
habe leider gerade keinen atmega16, werde mir einen
besorgen und melde mich dann.

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.