www.mikrocontroller.net

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


Autor: Dario (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernhard T (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Dario (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernhard T (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dario (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernhard T (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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

Bewertung
0 lesenswert
nicht 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

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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

Bewertung
0 lesenswert
nicht 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

Autor: Bernhard T (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ldi r16, 0xFF
out DDRB, r16 ; PortB als output

fehlt oder ?

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

Bewertung
0 lesenswert
nicht 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)

Autor: Dario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
muss ich vielleicht irgendwas an Einstellungen am PC ändern?

dario

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieder der Anfängerfehler Initialisierung STACK ?

Autor: Dario (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dario (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat leider alles nicht genutzt :-(

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

werde desshalb mal alles neu zusammenbauen

dario

Autor: Bernhard T (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..

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.