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
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
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.
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
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
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)
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
@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
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
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
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..