Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega32 über USBPROG programmieren
Ich hab folgende Bauteile bestellt:
Einen Atmega32 mit AVR Entwicklungsboard.
Einen USBPROG mit Bootloader und der Firmware: AVRISP mk2 Klon
Jetzt hab ich es an meinen Computer mit XP angesteckt und der USBPROG wurde von meinen Computer erkannt und installiert.
Da sthet jetzt MK2 KLONE im Geräte-Manager.
Wollte jetzt mit AVRStudio eine Verbindung herstellen aber immer wenn ich auf lesen oder schreiben drücke steht da ISP Mode Error.
Liegt das vielleicht an den Fuse einstellungen??
Muss ich das Programmierboard angeschlossen haben oder nicht??
Muss ich irgendeinen Jumper stecken??
Hat niemand das gleiche Problem wie ich???
Hubert.G
21.03.2009, 18:47
Es gibt leider eine ganze Menge von Kombinationen Programmer und Programme.
Als was wird der Klon im AVR-Studio erkannt. Schon verschiedene Einstellungen probiert.
Welche COM belegt der Klon im Gerätemanager. Ist der auch im AVR-Studio einstellbar.
Im AVRStudio wird der USBprog erkannt und im Geräte Manager steht er unter Jungo mit dem Namen AVRIP mkII!!
Wenn ich jetzt im AVRStudio auf den Button CON drücke kommt das Fenster wo ich die Schnittstelle auswählen kann!!
Dann wähl ich AVRIP mkII aus und geh auf USB!!
Dann steht folgende Meldung unten:
Detection on 'USB'...
AVRISP mkII with serial number 0000A0012825 found.
Getting is parameter.. SD=0x05..OK
Ich hab eigentlich so gut wie alle Fuses einstellungen durch sowie auch alle ISP Frequenzen!
Hubert.G
21.03.2009, 20:52
Jetzt noch an das Board anstecken, im Programmierfenster, Main, da sollte der richtige Controller eingetragen sein. Unter dem Button Settings steht die ISP-Frequenz, die sollte für den Anfang nicht höher als 115,2kHz sein.
Dann mal Read Signature drücken.
Ja hab ich ich hab die Frequenz auf 250kHz eingestellt und auf Signatur read gedrückt aber da kommt wieder der gleiche Fehler ISP Mode Error.
Hab es auch mit den restlichen Frequenzen getestet!!
Überall das gleiche nur das es bei 100Hz länger dauert und dan eine Weitere Fehlermeldung kommt das die Verbindung abgebrochen ist!!
MFG
Thomas
Hubert.G
21.03.2009, 22:11
Dann wird die Verbindung zu deinem Board nicht richtig sein, oder die Stromversorgung klappt nicht.
Muss aber eigentlich klappen die Stromversogrung mess am Atemaga32 auf dem Entwicklungsboard ca. 5V
Die Verbindung ist eigentlcih auch da sonst würde die Grüne LED nicht weiter leuchten wenn ich die Verbindung zum Computer unterbreche den dann bekommt sie die Spannung von der Entwicklungsboard!!
Hubert.G
22.03.2009, 10:08
Was steht in den Zeilen unten im Programmierfenster, ich denke mal das der Programmer den Mega32 nicht findet.
Wo meinst du im Programmierfentster??
Wo man die Fuses und die Frequenz einstellen kann oder im Editor wo man das Programm schreibt???
MFG
Thomas
Hubert.G
22.03.2009, 13:53
In dem man die Programmierfrequenz einstellt und Signatur lesen kann.
Nachdem ich AVRIP mkII und USB ausgewählt habe und Connect gedrückt hab erscheint das Fenster wo man die Frequenz ändern kann und die Singnatur auslesen kann und unten steht dann folgender Text:
Detection on 'USB'...
AVRISP mkII with serial number 0000A0012825 found.
Getting is parameter.. SD=0x05..OK
MFG
Thomas
Hubert.G
22.03.2009, 17:56
Wenn du dann auf Read Signature drückst, was steht dann drinnen.
Der Programmer scheint in Verbindung zum AVR-Studio zu funktionieren, nur in Richtung AVR spießt es.
Siehe oben die Datei Schaltplan.zip!!!
MFG
Thomas
Hubert.G
22.03.2009, 18:17
Wenn dein Kontroller neu ist dann stelle die ISP-Frequenz auf 125kHz, sonst ist die Wahrscheinlichkeit sehr groß das es trotz sonstiger richtigen Einstellungen nicht funktioniert.
Ich weiss nicht was du auf deinem Programmer für Jumper hast, es wird doch eine Beschreibung geben wofür diese sind.
Hubert.G
22.03.2009, 18:21
Hast du auf deinem Board, am Reset Pin 5V? Diese Spannung sollte, wenn du auf Read Signature drückst, kurz auf 0V gehen.
Hab noch mal nachgesehen und festgestellt das auf meinem USBprog eine ISP Schinttstelle ist aber auf meinem Entwicklungsboard eine ICSP Schnittstelle!!
Ist das das gleiche oder hat die andere eine andere Pin belegung??
Ich schau noch mal nach und mess alles durch!!
MFG
Thomas
Hab noch mal nachgeforscht und hab folgende Aussage gefunden:
Der Reset Jumper muss
gesteckt sein, wenn der ATMega32
von extern programmiert werden soll.
Meinen die den AVR auf dem Entwicklungsboard oder den auf dem USBprog da ist nähmlich auch ein Atmega32 draufgelötet!!
Wie kann ich den USBprog ohe Entwicklungsboard programmieren??
Alle Informationen zu USBprog Version 3 stehen auf volgender Seite:
http://www.embedded-projects.net/index.php?page_id=147
MFG
Thomas
Soll das heißen dass ich den USBprog zuerst extern über die ISP schnittstelle Programmieren muss bevor ich mit USB das Entwicklungsboard programmieren kann!!
MFG
Thomas
Hubert.G
22.03.2009, 19:45
Der Jumper muss gesteckt sein wenn du den Mega32 auf deinem USB-Prog neu programmieren willst. Das ist aber nicht notwendig da das AVR-Studio deinen Programmer ja richtig erkennt. Wie willst du ihn denn auch ohne Programmer programmieren.
Warum auf deinem Board ICSP steht wissen wohl nur die Entwickler.
Kontrolliere mal den Reset.
ja gut mach ich!!
MFG
Thomas
Gut habs jetzt getestet wenn ich auf read Signatur klicke verändert sich die Spannung am Reset Pin um ca. 0,6V und steigt dan sofort wieder an!!
Aber ich glaub das liegt am Messgerät das es nicht auf null runter geth da es viel zu träge ist bis es regiert ist die Spannung schon wieder da!!
Auch beim Verbinden (Connect) sinkt die Spannung leicht!!
MFG
Thomas
Gut jetzt funktioniert es, hab einfach mal das ISP Kabel von USBprog zu Entwicklungsboard ausgetauscht und schon kann man die Signatur auslesen!!
Nun da das entlcih funktioniert bin ich echt froh!!
Wie gehts jetzt weiter!!
Mach das alles zum ersten mal und es wär echt toll wenn mir einer erklären könnte wie ich jetzt ein Programm rüber spulen kann!!
MFG
Thomas
Hubert.G
23.03.2009, 10:13
Wenn du schon ein *.hex File hast für deinen Mega32
Connect, in Main muss der richtige Kontroller ausgewählt sein
dann Programm, in Flash das *.hex File auswählen, dann Programm
sollte es ein *.eep File auch geben dann das gleiche bei EEPROM nochmal mit *.eep.
Dann der Reiter Fuses, die Fuse werden automatisch ausgelesen, den Haken bei JTAG wegnehmen, sonst sind einige Pin an PortC blockiert.
Weitere Fuseeinstellungen siehe hier: www.engbedded.com/fusecalc/
Danke hat perfekt geklappt!!
Was ich noch wissen wollte startet das Programm nachdem ich es rüber geladen habe automatisch oder muss ich es über den PC-Starten!!
Bzw. über den Reset Taster auf dem Entwicklungsboard!!
MFG
Thomas
Hubert.G
23.03.2009, 18:25
Normalerweise startet das Programm von selbst.
Na gut ich schau mal!!
MFG
Thomas
HILFE!!!
Hab ausversehen bei Fuses auf Externes Quarz umgestellt und jetzt funktioniert die ISP verbindung nicht mehr was kann ich jetzt machen??
Ich hoffe es gibt da eine Lösung!!
MFG
Thomas
Hubert.G
23.03.2009, 19:42
Wenn du auf Externen Quarz gestellt hast, dann schließ doch eine Quarz an, wenn es der externe Clock ist, dann auf XTAL1 einen Takt anlegen, von einem anderen AVR oder einen NE555.
Bei einem niedrigen Takt auch auf eine niedrige Programmierfrequenz achten.
Hab ja ein externes Quarz dran von 8 MHz und auch bei Fuses hab ich auf 8MHz eingestellt trotzdem versteh ich es nicht warum es nicht Funktioniert!!
MFG
Thomas
Hubert.G
23.03.2009, 20:08
Hast du Ext. Crystal/Resonator genommen oder Ext.RC Osc.
Ich Glaub Extern RC. Osc.!!!!
Warum??
MFG
Thomas
Was kann ich jetzt machen um ihn wiedera uf intern 1MHz zu stellen???
Geht das überhaupt noch oder ist es das klugste einen neuen zu bestellen!!!
MFG
Thomas
Hubert.G
23.03.2009, 22:46
Es sollte wohl Ext. Crystal/Resonator sein wenn du einen Quarz dran hast.
Schalte in deinem Fall ein R/C wie im Datenblatt an. Den vorhandenen wegschmeissen ist doch schade.
Wie mach ich das eine RC-SChaltung an den Microcontroller anzuschließen??
Einfach einen Widerstand und einen Kondensator in reihe zu einem der beiden Eingänge XTAL1 oder XTAL2 schalten!!
MFG
Thomas
Hubert.G
24.03.2009, 20:44
Datenblatt Seite 26, da ist auch eine Zeichnung.
Ich hab ja ein Quarz drin das genau so eingebaut ist mit zwei Kondensatoren gegen Masse!!!
Oder ist das ein anderes Bauteil!!
MFG
Thomas
Hubert.G
24.03.2009, 21:16
Schau dir das im Datenblatt an, Quarz und Ext. RC sind unterschiedlich in der Anschaltung.
RP6conrad
24.03.2009, 21:27
Kann auch sein das du den fuse auf "externe clock" gesetzt hat. Dan gibt da die moglichkeit von eines externes Clocksignal aan XTAL1 anzulegen. Das externe signal darf eine Frequenz von 1 kHz bis 8 MHz haben. Dan konnen sie wieder die Fuse ueber ISP richtig programmieren. Die ISP frequens darf max 1/4 sein von die angelegte externe frequenz. Habe so meine mega 32 gerettet !!
Na gut aber woher nimm ich den das Clock-Signal und welches Signal ist das überhaupt??
MFG
Thomas
RP6conrad
25.03.2009, 20:09
Das Clock-Signal ist ein rechteck-signal das immer umschaltet zwischen high und low (5V nach 0 V nach 5 V....). So ein Signal kan man einfach mit ein andere µcontroller erzeugen. Oder mit eine einfache oscillator Grundschaltung . Selbst ihre Soundkarte kan so etwas, obwohl da wahrscheinlich die Spannungen nicht stimmen.
Wie kann man die Frequenz dann einstellen von 8MHz??
Muss ich das irgendwie ausrechnen oder ist das egal!!
MFG
Thomas
Hubert.G
26.03.2009, 18:28
f=1/(3RC) steht im Datenblatt. Wobei C nicht kleiner als 22p sein darf.
Ist aber sicher nicht so genau wenn du nicht exact eine Frequenz haben willst.
RP6conrad
26.03.2009, 18:47
Die frequenz ist absolut egal, kan auch 10 kHz sein oder so. Du muss naturlich immer die ISP frequenz kleiner wahlen dan 1/4 von diese frequenz. Bei 10 KHz mas 2500 Hz !! Dan erst der fuse wieder richtig einstellen und du hat wieder die 8 MHz von das crystal.
Danke für alle die Tips jetzt Funktionierts endlich wieder!!
MFG
Thomas
Servus,
ich hät nochmal ne frage!!
brauch ich für das Empfangen von Daten vom Microcontroller eine weitere Schnittstelle oder läuft das auch über ISP??
Weil ich hab auch noch ne RS232 Schnittstellle auf meinen board!!
MFG
Thomas
Hubert.G
02.04.2009, 16:56
Wenn du vom µC zum PC willst, dann ist RS232 schon richtig. Da funktioniert auch ein RS232-USB-Wandler.
Und wo seh ich dann die Empfangenen Daten vom Microcontroller??
Muss ich da irgendein Terminal öffnen oder was??
MFG
Thomas
Hubert.G
02.04.2009, 17:23
Ja, richtig, wenn du keine eigene Anwendung hast die diese Daten aufnimmt, dann am einfachsten mit Terminal.
Welches nimm ich da das ganz normale Terminal von Winsows oder etwas anderes??
MFG
Thomas
Hubert.G
02.04.2009, 17:42
Mit dem Terminal von Windows funktioniert es einwandfrei.
Muss ich da irgendetwas einstellen beim Winsows Terminal oder einfach aufrufen und dann kommen die Daten???
Und was muss ich im Programm schreiben und Daten zu empfangen??
Hab zwar das Toturial gelesen doch ich weiß nicht so genau wie ich das machens soll!!
Programmiere alles in C zur Zeit und komm eigenltich schon ganz gut zu recht!!
Gilt das immer noch das man Wörter mit printf schicken kann oder nicht???
MFG
Thomas
Hubert.G
02.04.2009, 19:39
Beim Terminal muss man COM, Datenrate wie im µC einstellen.
Ich verwende die Bibliothek von Fleury für den UART, funktioniert sehr gut.
Jetzt muss ich leider kurz mal blöd fragen aber wie stellt man den COM und die Baudrate beim Terminal ein??
Hab das leider noch nie gemacht!!
MFG
Thomas
Hubert.G
02.04.2009, 21:21
Gleich im zweiten Fenster bei "Verbinden mit" wird nach der COM gefragt, dann OK, dann kommst die Baudrate, Flusssteuerung auf kein stellen.
Meinst du schon die Eingabeaufforderung von Windows??
Oder das Hyper Terminal??
MFG
Thomas
Hubert.G
03.04.2009, 10:31
Schon das HyperTerminal
Hubert.G
03.04.2009, 10:33
Schon das HyperTerminal. Im ersten Fenster nach dem Aufruf musst du einen Namen eingeben, unter diesem kannst du dann die Einstellungen speichern.
Hubert.G
03.04.2009, 10:34
Schon das HyperTerminal. Im ersten Fenster nach dem Aufruf musst du einen Namen eingeben, unter diesem kannst du dann die Einstellungen speichern.
Hubert.G
03.04.2009, 10:44
Schon das HyperTerminal. Im ersten Fenster nach dem Aufruf musst du einen Namen eingeben, unter diesem kannst du dann die Einstellungen speichern.
Hubert.G
03.04.2009, 11:05
Schon das HyperTerminal. Im ersten Fenster nach dem Aufruf musst du einen Namen eingeben, unter diesem kannst du dann die Einstellungen speichern.
Hubert.G
03.04.2009, 13:28
Schon das HyperTerminal. Im ersten Fenster nach dem Aufruf musst du einen Namen eingeben, unter diesem kannst du dann die Einstellungen speichern.
Na gut hab mir jetzt Hyper Terminal heruntergeladen aber wenn ich es starte kommt immer das ich die Ortsvorwahl und andren Telefon-Kram einstellen kannn aber nirgends kann ich eine Schnittstelle oder so was einstellen!!!
MFG
Thomas
Hubert.G
03.04.2009, 16:01
Wenn du aber, in dem Fenster, Verbindung herstellen über COMx aktivierst, dann verschwindet der Telefonkram.
Bei mir geht das nicht mit dem Verbindung Einstellen!!
Unter welchem Untermenü find ich das mit dem auf COM umstellen??
Und ich mach das mit einem USB/RS232 Adapter!!
Geht das auch oder muss ich da eine RS232-Schnittstelle haben??
MFG
thomas
OK hab jetzt ein anderes Programm COM Terminal!!
Was muss ich jetzt im Programm reinschreiben um Daten zu senden??
MFG
Tomas
Hubert.G
03.04.2009, 21:40
Jetzt musst du den UART aktivieren das er Daten sendet, z.B. mit der UART-lib von Fleury. Oder das Beispiel hier von RN-Wissen.
Na gut ich tests a mal!!
MFG
Thomas
Habs getestet aber wenn ich ein X zu senden Versuche kommmt nichts bei meinem Computer an!!
Woran kann das liegen???
MFG
Thomas
Hubert.G
07.04.2009, 16:01
Mal probieren ob die Verbindung zu PC klappt.
Den Mega32 aus dem Sockel nehmen, am Sockel zwischen RXD und TXD eine Brücke machen, das ist Pin14 und 15.
Wenn du jetzt vom PC ein Zeichen sendest muss es als Echo zum PC zurück kommen. Damit weisst du das bis zum Mega32 alles OK ist.
oberallgeier
07.04.2009, 17:16
Hallo Ihr,
irgendwann war ich über diese Postings zum mega32 gestolpert:
Wie ... eine RC-SChaltung an den Microcontroller anzuschließen ...
Datenblatt Seite 26, da ist auch eine Zeichnung.
Als experimentierlustiger Mensch - und weil ich gerade anderweitig keine Lust hatte UND weil mir so etwas auch passieren kann - habe ich das ausprobiert. Zuerst hatte ich mich vergewissert, dass sinngemäße Informationen auch zu tiny2313 und m168 in den zugehörigen Datenblättern standen. Danach hatte ich mir die Application note AVR051, Rev. 2507A–AVR–02/02 zu Gemüte geführt und die dortige Schaltung Fig. 1 aufgebaut.
Die Schaltung entspricht im Wesentlichen der m32-Dokumentation Figure 8-3 External RC Configuration, Seite 29. Ich habe sie mit SMD-Bauteilen auf einer klitzekleinen Platine aufgebaut:
Vcc ---Drahtstück100mm---10M----Abzweig10mm-----22pF-----Drahtstück100mm----- GND, also genau nach der Application Note.
Danach gings los:
1. Die Fuses in einem tiny2313 auf External Oszillator gesetzt.
2. Den "Abzweig" (siehe oben) in den Kontakt XTAL1 von einer Controllerplatine mit dem t2313 gesteckt.
3. Nix passiert, die Fuses waren weder zu lesen noch zu schreiben. Auch eine Blink-LED, die ohne Timer läuft, blinkte nicht.
4. Ein Signal 1 MHz / 2V vom Oszilloskop war bei mir nicht in der Lage, den Controller zum Laufen zu bringen.
5. Ein externes Signal 36 kHz von einem M168 auf einer Flash+Experimentierplatine, eingeleitet über ein 200 mm Drahtstück, brachte den tiny2313 dazu, dass die Fuses gelesen und wieder (auf ordentliche Funktion mit Quarz) gesetzt werden konnten.
6. Ähnliche Fehlergebnisse, siehe 1. bis 4., bekam ich auch mit dem m168 auf der eben genannten Platine.
Hab mal ne Frage hab mir nochmal den Schaltplan angesehen und kann das vielleicht sein das ich die Verbindung von der RS232-Schnittstelle erst mit dem Microcontroller verbinden muss??
Wenn ja muss ich nur RX und TX oder auch RTS und CTS mit dem Microcontroller verbinden??
MFG
Thomas
Schaltplan siehe Anhang!!
Hubert.G
07.04.2009, 21:15
Du musst nur RX und TX mit den Kontroller verbinden.
wie geths des eigentlich mit dem senden bei Hyper-Terminal??
Einfach auf call gehen oder was!!!
MFG
Thomas
Hubert.G
07.04.2009, 22:18
Die Buchstaben werden mit Enter gesendet.
Ja schon aber wenn ich auf Enter drücke steht immer dort das die COM nicht geöffnet werden kann oder das halt keine Verbindung hergestellt werden kann!!
An was kann das liegen??
Ich hab TX und RX mit dem Microcontrolller verbunden und hab dann einfach eine Brücke zwischen RX und TX (ohne Microcontorller) gemacht!!
Hab dann meine RS232-Schnittstelle mit der serriellen Schnittstelle vom Computer verbunden und dan im Terminal die richtige Verbindung eingestellet!!
Aber es funktionierte einfach nicht!!
Was soll ich jetzt machen damit es doch noch klappt???
MFG
Thomas
Hubert.G
08.04.2009, 18:47
Das ist ein Problem mit den PC, entweder ist die COM schon durch ein anderes Programm belegt, oder es ist sonst ein Problem mit dem PC. Die Schnittstelle wird geöffnet, auch wenn nichts dran hängt.
oberallgeier
08.04.2009, 19:10
... Ich hab TX und RX mit dem Microcontrolller verbunden ... es funktionierte einfach nicht ...Nicht böse sein, wenn ich mich jetzt einmische: Ähnliches ist mir schon ein paarmal passiert. Meine Stecker für die RS 232 an der Controllerplatine haben immer drei Pinns: RX_GND_TX. Da ist es recht einfach, die Anschlussbuchse zu drehen - das führte bei mir schon gelegentlich zur Lösung von verzweifelten Versuchen, eine nicht funktionierende RS 232 zum Laufen zu bringen.
Kurzfassung: Probier mal in der Verbindung Controller <-> PC die Leitungen RX und TX zu tauschen.
Das ist ein Problem mit den PC, entweder ist die COM schon durch ein anderes Programm belegt, oder es ist sonst ein Problem mit dem PC. Die Schnittstelle wird geöffnet, auch wenn nichts dran hängt.
Glaub ich eher nicht habs nähmlich schon mit meinem alten PC mit directer serieller Schnittstelle und mit einem USB/Serieall Wandler probiert und bei beiden trit der selbe Fehler auf!!!
Habs auch schon mit Unterschiedlichen Computern versucht!!
Wenn es mit einem anderen Programm belegt ist was kann ich dann machen um es frei zu kriegen??
MFG
Thomas
RP6conrad
08.04.2009, 22:16
Windows Terminal ist nicht ideal. Probier mal mit Brays Terminal. http://bray.velenje.cx/avr/terminal oder auf www.smileymicros.com
Nicht böse sein, wenn ich mich jetzt einmische: Ähnliches ist mir schon ein paarmal passiert. Meine Stecker für die RS 232 an der Controllerplatine haben immer drei Pinns: RX_GND_TX. Da ist es recht einfach, die Anschlussbuchse zu drehen - das führte bei mir schon gelegentlich zur Lösung von verzweifelten Versuchen, eine nicht funktionierende RS 232 zum Laufen zu bringen.
Kurzfassung: Probier mal in der Verbindung Controller <-> PC die Leitungen RX und TX zu tauschen.
Kann aber bei mir gar nicht passieren denn bei mir steck ich den RS232 Stecker direkt auf die Platine da ist nähmlich eine Buchse die dann direkt auf einen anderen Chip geth und hinten kommen dann die zwei Anschlüsse RX und TX raus die ich mit dem Microcontorller verbunden habe!!
Na ja kann das vielleicht daran liegen das ich den anderen Chip der für das Umwandeln der RS232 in die ausgänge TX und RX verantwortlich ist irgendwetwas machen muss das der dann funktioniert???
MFG
Thomas
Gut jetzt funktioniert es!!
Mit dem neuen Terminal vom RP6conrad klappt das wenn ich eine Brücke zwischen TX und RX setzte bekomm ich die Gesendeten Zeichen wieder zurück ohne irgendwelche verluste oder os!!
Kann mir einer mal sagen ob ich beim Programmierten vom Atmega32 irgendetwas anderes beachten muss als beim Atmega16??
Also wenn ich Zeichen senden und empfangen will!!
MFG
Thomas
Hab jezt mal ein Programm auf den ATMEGA32 geladen das mir ein Zeichen zusenden sollte!!
siehe Anhang!!!
Wenn ich es rüber Lade passiert erst mal gar nichts und es kommen auch keine Zeichen.
Wenn ich jetzt aber TX und RX mit einer Brücke verbinde kommen irgendwelche komischen Zeichen und dazwischen kommt auch immer das Zeichen das ich versuche zu Senden!!
Kann mir einer vielleicht sagen was an meinem Programm nicht stimmt,
wäre echt toll wenn einer meinen Fehler findet und mir sagt wie es richtig geht!!!!
MFG
Thomas
Hubert.G
10.04.2009, 09:58
In das UBRR-Register gehört der Wert aus der Tabelle im Datenblatt geladen, abhängig von der Quarzfrequenz.
Nur RX und TX verbinden kommt mir etwas komisch vor.
Hast du in deinem Terminalprogramm auch zwei Stopbit drinnen?
OK aber ich hab ja keine Quarzfrequenz denn ich arbeite immer nohc mit dem internen Oszillator!!
Der hat wenn mich nicht alles täuscht doch ca. 1MHz oder?
Ja wenn ich TX und RX unterm laufenden betrieb verbinde kommen irgendwelche komischen Zeichen die man aber nicht lesen kann an und dazwischen immer wieder das Zeichen das er senden sollte!!
Ich glaub das es bei diesem Terminal keine Stoppbist oder Startbist gibt!!
MFG
Thomas
Hubert.G
10.04.2009, 13:56
Doch, oben rechts sind die Stopbits angeführt, stehen auf 1Stopbit.
Du solltest auch auf 4800 oder 2400 heruntergehen, bei 9600 ist der Fehler zu groß.
Ohne Quarz wirst du ohnehin Probleme bekommen, der interne Oszillator ist zu ungenau für eine korrekte Übertragung.
Gut hab jeztzt die richtige Tabelle gefunden aber woher weiß ich jetzt welchen Wert ich benuzte?
Denn da gibt es Zwei Spalten eimal U2X = 0 und einmal U2X = 1!!
Welche von den beiden soll ich jetzt nehmen??
Wenn ich dan den richtigen Wert habe soll ich den dann einfach in mein Programm unter Baudrate rein schreiben oder was??
Soll ich dann den Wert UBRR benutzen oder??
MFG
Thomas
Doch, oben rechts sind die Stopbits angeführt, stehen auf 1Stopbit.
Du solltest auch auf 4800 oder 2400 heruntergehen, bei 9600 ist der Fehler zu groß.
Ohne Quarz wirst du ohnehin Probleme bekommen, der interne Oszillator ist zu ungenau für eine korrekte Übertragung.
Na gut ich geh mal runter auf 2400!!
Ich hät schon ein 8MHz Quarz dran aber ich weiß nicht so recht wie ich das einschalte!!
Will ja nicht wieder irgendetwas verstallen das es dann nicht merh funktioniert!!
MFG
Thomas
Hubert.G
10.04.2009, 16:38
Du musst Ext.Crystal/Resonator High Freq.: Startup Time 256CK+64ms einstellen. Dann läuft der Quarz.
UBRR musst du dann natürlich für 8MHz nehmen. Dann geht auch wieder 9600.
Das gibts es bei mir nicht es gibt nur:
Ext. Crystal/Resonator High Freq.: Startup Time 258CK+64
Weiß nicht was soll ich da machen??
MFG
Thomas
Hubert.G
11.04.2009, 11:07
Das ist schon richtig, das musst du aktivieren. zuerst die Fuses lesen, dann nur das für den Quarz ändern und wieder schreiben, dann kann nichts schief gehen.
Alles klar hat funktioniert er läuft jetzt über den externen Quarz!!
Habs natürlich gleich wieder getestet das mit dem senden aber es kommt immer noch nichts!!
Nur wenn ich die beiden Leitungen von TX und RX verbinde kommen diesmal nicht mehr so komische Zeichen sonderen irgendwelche buchstaben und Zahlen weiß auch nicht was das bedeutet!!
MFG
Thomas
Hubert.G
11.04.2009, 13:39
UBRR hast du aber laut Datenblatt eingestellt. Kontrolliere noch mal alles, das es mit den Terminaleinstellungen überein stimmt.
Ja hab UBRRH auf 0 gestellt und UBRRL auf 51 gestellt!!!
Hab ja jetzt die 8MHz Tabelle benutzt und auf eine Baudrate von 9600
gestellt!!
Auch das Gerät selbs also die COM Schnittstelle hab ich auf 9600 gestellt und 1 Stoppbit!!
Im Terminal hab ich die glecihen einstellungen wie auf der COM Schnittstelle!!
UCSRB hab ich auf 0x18 gestellt für senden und empfangen!!
Und UCSRC hab ich auf 0x86 gestellt für 8 Datenbits!!
Hab ich noch irgendetwas vergessen??
MFG
Thomas
Hubert.G
11.04.2009, 21:41
Ich denke mal nicht das du was vergessen hast. Es sollte so funktionieren.
Aber an was könnte es dann noch liegen??
Bin echt verzweifelt hab alles mögliche schon ausprobiert und es klappt trotzdem nicht!!
MFG
Thomas
Hubert.G
12.04.2009, 18:21
Schick mir noch mal deinen aktuellen Code, dann probier ich es mit meinem Testboard.
Gut ist echt toll da du ihn mal testest für mich!!
Hir der aktuelle Code:
#include <avr/io.h>
#include <stdio.h>
#include <avr/delay.h>
int main (void)
{
UBRRH = 0;
UBRRL = 51;
UCSRC = 0x86;
UCSRB = 0x18;
while(1)
UDR = 's';
return 0;
}
MFG
Thomas
Hubert.G
12.04.2009, 21:30
So läuft es bei mir, allerdings auf einem Mega16, das sollte aber egal sein.
#include <avr/io.h>
#include <stdio.h>
//#include <avr/delay.h>
int main (void)
{
UBRRH = 0;
UBRRL = 51;
UCSRB = (1<<RXEN)|(1<<TXEN);
UCSRC = (1<<URSEL)|(3<<UCSZ0);
//UCSRC = 0x86;
//UCSRB = 0x18;
for(;;){
while ( !( UCSRA & (1<<UDRE)) ) ;
UDR = 's';
}
}
Gut hab auch den Fehler gefunden jetzt läufts bei mir auch!!
Hab TX und RX mal umgedreht und schon läuts!!
MFG
Thomas
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.