www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Auslesen von Quad-UART durch AT90S8515


Autor: Steffen Kirn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte einen Quad-UART (16C554) an einen AT90S8515 anschliessen um 
damit 3 serielle Kanäle auf einen Kanal zu multiplexen. An PORTA hängt 
der 8bit Datenbus zwischen µC und UART, an PORTB die Interruptkanäle des 
UART und SPI, über PORTC gebe ich die Kanal- und Registeradresse an den 
UART aus, an PORTD hängen die veroderten IRQs an INT0, TXRDY, RXDY und 
schließlich noch IOW (Write-Strobe)und IOR (Read-Strobe).
Probleme macht mir gerade IOR. Bei steigender Flanke von IOR gibt der 
UART die Daten auf den BUS aus und hält sie max. 20ns. Ich setze IOR 
über CBI auf '0', im nächten Takt mit SBI auf '1', was mir meine 
steigende Flanke ergibt. Wenn ich nun im nächtsten Takt durch "in r18, 
PINA" die Daten einlesen will, sind aber seit der steigenden Flanke bei 
8 MHz schon 125 ns vergangen, und die Daten sind gar nicht mehr auf dem 
BUS. Hat vielleicht schon jemand Erfahrungen mit einem externen UART (am 
besten 16C55*) am AT90S**** gemacht und kann mir vielleicht einen Tip 
geben.

Danke im Vorraus

Steffen

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne jetzt nicht den 16C554 aber die meisten Peripherie-IC 
verhalten sich wie RAM, d.h. die Daten sind solange stabil, wie /IOR auf 
low liegt.

Der 8515 hat doch sogar einen externen RAM Bus, da ist es doch das 
einfachste den 16C554 wie RAM anzuschließen.


Peter

Autor: Steffen Kirn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tip Peter!

In dem Datenblatt von TI zum 16C554 sind die ZZDe für das Lesen und 
Schreiben etwas konfus. Ich dachte, ich darf die Daten erst nach der 
steigenden Flanke von /IOR lesen. Aber Dank deinem Tip und nochmaliger 
genauer Betrachtung darf ich schon nach mind. 30 ns nach der fallenden 
Flanke lesen. Die steigende Flanke signalisiert dem UART nur, dass die 
Daten gelesen wurden und er sie nicht länger halten muss.

Ich hab nun mein Programm dementsprechend abgeändert und es scheint 
korrekt zu funktionieren. Gelobt sei der In-Circuit-Emulator, da sieht 
man was wirklich vor sich geht, hoffe ich!
Das mit dem externen SRAM BUS war auch meine erste Idee, aber meinem 
Prof hat der Vorschlag nicht so gefallen.

MfG

Steffen

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"aber meinem Prof hat der Vorschlag nicht so gefallen"

Sowas gibt es. Der hat wohl schon eine Lösung fertig in der Schublade 
und wenn da einer mit was anderem daherkommt, müßte er sich ja wieder 
reinarbeiten.

Bequemer, codesparender und schneller als das umständliche Pins extra 
setzen und clearen ist das SRAM Interface allemal.


Peter

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.