Hallo liebe Forengemeinde :-) Ich bin zu dem entschluss gekommen, mit der Programmierung von Mikrocontrollern einzusteigen :-) Nur leider komme ich jetzt nicht weiter. Ich habe den ATmega8 auf einer Streifenrasterplatine mit entsprechender Beschaltung aufgebaut. Der Grundsätzliche Aufbau sieht so aus: Pin1 (Reset) ist über einen 10Kohm Widerstand an 5V angeschlossen, von diesem Pin geht ebenfalls eine direkte Leitung zum ISP-Adapter. Pin7 und 20 liegen an 5V. Pin8 und 22 liegen an Masse. Zwischen Pin 7 und 8 befindet sich noch ein 100nF Kondensator. Diese Beschaltung zum Programmieren findet man auch unter blafusel.de. Habe den ISP-Adapter so aufgebaut wie im Anhang zu sehen. Benutze den 6-poligen. Ich benutze zum Programmieren Atmel Studio 6.1 und mySmartUSB light. Mein kleines Programm sieht erstmal so aus: .include "E:\Atmel Toolchain\AVR Assembler\Native\2.1.39.1005\avrassembler\include\m8def.inc" ldi r16, 0b11111111 out DDRB, r16 ldi r16, 0b11111000 out PortB, r16 ende: rjmp ende Es befinden sich je eine LED mit Vorwiderstand an PB0-PB2, welche an 5V angeschlossen sind. Die sollten nun leuchten. Nun zum Problem: wenn ich den ATmega8 programmieren will, kommt diese Fehlermeldung: Erasing device... OK Programming Flash...OK Verifying Flash...Cancelled Verifying Flash...Failed! address=0x0000 expected=0x0f actual=0x00 Ich kann Problemlos die Device Signature auslesen, Fusebits sowie Lockbits lesen. Habe an diesen nichts verändert, einfach aus anfänglicher Angst... Nur ich komme so nicht weiter :-( Die Schaltung ist meines erachtens korrekt. Frage mich auch Grade, ob die Pinbelegung des mySmartUSB light dem meinigen enspricht (sollten beide nach Atmel-Standart sein?) Evtl. weiß einer Rat. Danke
Wenn Du die Fusebits lesen kannst und Programming: ok als Meldung kommt würde ich sagen, dann stimmt die Steckerbelegung und der Fehler liegt woanders. Habe gerade spontan aber keinen Vorschlag wo. Mach doch mal zum Vergleich ein einzeiliges C-Programm und programmiere das.
:
Bearbeitet durch User
Vielleicht ist die Schaltung irgendwo doch nicht wie beschrieben. Oder die Leitungen sind zu lang - sollte max. 30cm sein. Oder der Programmer ist defekt. Oder der Programmer ist zu schnell - das würde ich mal als erstes kontrollieren. Der Programmer muss langsamer sein, als 1/4 der Taktfrequenz des Mikrocontrollers. Hast Du einen anderen Programmer oder eine andere Schaltung zum Vergleich, bei der Du weisst, dass sie Ok ist?
Um eine Schaltung zu beschreiben, benutzt man einen Schaltplan und keine Prosa. > Zwischen Pin 7 und 8 befindet sich noch ein 100nF Kondensator. Warum ist zwischen 20 und 22 keiner? > Programming Flash...OK Das sagt nur, dass er die Daten losgeworden ist. > Verifying Flash...Cancelled > Verifying Flash...Failed! address=0x0000 expected=0x0f actual=0x00 Und das sagt, dass es schiefgegangen ist. Warum? Keine Ahnung. Bring erstmal deine Hardware in Ordnung(s.o.). Und alle Verbindungen doppelt und dreifach prüfen. > Der Programmer muss langsamer sein, als 1/4 der Taktfrequenz des > Mikrocontrollers. Das ist natürlich richtig. Aber sonst liesse sich auch nichts anderes auslesen. mfg.
Danke für die sehr schnellen Antworten. Da dies mein erstes Programm überhaupt ist und ich mich durchs Tuturial hangele, weiß ich nicht, ob es gut ist jetzt auch noch C zu lernen, bzw. zu programmieren. Es ist ja nicht so das Elektrotechnik für mich neuland ist, arbeite schon länger mit Schaltplänen und löte auch gern. (bin Kfz-Mechatroniker), nur µC sind für mich neu. Werde deinen Vorschlag mit C aber mal probieren. ISP-Programmiertakt ist laut Atmel Studio 57,6kHz, die gibt er mir vor. Der mySmartUSB light ist als STK500 eingebunden. Ich benutze zur Zeit das interne Quarz, weil ich nicht unnötig in die Fusebits eingreifen möchte und das Risiko gering halten möchte. Bei 1MHz internen Takt dürfte ich max. 250kHz haben. Hm... Zwischen Pin 20 und 22 ist deshalb kein 100nF Kondesator, weil er bei Blafusel nicht eingezeichnet ist. Vllt ist hier der Fehler?
:
Bearbeitet durch User
Daniel Briese schrieb: > Werde deinen Vorschlag mit C aber mal probieren. C lernen ans sich ist eine gute Idee, aber dein Problem hat mit dem Programm und dessen Programiersprache überhaupt nichts zu tun. Der Programmer liest falsche Werte aus dem Flash, warum auch immer. Wenn der verify mal richtig durchläuft, kannst du dich mit dem Programm befassen. Oliver
Wenn sich die Chip ID und die Fuse Bits zuverlässig auslesen lassen, spricht einiges dafür das die ISP Verbindung im Prinzip funktioniert, und auch die Taktfrequenz passt. Wird denn der µC auch als solcher erkannt, bzw. ist richtig eingestellt - die Programmieralgorithmen (Seitengröße) sind je nach Typ etwas verschieden. Es könnte ein Problem wie zu lange Kabel geben, so das es halt nicht ganz zuverlässig funktioniert. Die Fuse bits sollte man bei einer nicht zuverlässigen Verbindung auch besser erst einmal nicht antasten. Es könnte ggf. auch noch ein Problem mit der Software im Programmer sein, so das es mit dem Auslesen nicht ganz funktioniert. Das Programm ist nun auch ausgesprochen kurz - für einen etwas besseren Test könnt man mal eine etwas längeres Programm (egal was, >256 bytes) aufspielen, und dann den Flash-inhalt auslesen, und sehen ob da auch nur 0 zurückkommt.
Daniel Briese schrieb: > Danke für die sehr schnellen Antworten. > Da dies mein erstes Programm überhaupt ist und ich mich durchs Tuturial > hangele, weiß ich nicht, ob es gut ist jetzt auch noch C zu lernen, bzw. > zu programmieren. > Es ist ja nicht so das Elektrotechnik für mich neuland ist, arbeite > schon länger mit Schaltplänen und löte auch gern. (bin > Kfz-Mechatroniker), nur µC sind für mich neu. Beim Löten kann man immer Fehler machen. Das passiert jedem. > Werde deinen Vorschlag mit C aber mal probieren. das ändert aber nichts daran, dass das Flashen nicht funktioniert > ISP-Programmiertakt ist laut Atmel Studio 57,6kHz, die gibt er mir vor. > Der mySmartUSB light ist als STK500 eingebunden. > Ich benutze zur Zeit das interne Quarz, weil ich nicht unnötig in die > Fusebits eingreifen möchte und das Risiko gering halten möchte. > Bei 1MHz internen Takt dürfte ich max. 250kHz haben. Hm... Das ist alles Ok. Sonst würdest du das andere auch nicht auslesen können. Nebenbei: Es ist kein Quarz- sondern ein RC-Oszillator. > Zwischen Pin 20 und 22 ist deshalb kein 100nF Kondesator, weil er bei > Blafusel nicht eingezeichnet ist. Vllt ist hier der Fehler? Ob es das aktuelle Problem beseitigt, sei mal dahingestellt. Auf jeden Fall gehört da einer hin. Beim Blafusel-Schaltplan "I/O-Board Atmega8" kann ich übrigends gar keinen Stützkondensator entdecken. Auch nicht auf der abgebildeten Platine. Scheint mit vernünftiger Schaltungstechnik nicht viel am Hut zu haben der Herr. Also vergiss die website am besten. Auf solche Tipps sollte man verzichten. mfg.
Oliver S. schrieb: > Daniel Briese schrieb: >> Werde deinen Vorschlag mit C aber mal probieren. > > C lernen ans sich ist eine gute Idee, aber dein Problem hat mit dem > Programm und dessen Programiersprache überhaupt nichts zu tun. Der Also ich kam nur auf die Idee, weil ich kürzlich mal was gelesen habe, dass in der .hex-Datei auch eine Info ist, ab welchem Offset die Datei im Flash abgelegt werden soll. Und ich arbeite hauptsächlich mit C, also kann ich gerade nicht sagen, ob man da mit .asm einen Fehler machen kann oder nicht. Bei C muss man sich jedenfalls nicht drum kümmern. An einer Stelle hakte meine Überlegung aber: der Offset, ob gesetzt oder nicht, würde natürlich auch beim Verify angewendet - also war mein Vorschlag quatsch und er kann sich die C-Variante sparen. Vermutlich liegt es eher an so etwas wie zu hohem Programmer-Takt.
Hallo :-) Mein Programm läuft auf dem ATmega8 :-))) Alle drei LEDs leuchten jetzt. Hab das Problem gefunden: Hardwareseitig ist alles in Ordnung, Softwaretechnisch aber nicht. Ich benutze Atmel Studio 6.1, dachte es wäre 6.0 Das wird das Problem sein, was es zu lösen gilt. Ich konnte das Programm im Hex-Format mit myAVR Progtool auf den ATmega8 übertragen :-) Bin grad total happy :-) Nur was mach ich jetzt mit Atmel Studio 6.1 und mysmartUSB light? hm... Gibt es da Lösungsansätze oder Bugfixes?
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.