PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zum Löschen des Programmes



Theul
10.05.2008, 16:42
Hallo

ich bin zwar schon länger hier im forum angemeldet, aber hab erst jetzt die Zeit gefunden etwas mit Microcontrollern (AtMega 32) anzufangen ( leider muss ich sagen :( )

Hätte jetzt mal eine Frage, zu etwas was ich nicht gefunden oder überlesen habe.

Wie lösche ich ein Programm, das auf meinen Microcontroller ist?

jetzt bitte nicht lachen

hab jezt schon WinAVR und PonyProg2000,
bei PonyProg gibt es bei "Commands" die Buttons "Reset" und "Erase"
kann man damit das Programm löschen :-s

noch was, was muss ich bei PonyProg bei "I/O port setup"
einstellen, ich benutze den ISP Dongle von Robotic Hardware

Wäre nett wenn ihr mir helfen könntet

mfg Theul

oberallgeier
10.05.2008, 17:32
Warum denn löschen? Wenn Du ein anderes Programm drauf lädst, dann wird der Inhalt überschrieben. Löschen macht im Prinzip nur Sinn, wenn Du den Controller verkaufst - und nicht willst, dass andere Dein Programm nutzen.

Theul
10.05.2008, 19:03
Aso, danke für den Hinweis

Hab aber leider ein anderes Problem bekommen ](*,)

Hab die Schaltung wie im Wiki aufgebaut und dieses Programm hinaufgespielt:

#include <avr/io.h>

int main()
{
DDRB=0xff;
PORTB=0xff;

while(1)
{
}
return 0;
}

Beim nachmessen der Spannungen hat er mir dann unlogische Messwerte angezeigt. Ich wollte dann ein neues Programm hinaufschreiben und dann kam in PonyProg diese Fehlermeldung: "Communication port not available (-16)"

Was habe ich denn da falsch gemacht.
Kann es deswegen sein, weil die Verbindung zum PC auch den B Ports liegt :-k

und wenn wie kann ich das reparieren

bitte helft mir bei meinen Problem

mfg Theul

McJenso
11.05.2008, 08:42
Hallo,
du benutzt einen Laptop der keine serielle Schnittstelle hat. Dein Programmer ist an der LPT angeschlossen. In Ponyprog hast du aber COM1 und nicht LPT1 als Schnittstelle eingestellt.
Nein, an deinem Programm kann es nicht liegen. Wenn der Baustein Programmiert werden soll, wird der Reset aktiviert und dein Programm macht nichts mehr. Eine externe Beschaltung mit z.B. anderen IC's kann da schon problematischer sein. Das ist hier aber wohl nicht der Fall.

Gruß

Jens

Theul
11.05.2008, 10:50
Danke für die Antwort

aber ich benutze keinen Laptop

habe den Übetragungskabel am Druckerport angeschlossen, das ist doch com1 oder etwar nicht?

Könnte es sein das meine Schaltung falsch aufgebaut ist?
Beim erstellen des Makefilse, welchen Programmer muss ich da einstellen
stk200 ?

mfg
Theul

p_mork
11.05.2008, 11:01
habe den Übetragungskabel am Druckerport angeschlossen, das ist doch com1 oder etwar nicht?
Nein, COM1 ist die serielle Schnittstelle, der Druckerport heisst LPT1. Ich hab bei mir im 'Interface Setup' das Kästchen 'Parallel' angeklickt und 'AVR ISP I/O' ausgewählt. Die einstellungen im Makefile sind für avrdude, das Du natürlich auch benutzen kannst. Unter XP muss man dafür zuerst einen Treiber laden, irgendwo auf der CD von Robotikhardware sollte eine Batch-Datei namens giveio sein, einfach ausführen und der Treiber wird installiert.

MfG Mark

Theul
11.05.2008, 11:46
danke @p_mork

hab es jetzt so probiert wie du es mir geschrieben hast.
konnte jetzt eine verbindung aufbauen

