Hey Leute,
Ich geistere schon seit Monaten auf eurem Forum herum, es
vereinfacht den Start mit µC enorm.
Ich wollte jetzt eine Kommunikation zwischen nem atmega16 und dem PC
über seriell einrichten...
Habe mir das Programm Putty eingerichtet, der Port und die Daten sind
denk ich richtig angegeben, da eine Überbrückung der Kabel die
Buchstaben an Putty zurücksendet.
Nur leider habe ich Probleme ein Programm zu schreiben, dass auf dem
atmega16 erstmal nur zeichen ausgibt...
Bis jetzt soll mein Programm "x" in 1 Sekunden Abständen ausgeben, es
kommt aber nichts an...
Ich habe schon mehrere Libraries gesehen (uart.h/usart.h), nur sind die
alle sehr verschollen im Netz...
Wäre super, wenn ihr mir helfen könntet!!
Vielen Dank!
Phil
Phil schrieb:> Danke Mini Float!!> jetzt nur noch 1 Fehler:Error 9 expected declaration or statement at end of
input C:\Users\Phil\Documents\AVRStudio 5.1\AVRGCC1\AVRGCC1\AVRGCC1.c 37 1
AVRGCC1
tipp die Meldung einfach einmal bei Google ein und du wirst feststellen,
dass du ein } vergessen hast (was ich bereits geschrieben habe).
Vielen Dank für eure Hilfe!
Der Code wurde jetzt artig compiliert…
mit dem letzten Fehler hast du recht, ich hab gleichzeitig das auch
gegoogelt, aber ihr wart schneller xD.
Leider spuckt der at immer noch nichts aus...
Woran könnte es noch liegen?
ich verwende derzeit 0.1µF Keramikkondensatoren und keine Elkos, kann
das daran liegen?
außerdem hab ich grad keinen externen Quarz dran... aber trotzdem müsste
er so ein paar zeichen ausspucken können, oder?
Vielen Dank!!
Phil
> außerdem hab ich grad keinen externen Quarz dran... aber trotzdem müsste> er so ein paar zeichen ausspucken können, oder?
Wer sagt, dass er nicht spuckt? Er hat nur ein so schlechtes Timing,
dass der PC sich rechtzeitig weg duckt.
Ok, ich hau dann mal jetzt den externen Quarz dran, mal gucken obs dann
klappt...
Hat vielleicht jmd. einen Beispiel Code für die Library von Peter?
außerdem... wie installiert man so eine .patch Datei...
Vielen Dank!
Phil
habe jetzt einen externen Quarz mit 14,7456 MHz drin... 22pF
Kondensatoren
in den Fuses kann man ja nur 16k Crystal einstellen mit 64ms Startup.
Stelle ich jetzt F_CPU im Programm auf 14,... oder 16 MHz ein??
Muss ich die Baudrate noch verändern?
Vielen Dank!!
Phil
>Stelle ich jetzt F_CPU im Programm auf 14,... oder 16 MHz ein??>Muss ich die Baudrate noch verändern?
Du musst das einstellen was du nutzt,
also 14,...MHz
>Muss ich die Baudrate noch verändern?
Nein
1
UCSRC=(1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
änder das auf
1
UCSRC=(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0);
jetzt mal eine andere frage wenn du dein Terminal Programm aufhast wie
verhält sich der schwarze Balken (bei mir ist er schwarz Tereterm)
Wenn er schnell blinkt hast du im terminal falsch Einstellungen
und wenn er in 1 sec.(glaube ich) blinkt ist der code falsch, so als
kleine Hilfe bei der Fehler suche
Danke für deine Antwort!
Ich stell das mit dem Register gleich um!
Bei mir in Putty ist der Balken immer Grün gefüllt, blinkt nicht.
Die Verbindung von PC bis zum steckbrett funzt auch, wenn ich nämlich
die Pins 2 und 3 überbrücke, dann kommen die eingegebenen zeichen wieder
an...
Ich werde mir auch gleich mal Tereterm angucken, vllt hilft mir das ja
weiter...
Vielen Dank!
Phil
Ok, jetzt kommt was an...
ich habe im Programm eingestellt, dass er "x" auspucken soll in
1-sek-Abständen...
ich habe eben mit Überbrückung gesehen, dass wenn ich X schreibe, dass
ein Ü ankommt...komisch
Jedenfalls kommt jetzt endlich was vom µC an, aber nur schrott… (merke:
Ü = X)
ÀðÀðüþüððþüÿàðÀøààüÿðøÀþðÿÿàøàÀüøøÿððüÀüÿÀàðþøðþþðþüþüÿþðàøàÀøàøÿÿøøðÀðþ
üÀà
Nur zur Info, ich habe auch zu kleine Kondis dran...gewünscht sind Elkos
mit 1 µF, ich hab Keramik mit 0,1µF, vllt ist das ja der entscheidende
Unterschied...
Aber vielen Dank Männel, das war der Fehler!!
Phil
Klar mit dem Überbrücken ist eine Methode, aber der nachteil ist
wenn du das terminal Programm zb. auf 115000 Baud und 2 Stopbits
einstellst wird er die auch bekommen weil sie ja von Ihm selbst ist und
nicht vom mega.
Du kannst auch eine LED an TXD stecken ob die blinkt.
wenn die zeichen auch im sekunden takt raus kommen weisst du das es
reicht kannst auch im datenblatt nachschauen ob es ausreicht. ob elko
oder keramik it glaube ich egal.
dass mit den zeichen kann daran ligen da du nirgends wo geschrieben was
das X ist
kannst es ja mal so veruschen
Phil schrieb:> ich habe eben mit Überbrückung gesehen, dass wenn ich X schreibe, dass> ein Ü ankommt...komisch>> Jedenfalls kommt jetzt endlich was vom µC an, aber nur schrott… (merke:> Ü = X)>> ÀðÀðüþüððþüÿàðÀøààüÿðøÀþðÿÿàøàÀüøøÿððüÀüÿÀàðþøðþþðþüþüÿþðàøàÀøàøÿÿøøðÀðþ üÀà
Wenn der Empfänger etwas anderes 'sieht' als der Sender schickt, dann
liegt das praktisch immer daran, dass die Baudrate nicht stimmt. Und das
liegt wieder in der überwiegenden Mehrzahl der Fälle daran, dass die
Taktfrequenz falsch angegeben wurde.
Es reicht nicht einen Quarz an den Mega 'zu schrauben'. Der muss auch
aktiviert werden (per Fuse). Hast du das gemacht?
Hey allerseits!
Erstmal vielen Dnak für eure zahlreichen Antworten!!
1. Die Fuses hab ich gesetzt auf 16k Crystal + 64ms, er spuckt auch gar
nichts aus, wenn ich den rausziehe...
2. Habe jetzt mal TeraTerm laufen, viel besser als putty auf jeden fall,
der Balken ist die meiste Zeit "hohl", und blinkt sehr unregelmäßig,
heißt denk ich nichts gutes...
3. F_CPU ist auf 14,7456 MHz eingestellt. Reicht es, wenn ich das nur da
eingebe, oder muss man das noch woanders vermerken?
4.Leider sind die abstände zwischen den Zeichen seeehhr unregelmäßig,
zwischen 0.5 sek und 10 Sek.
Ich werde jetzt mal zu Conrad fahren und mir n paar 1 µF Elkos
besorgen... Habt ihr noch eine Idee was für einen Quarz? oder ist der in
Ordnung?
Hab noch n Screenshot von Putty reingesetzt, wenn jmd damit was anfangen
kann xD.
Vielen Dank!!
Phil
Phil schrieb:> @Stefan:> ich habe ja beides ausprobiert...
Und beides ist auf die gleiche Art und Weise falsch.
Wie sieht in C ein einzelnes Zeichen aus?
Wenn ich un TeraTerm überbrücke, weit weg vom rs232, dann spuckt dieser
mir ein x aus, beim drücken von x! xD
Wenn ich aber vor dem rs232 überbrücke, also den Empfangsdraht vom
Computer am rs dranlassen und nur den Sendedraht dazupacken, dann spuckt
er größtenteils ein Ü aus, wenn ich n x drücke, vllt hilft einem das
ja...
Glaube eher nicht..
:-P
L.G.
Phil
Das ist dermaßen lächerlich. Hier versucht jemand serielle Daten zu
übertragen, und kann noch nichtmal die io.h selbständig einbinden bzw.
die Fehlermeldungen dazu interpretieren. Weiß den Unterschied zwischen
Strings und Chars und, und weiß Gott was da noch alles an Basics fehlt.
MANN lerne die Grundlagen und dann komm wieder. Ist doch quatsch hier
einen Step by Step ich lerne C von null auf Kurs im Thread zu
veranstalten.
Und dann wird immer auf dem Quarz rumgeritten. Wenn man den internen OSC
benutzt dann geht man halt mit der Baudrate auf 2400 runter. Das sollte
nicht das Problem sein. Auf diese Art und Weise mache ich serielle Debug
Ausgaben seit Jahr und Tag und immer nur mit dem internen Oszillator.
Und noch nie lag ein Fehler in der Übertragung an einer zu großen
Ungenaugkeit desselben.