Forum: Mikrocontroller und Digitale Elektronik UART: µC Bitfolgen senden in asm


von Dario (Gast)


Lesenswert?

Ich möchte Bitfolgen (also z.B.:01001110, 00011101,..) vom µC 
(AT90S4433) an den PC schicken. Suche schon seit einiger Zeit nach den 
benötigten Befehlen, hab aber leider nichts gutes gefunden. Wollte nun 
fragen ob mir hier jemand helfen könnte ?

thx
 dario

von Bernhard T (Gast)


Lesenswert?


von Dario (Gast)


Lesenswert?

ich hab das tut vor einiger Zeit durchgemacht (schon einige Zeit her), 
hab allerdings dabei einige Sachen nicht ganz begriffen, und weil ich 
sachen die ich mache auch verstehen will, verworfen (=vergessen).
Habs nochmal kurz angeschaut, und einige Fragen:
- warum muss man die Pin's 4, 8 und 6 miteinander verbinden (ist das 
wirklich nötig)


Ausserdem müsste ich auch noch wissen wie ich Bitfolgen, die vom PC 
geschickt werden empfangen kann

simon

von Bernhard T (Gast)


Lesenswert?

Hallo Dario,
Das mit den verbundenen Leitungen muss nicht zwingend sein, da sind 
sogenannte Handshakeleitungen (Sendebereitschaft, Betriebsbereitschaft, 
Endgerät bereit) miteinander verbunden. Manches Terminalprogramm 
braucht' s vielleicht (schadet auch nicht).
Datenempfang z.B.:
http://www.mikrocontroller.net/forum/read-4-569.html#569
oder mal unter "Suchen" UART eingeben.

von Dario (Gast)


Lesenswert?

thx, hab mir das mal angeschaut, und da ist mir was aufgefallen:

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

zuerst ladest du FF ins AR r16 und gibst das dann aus.
Aber eigentlich solltest du doch die Eingabe über das UART ausgeben.
naja, bin mir nicht sicher... wollte nur mal fragen...

ausserdem: klappt das alles auch beim 4433 ?

simon

von Bernhard T (Gast)


Lesenswert?


von Mike (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

so geht das bei mir, evtl. nützt Dir das was, allerdings nur Ausgabe vom 
Controller.

Das zeigt Dir jedes Terminalprogramm an.

Gruß Mike

von Mike (Gast)


Lesenswert?

Ich habe gerade gesehen RX Inerrupt ist noch an, der wird abstürzen wenn 
Du Daten vom PC sendest, also bit noch löschen.

Entschuldigung Mike

von Dario (Gast)


Angehängte Dateien:

Lesenswert?

Hab mir jetzt etwas selbst zusammen gebaut/geproggt (siehe datei :) )

hab an den Port B LED's gehängt (an jeden Pin eine) und dachte 
eigentlich, dass, wenn ich jetzt per PC FF schicke, die Lämpchen angehen 
(hab die Lämpchen auf GND gezogen).

Nur leider klappts nicht, kein Leuchten, nichts :(

könntet ihr mal schauen, was da falsch sein könnte?

dario

von Bernhard T (Gast)


Lesenswert?

ldi r16, 0xFF
out DDRB, r16 ; PortB als output

fehlt oder ?

von Dario (Gast)


Angehängte Dateien:

Lesenswert?

thx to bernhard T

ja, hatte ich vergessen...

aber leider klappts immer noch net :-(

da muss noch was anderes sein...

dario

(hab die neue version angehängt)

von Dario (Gast)


Lesenswert?

muss ich vielleicht irgendwas an Einstellungen am PC ändern?

dario

von mikki merten (Gast)


Lesenswert?

Wieder der Anfängerfehler Initialisierung STACK ?

von Dario (Gast)


Lesenswert?

hab das eigentlich in diesen 2 Zeilen erledigt:

ldi temp, RAMEND ;Stackpointer initialisieren
out SP, temp

sollte so schon stimmen oder? (habs aus nem tut)

simon

von mikki merten (Gast)


Lesenswert?

@DARIO
Hatte ich übersehen, weil du zuerst den Port initialisierst. Welches 
Programm nutzt du auf dem PC ?
Simmt dort die Baudrate 9600,8,N,1

Diese könnte noch ein Chargenbedingter Fehler sein,
bei einigen Chargen funktioniert die Befehlsfolge

LOOP:  rjmp  LOOP

in Verbindung mit aktiven Interrupt nicht immer. ATMEL empfiehlt hier:

LOOP:  nop
       rjmp  LOOP

von Dario (Gast)


Lesenswert?

als programm hab ich mir ein eigenes gemacht (C++, WriteFile), aber wenn 
du eins weisst, dass relativ einfach ist (bei Hyperterminal begreif ich 
immer noch nicht, wie ich eine einfache Zeichen-, resp. Bit-Folge senden 
kann), dann sags mir doch, damit ich fehler beim Programm ausschliessen 
kann (obwohl sehr unwahrscheinlich, weil abgeschrieben)

die Baudrate stimmt, insofern N=Keine und kein Protokoll i.O. ist

das mit dem nop hab ich geändert, hat aber nichts gebracht :(

dario

von mikki merten (Gast)


Lesenswert?

Die letzte Fehlermöglichkeit könnte hier noch RTS/CTS und DSR/DTR auf 
PC-Seite sein. Am einfachsten helfen hier Brücken zwischen RTS-CTS und 
DSR-DTR.
Oder schau die hiermal ein besseres Terminalprogramm an:
http://bray.velenje.cx/avr

von Dario (Gast)


Lesenswert?

hat leider alles nicht genutzt :-(

denke mal, jetzt kanns nur noch an der Schaltung liegen...

werde desshalb mal alles neu zusammenbauen

dario

von Bernhard T (Gast)


Lesenswert?

Hallo, der Miki Merten hat neulich mal den Link reingesetzt: 
http://bray.velenje.cx/avr . Mir gefällt der recht gut und er ist 
wirklich smart 224 Kb, kein Eintrag in die Reg..

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
Noch kein Account? Hier anmelden.