Wenn aber der Balken kommt wo man sieht wie weit die Übertragung schon ist, bleibt er bei 0 stecken und es kommt folgende Fehlermeldung

"Device missing or unknown device [-24]"

Was habe ich nun schon wieder falsch gemacht?
Sieht so aus als bring ich gar nichts zu sammen :cry:

mfg
Theul

oberallgeier
11.05.2008, 12:09
Hi, Theul,

hast Du den Ziel-µC unter Spannung, d.h. ist das Zielsystem mit Spannung versorgt? Ist der richtige Controller eingestellt? Da gibts diese zwei Fenster rechts oben mit Systemtyp (EEPROM, Du brauchst für Deinen m32 den Typ "AVR micro") und den Controllertyp - eben "ATmega32".

Theul
11.05.2008, 12:31
hi @oberallgeier, danke für die schnelle Antwort

ja der Microcontroller ist unter Spannung und den Controllertypen habe ich in PonyProg auch richtig eingestellt

Wenn es das nicht ist, was kann es denn noch sein?

mfg
Theul

oberallgeier
11.05.2008, 13:22
Hi, Theul,

hmmm, also in der PonyProg-FAQ (http://www.lancos.com/e2p/ponyprog2000.html#s5) steht unter "Device missing or unknown device [-24]" eine Antwort - obs das aber ist ? ? ? Übrigens wirst Du wahrscheinlich die PonyProg-FAQ lokal auf Deinem Rechner haben :)

McJenso
11.05.2008, 13:26
Hallo Theul,


aber ich benutze keinen Laptop
Dann ist meine Glaskugel kaputt. O:)

Du hast den AtMega ja schon einmal programmiert bekommen. Hattest du da einen Quarz am Controller. Ein Link zur Schaltung im Wiki währe schön. Hast du an den Fusebits etwas geändert?

Der Fehler sagt einfach aus, dass der Controller nicht Antwortet. Die Gründe können sehr vielfältig sein.

Gruß
Jens

Theul
11.05.2008, 13:32
Wie ich dort gelesen habe soll ich "Ignore" drücken,
hab das schon vorher versucht, aber statt "Write succesfull"
habe ich "Write failed" bekommen

Mit dem was in der FAQ steht kann ich nicht viel anfangen,
trotzdem danke das du dich so sehr um meine Probleme kümmerst.

Hab jetzt mal nen neuen AtMega32 genommen und ihn auf mein Schaltung gesteckt. Habe ihn noch nicht programmiert, also noch gar nicht an den Pc angeschlossen, aber ich bekomme bei einigen Port C Ausgängen ein Spannung.

Kann es sein das meine Schaltung falsch ist???

Wenn es nicht an der Software liegt, kann es doch nur mehr an der Hardware liegen. Und ich tippe mal auf meine Schaltung da wohl der Microkontroller und der ISP Dongle wohl nicht kaputt sein werden.

Sollte ich die Schaltung vielleicht neu aufbauen??

mfg
Theul

Theul
11.05.2008, 13:39
Naja ob ich den wirklich programmiert bekommen habe glaub ich nicht, da damit die Fehler angefangen haben.

Der Link für die Schaltung:
https://www.roboternetz.de/wissen/images/f/f8/Avrtutorial_grundschaltung_mitled.gif

Ich benutze zurzeit kein Quarz, wollte es mal so probieren und es wenn ich mal ein paar Ergebnisse habe ein Quarz einbauen.

Mit "Fusebits" kenne ich mich gar nicht aus, weiß also nicht wie ich die ändern könnte, vielleicht hab ich das ja unabsichtlich getan.

oberallgeier
11.05.2008, 13:42
Puhhhh - jetzt würd ich auch gerne mich auf die ominöse Glaskugel berufen. Natürlich machts Sinn, die eigene Schaltung zu kontrollieren, aber ich hatte noch NIE eine Schaltung NEU aufgebaut.

