www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ASCII Problem


Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ihr Freaks da draußen-vielleicht kann mir jemand bei meinem 
Problem helfen.
Ein Gerät gibt seriell mit 9600,N,8,1 Daten aus, welche direkt in
einen TVT-VGA von www.tvterminals.de geleitet werden.
Dieser Baustein treibt einen VGA-Bildschirm.
Das System dient zur Großanzeige der Meldungen des Gerätes.
Klappt alles einwandfrei, lediglich wenn das Gerät die Sonderzeichen
ä..ö..ü..ß sendet, erscheint auf dem Display {..|..} (Punkte nur zur 
besseren Darstellung). Großbuchstaben Ä..Ö..Ü analog als [..\..]
An der Ausgabe vom Gerät lässt sich nichts ändern, am TVT-VGA Controller 
auch nicht.
Ich bräuchte "zwischendrin" etwas, was die Daten umwandeln kann.
Elektronik kein Problem, von Microcontrollern habe ich lediglich 
Grundkenntnisse.
Wer hat eine Idee ? Danke für Eure Antworten.

Noch etwas am Rande:
Statt des TVT-VGA Controllers habe ich auch schon PC mit Hyperterminal 
verwendet. Mit der Standardschrift habe ich genau gleiche Anzeige der 
Umlaute, wie bei Ausgabe über den Controller. Wechsle ich zu WST_Germ 
stimmt die Anzeige.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wahrscheinlich kann nur ASCII-Zeichensatz (also 7 Bit). Das "Gerät" gibt 
ä ö ü als 0x5B 0x5C und 0x5D aus. Das folgt natürlich nicht dem 
ASCII-Zeichensatz.
Laut handbuch kann der TVT-VGA wohl auch den ANSI Zeichensatz (also 
weitere 127 Zeichen). Da sind die Umlaute drin
ä = 0xE4
ö = 0xF6
ü = 0xFC

Die Umwandlung lässt sich ohne Probleme mit einem uC machen. 
Vorzugsweise einen mit 2x UART, damit man das nicht alles per Software 
machen muss.
Der kleinste Atmel ist glaub ich der ATmega164 oder ATmega162, kostet 
2,95€ bei Reichelt als PDIP. Der hat 2x UART.
Die Beschaltung würde minimal ausfallen:

TVT-VGA <=== MAX232 <==> ATmega164 <==> MAX232 <== GERÄT

Kosten weniger als 10€.

Das Programm wäre auch nur ein paar Zeilen lang.

Autor: Frank Schlaefendorf (Firma: HSCS) (linuxerr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
im prinzip würde auch ein controller mit einem fullduplex uart reichen, 
die rx+steuerleitungen zum gerät und tx+steuerleitungen zum tvt. das 
geht schon mit recht kleinen controllern.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>im prinzip würde auch ein controller mit einem fullduplex uart reichen
Stimmt, soweit habe ich gar nicht gedacht. Hatte irgendwie im Kopf, dass 
es hätte Bidirektional sein müssen, aber geht ja nur ein eine Richtung. 
dann kann man schon nen ATtiny2313 oder nen ATmega48 nehmen, kostet nur 
1,20€.

Autor: Frank Schlaefendorf (Firma: HSCS) (linuxerr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn man es geschickt anstellt, könnte man alles in einem gehäuse 
(doppelstecker wie zb für leitungsbooster, dongles etc, 2serielle 
stecker links und rechts in einem kleinen steckergehäuse) unterbringen 
und die schaltung evtl aus den statusleitungen mit spannung versorgen.

Autor: Sascha Spitzmüller (sascha112)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank mal für Eure Anregungen. Habe mir mittlerweile etwas 
Hardware beschafft (ATMEGA48 und ATTINY2313) ISP läuft auch, ein paar 
Grundfunktionen sind auch schon erfolgreich programmiert und getestet. 
Jetzt arbeite ich mich grade in die Programmierung rein, das geht aber 
mangels Zeit doch nicht ganz so schnell. Vielleicht kann mir jemand mit 
einem Proggi noch und einem Schaltungsvorschlag nachhelfen :-)

seriell TTL mit 9600,8,N,1 7-Bit ASCII kommen vom Empfänger
Sollen rein in den ATTiny, die Zeichen Hex 7B,7C,7D,7E nach Ansi Hex 
E4,F6,FC;DF und die Zeichen 5B,5C,5D nach Ansi Hex C4,D6,DC.
Rest vom Eingangszeichensatz kann so wieder ausgegeben werden.
Das ganze wieder raus aus dem Attiny und rein in meinen TV-VGA 
Controller, der kann Ansi.

Bei der Grundschaltung mit den "falschen" Sonderzeichen kam ich ohne MAX 
aus. Lediglich für Versuchszwecke mit dem PC hatte ich natürlich einen 
benutzt. Wenn durch den Attiny RS-232 +/-12 durchgejagt werden müssen 
ist das natürlich kein Problem. 
Empfänger->MAX232->ATTINY2313->MAX232-TVT VGA-Controler...

unsere Feuerwehr und Ich freuen uns, wenn jemand bissl helfen möchte...

P.S Anfangs beschriebenes "Gerät" ist ein DME in der Wache.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal UART TX und RX sowie den RX interrupt anschalten:
UCSRB = (1 << RXEN) | (1 << TXEN) | (1 << RXCIE);
Und dann die ISR müsste denke ich so aussehen:
ISR(USART_RXC_vect)
{
  unsigned char temp;
  temp = UDR;
  while (!(UCSRA & (1<<UDRE)));     // warten bis Senden moeglich
  switch(temp){
    case 0x7B:
      UDR = 0xE4;
      break;
    case 0x7C:
      UDR = 0xF6;
      break;
    //usw.
    default:
      UDR = temp;    //Zeichen so senden wie empfagen
  }
}
Habs jetzt nicht getestet, aber das Prinzip sollte klar sein

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich würd das warten aufs senden nicht in den Interupt packen, dann 
doch lieber in die Hauptschleife, eventuell sogar mit nem Buffer...

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.