Hallo, ich habe eine absolute Anfängerfrage und hoffe daher, dass mein Problem schnell gelöst werden kann. Ich hab schon gesucht, aber irgendwie bin ich wohl der einzige, der das nicht auf die Reihe bekommt. :D Ich scheitere nämlich schon am allerersten Punkt im AVR-Tutorial, dem Anschluss der 6 LEDs an die IO-Ports. Sie leuchten einfach nicht. Ein Foto von meinem Steckbrett habe ich angehängt. Es sieht leider nicht allzu ordentlich aus, aber ich hoffe, man erkennt das Grundlegende. Die Stromversorgung ist vorhanden und liefert die nötigen 5V, auch die Pins für Vcc und GND am uC sind richtig angeschlossen. Soweit ich das jetzt beurteilen kann, glaube ich nicht, dass der Fehler dort liegt. Geschrieben habe ich das Programm mit AVR Studio 4 und auch direkt dort assembliert (über den Menüpunkt Build). Dann bekomme ich auch eine *.hex-Datei und die Meldung "Assembly complete, 0 errors, 0 warnings". Die beiden Dateien habe ich auch mal mit angehängt. Auf den uC wollte ich es dann mit Ponyprog2000 bekommen, da yaap ihn nicht erkennt (nutze ein Pollin-Board) und avrdude nur für nicht einmal eine Sekunde kurz ein Fenster öffnet und sich gleich wieder schließt. Ich habe dort also die Datei leds.hex geöffnet und auf Write Device geklickt. Wenn ich ihn dann wieder auslese, kommt das Bild, welches ich auch angehängt habe. Ich kenne mich nicht gut genug aus, um sagen zu können, ob das Programm jetzt richtig auf den uC geschrieben wurde. Ich persönlich vermute den Fehler entweder beim assemblieren oder beim übertragen auf den uC. Das ist jetzt etwas viel Text für so ein kleines Problem, aber ich muss jetzt los auf Arbeit und kann daher nicht so regelmäßig hier reinschauen. Deswegen versuche ich, so viel wie möglich dazu zu schreiben, damit so wenige Nachfragen wie möglich nötig sind. Habt bitte also auch Nachsehen mit mir, wenn ich nicht prompt zurückschreiben kann und denkt nicht, ich hätte den Thread hier vergessen. Mir wurde beim Zusammenstellen der Einkaufsliste hier schon sehr gut geholfen und ich bedanke mich auch jetzt schon einmal im Voraus für jede Hilfe! Mit freundlichen Grüßen, Andi
So wird das nichts. Du hast ja nichts gemacht auf deinem Controller. Versuch es mal mit der angehängten Datei und versuche nachzuvollziehen was da passiert. Auch Kommentare machen sich im Programm sehr gut. Mein Beispiel ist zwar für den ATMEGA 32, aber das sollte mit dem richtigen "include m8.def" auch richtig laufen. Du musst nur auf die Portzuordnung achten. Im Übrigen kann ich dir nur dringend ein Buch empfehlen um die Wissenslücken zu schließen! Gruß, Jens
Morgen, wäre nett wenn du dein "Programm" was du geschrieben hast mal rein stellst. Dann kann man schon einiges sagen :) ob das passen kann oder nicht. Gruß
Hi >wäre nett wenn du dein "Programm" was du geschrieben hast mal rein >stellst. Dann kann man schon einiges sagen :) ob das passen kann oder >nicht. Hat er doch. @Andi Teste doch mal ohne Controller, ob die LEDs bei entsprechendem Pegel leuchten. MfG Spess
oh da^^ hab nur die bilder gesehn xD
@Jens: Verstehe ich das richtig: Auf dem Controller ist kein Programm "angekommen" und er ist nicht weiter beschrieben? Das würde natürlich erklären, warum sich nichts tut, aber wie muss ich denn die *.hex-Datei mit PonyProg öffnen und richtig auf den Controller schreiben? Bis jetzt habe ich das so gemacht: PonyProg geöffnet, die Datei leds.hex geöffnet und dann auf "Write Device" geklickt. Dann kam der Statusbalken. Aus dem Code, den PonyProg mir liefert, wenn ich anschließend auf "Read Device" klicke, kann ich als Anfänger aber nicht schließen, ob der Controller jetzt beschrieben wurde. Oder muss ich statt auf "Write Device" auf "Write Flash" oder so klicken? Dein Programm teste ich, sobald ich in die Mittagspause komme, so in ein bis zwei Stunden. Danke auf jeden Fall. Ein Buch wollte ich mir auch suchen, aber das wollte ich an sich hier nicht direkt fragen, da ich über die Suche ja bestimmt was gefunden hätte. Ein wenig Eigeninitiative will ich ja schon zeigen. Aber wenn du es schon ansprichst - hast du vielleicht einen Geheimtipp für einen Einsteiger wie mich? @spess53: Alle LEDs hab ich noch nicht durchprobiert, aber ich hab es mal mit einer versucht. Die hat geleuchtet. Also sollte der Vorwiderstand schon so passen. Das schließt natürlich nicht aus, dass die anderen LEDs einen Knacks weg haben, die kommen aber direkt frisch aus der Packung. Stimmt den der Aufbau auf dem Steckbrett so?
Hmm.. ich sehe da keinen Oszillator auf dem Steckbrett... Fuses richtig gesetzt? Siehe auch "Hinweis: Konfigurieren der Taktversorgung des ATmega8" im Tutorial.
@Torsten: Richtig, ich habe noch keine externe Taktversorgung angeschlossen, ich hatte gehofft, dass der interne Takt zumindest für die Versuche mit den LEDs ausreichend ist. Und jetzt bekomme ich wahrscheinlich gleich eins auf den Deckel. :D Also ist dein Tipp, den Takt per Quarz vorzugeben (was anderes habe ich nicht zur Hand) und es nochmal zu probieren?
Andi Finkler schrieb: > Richtig, ich habe noch keine externe Taktversorgung angeschlossen, ich > hatte gehofft, dass der interne Takt zumindest für die Versuche mit den Das ist er auch voll und ganz. Der Verdacht war eher, dass du bei den Fuses zwar externen Takt eingestellt, aber keinen angeschlossen hast. Wenn du das ausschließen kannst, liegts an was anderem. Auf einem Atmega8 bei mir läuft das Programm übrigens. PB0-1 sind 0V, PB2-7 sind Vcc.
Andi: Wie Michael schon geschrieben hat: Wenn du an den Fuses nichts geändert hast, sollte es gehen, ES SEI DENN du hast den Controller nicht "so" gekauft, sondern er war bei einem Entwicklungsboard dabei wie bei mir - Da war nämlich schon ein Testprogramm drauf und die Fuses für den On-Board-Quarz gesetzt. Wenn Du Ponyprog nutzt (kenne ich nicht, da ich Linux nutze und es hier andere Tools gibt) dann schau mal im Abschnitt "Fuses setzen" auf: http://wiki.ctbot.de/index.php/Ponyprog Im Menü "Command | Security and Configuration Bits..." oder das Schloßsymbol. Hier gibt es den Button "Read", schau mal welche Fusebits gesetzt sind. Bitte beachte den Hinweis im Abschnitt unbedingt: Falsches setzen der Fuses könnte den Controller temporär unbrauchbar machen. Ich würde nen ext. Quarz oder Resonator nehmen (ist auf meinem AVR Board mit drauf). Noch ein Link: http://www.rn-wissen.de/index.php/Avr myAVR Board MK2 USB -> Ich hatte mir den Bausatz des http://shop.myavr.de/Systemboards/myAVR%20Board%20MK2%20USB,%20best%C3%BCckt.htm?sp=article.sp.php&artID=40 geholt damit ich nen USB-Programmer hab, und was zum spielen...
Nein, externer Takt ist nicht aktiviert. An den Fuses hab ich auch noch nicht rumgestellt. Wenn ich Command | Security and Configuration Bits aufrufe, hab ich deutlich weniger Optionen als im Link beschrieben (siehe Anhang). @Michael: Wenn das Programm bei dir läuft, muss bei mir entweder was an der Schaltung nicht stimmen (was ich nicht glaube, schon nachgeschaut) oder beim überspielen auf den Controller. Kann mir jemand erklären, der vielleicht selber PonyProg benutzt, ob mein Weg, die Datei auf den Controller zu bekommen, richtig ist? Wenn ich das Programm von Jens auf den Controller spiele, sieht das in PonyProg schon deutlich anders aus als auf meinem ersten Screenshot, wenn ich auf Read Device klicke. Es kommt also etwas dort an. Das Programm funktioniert aber trotzdem nicht, hab den Fehler aber noch nicht gefunden. Oder hab ich vielleicht beim assemblieren der Datei was falsch gemacht? Tut mir Leid, dass ich mich so dumm anstelle, aber ich bin halt einfach noch total unerfahren, was das alles angeht. Aber danke für die tolle Hilfe hier! LG Andi
Hi
>Oder hab ich vielleicht beim assemblieren der Datei was falsch gemacht?
Nein, der Hex-Code vom Anfang passt schon zu deinem Programm. Ist das
dein erster Versuch?
MfG Spess
Hm, ok. Ja, ist mein erster Versuch mit uCs. Das ist wirklich ärgerlich. Ich denke, heute Abend bauch ich die komplette Schaltung noch einmal neu auf, vielleicht liegt ja wirklich dort der Fehler. Kann ich denn irgendwie erkennen, ob die *.hex-Datei richtig auf dem Controller ankommt? Soll ich vielleicht einfach mal einen anderen uC (hab noch einen auf Reserve) probieren? LG Andi
Oh Gott.. ich trau es mich ja gar nicht zu sagen. Ich hab die LEDs falsch herum gepolt. Dabei dachte ich, ich hätte extra nochmal nachgeschaut, wierum die gehören, als ich die Schaltung aufgebaut habe. Tut mir Leid an alle diejenigen, die jetzt hier ihre Zeit mit mir verschwenden mussten. Und ein großes Dankeschön. Ihr seid wirklich super. Hoffentlich bleibe ich von weiteren Missgriffen dieser Art verschont. Ich hatte zwar schon selber einige Stunden damit verbracht, nach einer Lösung für das Problem zu suchen, aber ich hätte doch einfach nochmal den Aufbau der Schaltung überprüfen sollen. Asche über mein Haupt. LG Andi
Hi Reduziere deine Schaltung erstmal auf eine LED. Die Taster und die anderen LEDs kannst du wieder einsetzen, wenn es mit der einen geklappt hat. >Wenn ich Command | Security and Configuration Bits aufrufe, hab ich >deutlich weniger Optionen als im Link beschrieben (siehe Anhang). Die Security Bits brauchst du erstmal nicht. Das mit den Optionen sind die Fuses. Aber die kannst du vorerst auch in Ruhe lassen. Maximal Lesen. Pony Prog kenne ich nicht. Aber vielleicht gibt es ein 'Verify'. Damit lässt sich der Programmspeicher mit den zu programmierenden Daten vergleichen. MfG Spess
Verify gibts, sagt auch alles ok. Jetzt läufts ja. Besten Dank für die Hilfe! :)
Hi >Verify gibts, sagt auch alles ok. Jetzt läufts ja. Besten Dank für die >Hilfe! :) Noch etwas: Bei deinem Aufbau solltest du beide VCCs und beide GNDs anschließen. Und jeweils einen 100n Keramik-C zwischen VCC und GND. MfG Spess
Hab gerade deswegen im datasheet nachgeschaut, den zweiten GND-Pin finde ich. Neben dem einen Vcc-Pin finde ich nur noch AVcc, meinst du den mit zweitem Vcc-Pin? Kurze Erklärung wieso wäre übrigens nett! :) Will doch dazulernen. ;) Gilt das speziell für diesen Aufbau oder sollte ich das immer machen? Dankeschön!
Hi >Neben dem einen Vcc-Pin finde ich nur noch AVcc, meinst du den mit >zweitem Vcc-Pin? Ja. >Kurze Erklärung wieso wäre übrigens nett! :) Will doch dazulernen. ;) >Gilt das speziell für diesen Aufbau oder sollte ich das immer machen? >Dankeschön! http://www.atmel.com/dyn/resources/prod_documents/doc1619.pdf http://www.atmel.com/dyn/resources/prod_documents/doc2521.pdf MfG Spess
Andi Finkler schrieb: > Verify gibts, sagt auch alles ok. Jetzt läufts ja. Besten Dank für die > Hilfe! :) Äh, wirklich? Das Programm fummelt kurz an DDRB und hängt dann in einer Endlosschleife:
1 | .include "m8def.inc" |
2 | |
3 | ldi r16, 0xFF |
4 | out DDRB, r16 |
5 | |
6 | ldi r16, 0b11111100 |
7 | out PORTB, r16 |
8 | |
9 | ende: rjmp ende |
Sorry, ich war zu schnell mit dem Abschicken. Ich hatte gedacht, da soll was blinken, weil ich es immer blinken lasse. Aber man soll nicht von sich auf andere schließen...
@Spess: Danke für die Links! Werde sie mir zu Gemüte führen. @Graue Maus: Kein Problem. :)
Hey, ich will nicht gleich einen neuen Thread aufmachen, deswegen stelle ich die Frage nochmal hier. Ich habe oben ja schon ein Bild gezeigt, wie es aussieht, wenn ich mit PonyProg die FuseBits auslesen lasse. Wenn ich jetzt externen Takt aktivieren möchte, müsste ich ja deutlich mehr Kästchen zur Auswahl haben. (Bsp.: http://www.klaus-leidinger.de/mp/Mikrocontroller/AVR-Prog/PonyProg-Fuse.jpg ) Wie mache ich das also? yaap erkennt den Controller nicht und avrdude startet nur kurz ein kleines Fenster, was sich sofort wieder schließt. Sind die ganzen Probleme etwa auf das billige Pollin-Board zurückzuführen? LG Andi
Andreas Finkler schrieb: > Hey, > ich will nicht gleich einen neuen Thread aufmachen, deswegen stelle ich > die Frage nochmal hier. Ich habe oben ja schon ein Bild gezeigt, wie es > aussieht, wenn ich mit PonyProg die FuseBits auslesen lasse. Stell mal im PonyProg den verwendeten Mega8 direkt ein und lass den Prozessortyp nicht von PonyProg bestimmen.
Andreas Finkler schrieb: > Wie mache ich das also? yaap erkennt den Controller nicht und avrdude > startet nur kurz ein kleines Fenster, was sich sofort wieder schließt. > Sind die ganzen Probleme etwa auf das billige Pollin-Board > zurückzuführen? Ich konnte ein Pollinboard (Pollin Funk-AVR-Evaluationsboard) schon mit Avrdude programmieren. Ich mache das sogar standardmäßig mit Avrdude. Das verschwindende Fenster ist schnell behoben: Öffne unter Windows mit Start -> Ausführen -> Cmd eine Konsole (Shell) und tippe dort den Startbefehl für Avrdude inkl. Kommandozeile direkt oder als Batchfile ein. Du kannst auch bequem die Programmmeldungen von Avrdude in eine Datei umleiten und hier für die Ferndiagnose anhängen. http://www.mikrocontroller.net/articles/AVRDUDE#Textausgabe_in_Datei_umleiten.3F
@Karl Heinz: Ah, sehr gut, hat funktioniert, jetzt sehe ich mehr. Ich versuch dann gleich mal, auf externen Takt umzustellen. @Stefan B: Ok, das Programm habe ich geschafft zu starten (Google sei Dank, ich kenne mich mit der Konsole gar nicht aus). Er zeigt mir auch die verschiedenen Optionen an (also sowas wie -p <partno> specify AVR device), aber danach kommt wieder die Zeile C:\Dokumente und Einstellungen usw. Habe schon versucht, einfach dann den Befehl avrdude-5.3.1 -p einzugeben, dann kommt aber: can't open file "": no such file or directory.
Ups... jetzt tut sich gar nichts mehr und ich weiß nicht, wieso. Ich hab also im Datenblatt nachgeschaut, welche Bits ich setzen muss. Für internen Takt steht dort 0001. Bei PonyProg sind bei CKSEL 3, 2 und 1 ein Haken gesetzt, bei CKSEL 0 nicht. Passt auch zu der Beschreibung bei PonyProg, dass ein Häkchen programmiert bedeutet. Für externen Quarz steht im Datenblatt 0101. Häkchen entsprechend gesetzt und jetzt bekomme ich die Meldung "Device missing or unknown". Dabei hatte ich mich extra vergewissert, dass ich die richtigen Häkchen setze. Hat hier jemand vielleicht einen Atmega8 mit externen Quarz und kann mir zeigen, wie bei ihm in PonyProg die Häkchen gesetzt sind? Danke! Oder muss ich sonst noch weitere Häkchen umstellen? LG Andi
Andreas Finkler schrieb: > PonyProg, dass ein Häkchen programmiert bedeutet. Für externen Quarz > steht im Datenblatt 0101. Welchen Quarz hast du?` Da ich nicht davon ausgehe, dass du einen kleinen Quarz genommen hast (denn dann hättest du dir die ganze Aktion auch sparen können): Im Datenblatt, Tabelle 4 / Seite 27 steht aber ganz was anderes.
Der Quarz hat 4 Mhz. Hab mich nach der Tabelle auf Seite 26 gerichtet (Table 2). Tut mir Leid, hab mich auch vertan, meinte 1010. Da stehen ja auch immer zwei Zahlen, in dem Fall 1111-1010. Aber ich befürchte gerade, ich sehe meinen Fehler. Wenn ich deine Tabelle noch mit anschaue, müsste ich wohl 1110 einstellen, richtig? LG Andi
Andi Finkler schrieb: > Der Quarz hat 4 Mhz. > Hab mich nach der Tabelle auf Seite 26 gerichtet (Table 2). Tut mir > Leid, hab mich auch vertan, meinte 1010. Sicher, dass du das tatsächlich eingestellt hast? > Da stehen ja auch immer zwei > Zahlen, in dem Fall 1111-1010. Aber ich befürchte gerade, ich sehe > meinen Fehler. Wenn ich deine Tabelle noch mit anschaue, müsste ich wohl > 1110 einstellen, richtig? richtig. Es ist beim Datenblatt immer gut solange weiterzulesen, bis das Gelesene ganz offensichtlich nicht mehr zum Thema gehört. Also: Ganze Kapitel lesen! Jetzt wirds schwierig, den µC wieder soweit zur Mitarbeit zu bewegen, dass du die Fuses umstellen kannst.
Andi Finkler schrieb: > Habe schon versucht, einfach dann den Befehl avrdude-5.3.1 -p > einzugeben, dann kommt aber: can't open file "": no such file or > directory. Avrdude ist ein Programm, das man nicht durch Trial-and Error bedienen kann. Genau so wenig, wie man ein Space Shuttle so landen kann. Man kann es versuchen, aber Fehlbedienungen kosten Zeit und/oder Geld. Zum Glück gibt es für beides Handbücher (Manuals). Man findet den Link zum Avrdude Manual auf der Seite Avrdude.
@Karl Heinz: Ok... Anfängerfehler. Beim Nächsten wirds besser gemacht. Hoffentlich. Danke für deine Hilfe! @Stefan B.: Danke, werd mir die Anleitung anschauen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.