Du hattest doch schon mal was programmiert (steht oben im Thread) mit dieser Schaltung ! ?

Vielleicht testest Du mal, ob beim Programmieren auch wirklich der Reset auf GND gezogen wird - das sollte nämlich der Programmer machen - - - ich hab da ne Low-power-LED bei mir auf der (den) Platine(n) - die zeigt mir immer an, dass die Programmierung "irgend etwas" tut. Sehr praktisch.

Vielleicht könntest Du mal den Flash auslesen? Und die Fusebits. Wenn das nicht geht - - - siehe Glaskugel - oben :(. Sorry.

Ansonsten - ist wohl Testen der Schaltung angesagt.

McJenso
11.05.2008, 13:43
Hallo,

das ist okay. Auf dem Port liegt das JTAG-Interface. Das ist ab Werk aktiv und zieht an PC5, PC3 und PC2 über Pullup-Widerstände die Spannung rauf (sieheDatenblatt S. 5).
Probier den mal zu Programmieren. Wenn das nicht klappt, Prüf deine Schaltung in Richtung Programmieradapter. Ist der Reset richtig angeschlossen?

Gruß

Jens

oberallgeier
11.05.2008, 13:51
Fusebits sind dazu da, um z.B. einen externen Quarz "einzuschalten". Du hast den nicht - also müsste da nix geändert werden.

WENN Du einen neuen, unbeschriebenen Controller hast (irgendwo in Reserve) könntest Du sehen, ob der ansprechbar ist (Speicher lesen - kommt dann eben nur "FF").

WENN das geht, dann mal Fusebits lesen, die kriegst Du bei PonyProg unter [Command] , [Security and Configuration Bits...]. NUR lesen. Und merk Dir wie die stehen. Dann könntst Du, falls der andere µC verstellt ist, den richtig stellen. >>>> Achtung - mit einigen Fusebits kann man den Controller so einstellen, dass er praktisch nicht mehr so ohne weiteres ansprechbar ist :(.

Viel Erfolg.

oberallgeier
11.05.2008, 13:54
Zum Einstellen der Fusebits gibts nen Calculator. Hoffentlich verwirrt er Dich nicht :)
http://palmavr.sourceforge.net/cgi-bin/fc.cgi?P_PREV=&P=ATmega16

... und dann natürlich diese hübsche Seite:
https://www.roboternetz.de/wissen/index.php/Avr#Die_Fusebits

Theul
11.05.2008, 14:30
Das mit dem Reserve - Controller, der noch nicht programmiert ist, hab ich auch schon probiert, hab da ebenfalls die gleiche Fehlermeldung erhalten.

Hab dort auch "Read Programm (Flash)" verwenden musste aber "Ignore" drücken, hat aber dann funktioniert.

Was muss ich da ganz genau nachmessen beim Reset um zu merken ob die Übertragung funktioniert oder nicht?

Achja, das mit dem Calculator, Sonnenklar(wenn ich mir das anschaue bekomme ich Kopfschmerzen :Haue )
trotzdem danke für die Idee

Danke noch mal für die vielen Antworten, hat mich schon ein bischen weitergebracht

mfg
Theul

oberallgeier
11.05.2008, 15:35
musste aber "Ignore" drücken, hat aber dann funktioniertWas hat funktioniert? Und . . . . läuft das Auslesen der Fuses?

Reset-Beschaltung: bei (D)einer sauber aufgebauten Grundschaltung wird der /RES (genaugenommen heisst der ja not-Reset, es ist ein "NEIN-Reset" - hat auch manchmal diesen "not"Strich über dem Schriftzug) mit einem Widerstand, bei Dir der 10k, auf +5V gezogen. Dieser Widerstand wirkt daher als pull-up, er "zieht" den Pin im Normalbetrieb auf logisch 1 = 5V "hoch".

Nach der Spezifikation bzw. dem Handbuch des Mega32 (und der anderen AVR´s) werden die Pinne: MOSI, MISO und SCK intern, vom Controller selbst, für die Programmierung des Controllers geschaltet, WENN der Reset auf logisch Null gezogen wird. Daher sollte man beim Programmieren - wenn auch nur kurzzeitig - eine Spannung in der Gegend deutlich unter 1 V messen können. Kommt drauf an, wie viel code Du beim Flashen rüberschaufelst - und natürlich wie schnell Dein Messgerät ist. Dieses Signal wird von Programmiersoftware und Programmierkabel über den "Reset"-pin, das ist Nr. 5 des Programmiersteckers, während des Programmiervorgangs auf den Controller geschaltet.

Wird der Reset auf logisch 1 geschaltet - im einfachsten Fall wenn Dein Programmierkabel abgezogen ist und der Widerstand 10k den auf rund 5V anhebt, dann sind die eben genannten Pinne PB5, PB6 und PB7 "ganz normale" Controlleranschlüsse, mit denen Du LED´s leuchten lässt oder so. Ist das verständlich ausgedrückt ?

McJenso
11.05.2008, 16:29
Hallo,

ich nochmal mit meiner Glaskugel :-)
Du hast versucht den Speicher auszulesen. Es gab die berühmt berüchtigte Fehlermeldung Unkown or missing Device. Du hast Ignore geklickt und es gab keine weitere Fehlermeldung. Angezeigt bekommst du alles mit 00.

