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
@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
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!
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:
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...
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.