www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART des AT90S2333


Autor: Stefan S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte via PC an meinen Mikrocontroller Daten senden und diese mit 
LEDs am Mikrocontroller darstellen.
Damit die serielle Schnittstelle des PC mit dem µC arbeitet, werwende 
ich einen MAX232 Pegelwandler.
Die Hardware ist auch vollständig in Ordnung, denn ich habe schon vom µC 
an den PC Daten gesendet und mit HyperTerminal ausgelesen.

Ich habe bei der Codesammlung ein Programm dazu gefunden und es 
abgeändert:

_________________________________________________________

.include "2333def.inc"

.def temp = r16


.cseg
.org $000
rjmp start ;reset handle
.cseg
.org $00B
rjmp rx_com ;RX-Complete - Rotine


rx_com:
in temp,udr ;read value
out PORTB,temp

reti


start:
ldi temp,LOW(RAMEND) ;LOW-Byte der obersten RAM-Adresse
out SPL,temp
sbi UCSRB,RXEN ;RX aktivieren
sbi UCSRB,RXCIE ;RX-Complete aktivieren
ldi temp,4912500/(9600*16)-1 ;Baudrate 9600 einstellen (bei 4,9125MHz)
out UBRR,temp

ldi temp,0xFF ;0xFF ins Arbeitsregister r16 laden
out DDRB,temp ;Inhalt von r16 ins IO-Register DDRC ausgeben

sei ;Interrups einschalten

loop:

rjmp loop

_________________________________________________________


Wenn ich bei HyperTerminal auf "Übertragung --> Textdatei senden" gehe 
und eine Datei auswähle, dann müsste ich doch eigentlich die LEDs am 
Mikrocontroller falckern sehen, oder doch nicht??

Und wie kann ich einzelne Bits mit dem PC an den µC übertragen? Geht das 
überhaupt mit HyperTerminal oder sehe ich das ganz falsch?

Wäre nett, wenn mal jemand meinen Code überprüfen könnte und mir sagen 
kann, ob ich falsch liege oder nicht!

Danke im Voraus!

Gruß
Stefan

------------------------------------
http://www.elektroniktreff.de

Autor: Niki Hammler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1.) genau vor diesem Problem stehe ich auch...die serielle Kommunikation 
funktioniert einfach nicht wie sie soll....
2.) wenns die richtigen infos enthält und die übertragung nicht zu 
schnell is, was ich allerdings bezweifle
3.) Bezüglich den Bits:
Entweder ein kleines C Programm schreiben das binäre Sachen in eine 
Datei schreibt oder mit einem hex Editor eine bestehende ändern oder was 
weiss ich. Jedenfalls musst du es so machen:
12345678

Das ist dein Byte, jedes davon repräsentiert also ein LED...also die 
"Maske" (mühevoll) füllen, Rest mit Null auffüllen und binär in den 
Windows Rechner eingeben und nach HEX umwandeln.
Jetzt schreibst du halt in eine Textdatei genau ein Zeichen, die Datei 
sollte dann logischerweise 1 byte gross sein (keine Umbrüche sonst sinds 
3). Die bearbeitest mit einem x beliebigen HEX Editor und änderst das 
Byte in dein HEX Zeichen. Dann sollte es funktionieren, abgesehen von 
deinem Code oberhalb weil bezüglich AVR hab ich selbst noch nicht so 
viel Ahnung

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

der RX-Complete-Interruptvektor liegt beim AT90S2333 nicht auf 0x0B, 
siehe Datenblatt.
Und wenn du schon beim datenblattlesen bist, schau gleich noch nach ob 
du die Bits für die UART-Konfiguration im richtigen Register gesetzt 
hast.

MfG
Andreas

Autor: Stefan S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, das hab ich ja völlig übersehen. Gleich mal probieren, ob es 
dann geht.

Vielen Dank für die Antworten!

Gruß
Stefan

Autor: Stefan S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es lag am RX-Complete-Interruptvektor, jetzt geht es.


Gruß
Stefan

Autor: Thomas_D (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo es gerade um die Interruptvektoren in den Datenblättern geht: Man 
sollte sich nicht immer darauf verlassen, was dort drin steht. Als ich 
mal eine Uhr mit Hilfe des asynchronen Timers 2 des mega163 gebaut habe, 
mußte ich nach langem Suchen feststellen, dass die 
Overflow-Interrupt-Adresse von Timer2 mit der von Timer1 im Datenblatt 
vertauscht ist.

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.