Ganz klar, da hat nix Funktioniert!

Bei fabrikneuen Controllern musst du alles FF bekommen. Wenn die Meldung kommt, antwortet dein Controller nicht. Du kannst das zwar ignorieren aber dadurch wird es nicht besser.
Mögliche Ursachen:
-Dem Controller fehlt der Takt. Da er neu ist, schließen wir das aus.
-Der Reset wird beim Programmieren oder Auslesen nicht auf Gnd gezogen. Bitte Prüfen nach Joe's Anleitung.
-Der Controller bekommt auf seinem MOSI Pin keine Befehle vom Programmieradapter. Ich weiß nicht ob man das mit einem Multimeter nachprüfen kann. Probier es einfach.
-Die Antwort des Controllers über den MISO kommt nicht beim Programmieradapter an.
Ich weiß nicht ob man das mit einem Multimeter nachprüfen kann. Probier es einfach.
-Hardwaredefekt, unwahrscheinlich da die Sachen eigentlich recht robust sind.
-Sörungen auf der Übertragungsstrecke
Versuch die Verbindungsleitungen zwischen PC, Programmieradapter, Controller kurz zu halten. Möglichst geschirmt. Vermeide Störquellen in der Nähe der Schaltung und der Leitungen.
Die Schaltung wirst du ja schon x-fach geprüft haben. Was für eine Versorgung hast du am Controller?
Probier mal in PonyProg AVR ISP I/O. Ist schon etwas her, ich meine das hätte ich immer eingestellt gehabt bei einem ähnlichen Programmer.

Gruß

Jens

Theul
12.05.2008, 13:05
Also, hab mal gemessen wieviel Spannung auf Reset liegt wenn ich
nur den ISP Dongel aufgesteckt habe und den dan zum Computer
hatte dann dort weniger als 0,5 V und wie ich das Programm übertragen habe ist der Wert gleichgeblieben.

Außerdem liefert meine Batterie wenn ich den ISP Dongel zum Computer stecken und noch nicht übertrage nur mehr ca. 2,4 Volt.
Ist das normal?

Wenn ich ein Programm übertragen möchte ändert sich irgendwie gar nichts an den Spannungen, außer das sie geringer werden und die Spannungen am Port C weg sind.

Bei PonyProg hab ich schon AVR ISP I/O eingestellt an dem kann es also nicht liegen.

mfg
Theul

McJenso
12.05.2008, 13:23
Hallo,

da haben wir ja einen Ansatz. Bei Aufgestecktem ISP ohne Programmierung, darf sich am Reset nichts ändern. Es muss weiterhin Versorgungsspannung anliegen. Gib uns doch mal mehr Infos zur Batterie. Was ist das für eine? Wird die Spannung noch angepasst stabilisiert? Die Batterie muss den Programmer mit versorgen, der arbeitet mit 5V.
Mach bitte noch eins, miss die Versorgung am Controller und und die Spannung am Reset ohne ISP, dann mit ISP ohne Computer und mit ISP mit Computer.



Gruß

Jens

oberallgeier
12.05.2008, 13:53
Hei Theul,

war grad bei einer kleinen Radtour (<50km).


Also ... Spannung auf Reset ... nur den ISP Dongel aufgesteckt ... den dan zum Computer hatte dann dort weniger als 0,5 V und wie ich das Programm übertragen habe ist der Wert gleichgeblieben.

Bei meiner Hardware:
- selbst geschusterte [url=https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=344843#344843Flex168 - Flash+Experimentierplatine [/url] für mega168
- Robotik ISP-Programmierkabel (ISP Dongle) [isp]
- Pack mit 4 Akku-Zellen AA NiCd (z.Zt. 4,94 V bei Power auf flex168)
hab ich bei

1) Nur ISP-Kabel gesteckt (power on bei flex168 und PC)
zwischen Vcc und /RES 0,18V (d.h. /RES=Pin1 liegt auf fast 5V)
2) Wie 1), aber Programmieren mit PonyProg
zwischen Vcc und /RES 4,92V

Gerade jetzt getestet. Da ich keine Fehlfunktionen habe, denke ich MEINE Werte sind normal - und bei Dir ist die Batterie im Eimer?
t1) Wieviel Volt hat Deine Batterie im Leerlauf?
t2) Wieviel Volt hat Deine Batterie mit LED+Vorschaltwiderstand 1k?
Nachtrag:
t3) Was hast Du denn für eine Batterie als Stromversorgung für Deine Schaltung?

Theul
12.05.2008, 16:10
Sieht so aus als ob wir uns meinen Problem nähern,
dank eurer hilfe =D>

hab mal das nachgemessen was @McJenso und @oberallgeier vorgeschlagen haben

Batterie: 1 x Varta High Energy 9V
gemessene Leerlaufspannung 7,5V
(scheint so als die bei meinen Versuchen arg den Geist aufgibt)

ohne ISP: auf Reset 4,87V
mit ISP aber ohne PC: auf Reset 0,12V
mit ISP und mit PC: auf Reset 0,12V

noch ne dumme Frage
was meinst du mit "zwischen Vcc und /Res"
hab immer Reset mit GND gemessen, hab ich da was falsch gemacht?

mfg
Theul

oberallgeier
12.05.2008, 18:11
Sieht so aus als ob wir uns meinen Problem nähern ... Na ja, es geht halt langsam. Aber wir machen ja unsere Arbeit :)


Batterie: 1 x Varta High Energy 9V
gemessene Leerlaufspannung 7,5V
(scheint so als die bei meinen Versuchen arg den Geist aufgibt)
ohne ISP: auf Reset 4,87V
mit ISP aber ohne PC: auf Reset 0,12V
mit ISP und mit PC: auf Reset 0,12VAlso ich geh jetzt mal davon aus, dass Du bei Deiner Grundschaltung gesehen hast, dass Du an Vcc (nur) mit +5V dran sollst. Fünf Volt. Ok? Aber Du hast ja "ohne ISP" fast 5V. Wie machst Du die? Mit einer Konstantspannungsschaltung - einem Spannungsregler?


ohne ISP: auf Reset 4,87V
mit ISP aber ohne PC: auf Reset 0,12V
mit ISP und mit PC: auf Reset 0,12VHmmm, Blödsinn. Wenn ich meine Schaltung laufen lasse, mit aufgestecktem ISP-Kabel, dann läuft sie. Aber dann ist das "PC-Ende" NICHT im PC! Wenn ich das ISP-Kabel in die µC-Platine einstecke und das andere Ende in (m)einen ausgeschalteten Notbook, dann hab ich auch Dauer-Reset.
10) Hast Du bei "mit ISP aber ohne PC" das PC-seitige Kabel abgeklemmt?
11) Wie ist dann Deine Versorgunsspannung? Und was hat dann Dein "9 V"-Block ?
12) "mit ISP und mit (angeschaltetem) PC" läuft meine Schaltung.


noch ne dumme Frage
was meinst du mit "zwischen Vcc und /Res" hab immer Reset mit GND gemessen, hab ich da was falsch gemacht?Nein, hast nix falsch gemacht. Es ist ja egal, ob man gegen GND oder gegen Vcc misst - wenn man sich nur klar ist, was der Bezugspunkt ist :).

Theul
13.05.2008, 12:53
Ja ich weiß, der Controller wird mit max. 5V betrieben.
Hab meine Schaltung mit Spannungsregler, ich glaub 78S05, und Glättungskondensator wie hier im Wiki

https://www.roboternetz.de/wissen/images/2/2a/Avrtutorial_grundschaltung_spannung.gif

also bei UB (aus der Skizze) hab ich wenn ich den Programmer nicht hineinstecke meine 7.5 Volt und hinter der Gleichrichterschaltung so um die 4.9V, also die 5V die der Controller eigentlich braucht, so funktioniert ja das Testprogramm das Standartmäßig oben ist

wenn ich aber den ISP hineinstecke, auf meine Board, und das andere Ende, wie du gesagt hast das "PC- Ende" nirgends einstecke bekomme ich an UB (aus der Skizz) nur mehr 2.5V, nach der Gleichrichterschaltung sind es nur mehr 0.15V, das Testprogramm läuft auch nicht.
Ich denke ich kann den Controller deswegen nicht programmieren, da er gar nicht läuft!

Wenn ich das "PC- Ende" an den Computer, läuft dabei, stecke bleiben die Werte gleich wie oben beschrieben.

Kann es sein das mein Controller gar nicht mehr läuft wenn ich den ISP an das Board stecke?
Aber warum fällt dann die Baterriespannung auf unter 3V??

mfg
Theul

oberallgeier
13.05.2008, 13:23
... ich benutze den ISP Dongle von Robotic Hardware ...
Ja ich weiß, der Controller wird mit max. 5V betrieben.Scheint als hättest Du Alles richtig gemacht.


... wenn ich aber den ISP hineinstecke, auf meine Board, und das andere Ende, wie du gesagt hast das "PC- Ende" nirgends einstecke bekomme ich an UB (aus der Skizz) nur mehr 2.5V, nach der Gleichrichterschaltung sind es nur mehr 0.15V, das Testprogramm läuft auch nicht... McJenso hatte ja schon gesagt, dass der gesteckte Dongle -ohne PC dran- KEINEN Reset hervorrufen darf - meiner tut es auch nicht (eben getestet).
Letzte Hilfe (danach Dongle reklamieren): Der (mein) Controller zieht etwas 20 .. 22 mA - ohne LED. Vielleicht nimmst Du die LED raus und schaust, wieviel Strom Deine Schaltung braucht; Multimeter hast Du ja. Anschließend Dongle stecken - ohne PC dran - und schauen wieviel Strom jetzt gezogen wird. Vielleicht schafft Deine müde Batterie grad noch so viel - aber keinen Deut mehr ? ? Vermutlich hattest Du schon einen Test mit einer frischen Batterie gemacht !?

Wenns nicht an der Batterei liegt - dann dürfte der Programmierdongel defekt sein. Ist/war der neu? Oder gebraucht gekauft? Ich weiß leider nicht, wie man den testet :(. Wenn er neu ist - dann reklamieren. Dauert danach leider ne Weile :(. Aber ich sehe keine anderen Möglichkeit mehr, Dir zu helfen.