Ja ein freundliches Hallo erstmal, und zwar wollte ich ein Programm zur Steuerung eines Stepdown Wandlers auf einen Mega88 aufspielen. Als Test versuchte ich erstmal nur die PWM aufzuspielen. Die Programmierung und die Verifikation des Flash funktionierten einwandfrei. Doch er fängt einfach nicht an zu laufen. Selbst ein einfaches Programm wie: while(1){ DDRB = 0xFF; PORTB = 0xFF; PORTB = 0x00;} funktioniert nicht. Alle Fuses sind unverändert. Default Einstellung wurde überprüft. Er rennt einfach nicht los. Als Takt benutze ich den Internen Takt von 8MHz mit Teiler 8 wie im Default Modus. Programmiert wird er mittels AVR Dragon und als IDE verwende ich AVR Studio 6. Schonmal vielen Dank für eure Hilfe.
Wie überprüfst du ob der Mega läuft oder nicht?
Was erhoffst du dir denn von diesem Programm? while(1){ DDRB = 0xFF; PORTB = 0xFF; PORTB = 0x00;}
Als Beschaltung habe ich mich an den Schaltplan siehe unten gehalten. Mal abgesehen davon dass ich halt noch Peripherie angeschlossen habe und der Quarz fehlt. http://www.mikrocontroller.net/articles/Datei:Mega8_Tutorial.png von dem Programm erhoffe ich mir eigentlich nur einen Test ob er überhaupt was ausgibt.
MeisterLampe schrieb: > while(1){ > DDRB = 0xFF; > PORTB = 0xFF; > PORTB = 0x00;} Die Ausgänge sind damit statisch auf Low. (mal davon abgesehen, dass hier ggf etwas wegoptimiert wird)
Was soll es denn ausgeben? Du schreibst doch nur Nullen rein, oder sehe ich das falsch?
ja ich schreibe Nullen rein und dann wieder einsen und wieder nullen, oder bin ich jetzt blöd?
aber es springt doch dann wieder zum Anfang, ist doch eine Schleife
MeisterLampe schrieb: > ja ich schreibe Nullen rein und dann wieder einsen und wieder nullen, > oder bin ich jetzt blöd? Das ist der Unterschied zwischen C Programmierung und uC Programmierung ;-)
Zieh mal testhalber den Programmer ab und / oder halt das DMM an den Resetpin. Der muss 5V haben.
PS: Das Programm ist schon in Ordnung, man könnte aber DDRB aus der Schleife nehmen (das muss man nur einmal schreiben). Wegoptimiert wird da gar nichts, Stichwort volatile.
Naja...das Programm wird von oben nach unten abgearbeitet...da müsstet du schon nen Delay einbauen...
??? schrieb: > Naja...das Programm wird von oben nach unten abgearbeitet... ja und? > da müsstet > du schon nen Delay einbauen... Nö, warum denn. Er guckt doch mit dem Oszi, das ist schnell genug.
ok man muss dazu sagen dass ich ihn oben etwas gekürzt habe: eigentlich lautet er wie folgt: #include <avr/io.h> #ifndef F_CPU #define F_CPU 1000000UL /* Quarz mit 3.6864 Mhz */ #endif #include <util/delay.h> int main( void ) { DDRB = 0xFF; while(1) { PORTB = 0xFF; _delay_ms(50); PORTB = 0x00; _delay_ms(50); } return 0; }
MeisterLampe schrieb: > ok man muss dazu sagen dass ich ihn oben etwas gekürzt habe: Grmpf! Was sollen wir den mit Code der gar nicht benutzt wird? > #define F_CPU 1000000UL /* Quarz mit 3.6864 Mhz */ Kommentar falsch. Außerdem gehört das ins Makefile. Code ansich ist ok.
sorry der Quelltext war kurz aus dem Studio kopiert und ich Stelle fest das immer noch das falsche Kommentar aus dem Tutorial drin steht...
Aber würde es denn ganz ohne Delay oder sogar nen NOP funktionieren? Nur so interessehalber.
zuerst war es ohne, ging aber auch nicht, daher hab ich es eingebaut. Grund war einfach nur dass ich dann eine LED zum testen verwenden kann und nicht immer das Oszi benutzen muss.
Am Programm selbst liegts nicht, habs eben mal auf nen ATmega168 runtergeladen, soweit blinkt alles. Studio6+STK+Dragon+ATmega168 Beschreib mal deine Hardware ... Stromlauf?
Das ist der Schaltplan. Als kleine Anmerkung, die beiden unbeschrifteten Teile sind eine Spule(oberes Teil) und ein Relais(rechtes Teil) das im Notfall über Benutzereingabe durchschaltet.
Die Beschaltung des 7805 sieht etwas sparsam auf. Keine Cs in der Nähe? Eagle hat Symbole für Relais und Spulen. Verwende sie. Jedenfalls sieht der Kram auf der rechten Seite etwas eigentümlich aus.
An Port B ist schonmal der Programmieradapter dran ... due stellst den ganzen port auf Ausgang ... bemerkt ? und wo mißt du denn dein angeblich nicht vorhandenes Signal ? Hofentlich an Port B.
Ich seh an Port B keine LED sondern nur an Port C un d an Port D ist auch was aber an Port B ist nur der ISP
Ja ich messe an Port B habe es aber auch schon mit Port D versucht, ohne Erfolg. Die LED halte ich einfach nur mit einem Bein auf den Pin. Am anderen Beinchen hängt ein 120ohm Widerstand. Auch ein Messen mit dem Tastkopf vom Oszi brachte Nichts zu Tage.
Ja ich messe an Port B habe es aber auch schon mit Port C versucht, ohne Erfolg. Die LED halte ich einfach nur mit einem Bein auf den Pin. Am anderen Beinchen hängt ein 120ohm Widerstand. Auch ein Messen mit dem Tastkopf vom Oszi brachte Nichts zu Tage.
Zeig uns mal einen Screenshot von den Fuse Settings.
ist in den Projekteinstellungen der richtige µC eingestellt? Mega88 statt Mega8?
troll schrieb: > Zieh mal testhalber den Programmer ab und / oder halt das DMM an den > Resetpin. Der muss 5V haben.
Vielen Dank schonmal für eure Hilfe, aber leider geht es noch immer nicht. Fusesettings poste ich nachher wenn ich Zeit habe, da ich gerade noch in der Uni bin. Der richtige uC ist eingestellt, mehrmals überprüft. Resetpin hat auch 5V.
Hast Du mal die Betriebsspannung und die Reset-Spannung nachgemessen, am
Besten mit dem Oszi? Liegen da wirklich saubere 5 Volt?
7805 benötigen am Eingang mindestens 0,33µF, sonst neigen sie zum
Schwingen (siehe Datenblatt).
PS
> Resetpin hat auch 5V.
Das hat sich leider überschnitten, aber trotzdem.
@MeisterLampe Was mir noch einfällt: - Hast Du den µC schon mal gewechselt? Vielleicht ist er ja kaputt... - Schaltungsfehler? Kurzschluss / Unterbrechung? - Problem mit den 5V? Schwingen, Störungen? Vielleicht durch den Leistungsteil? Gruß Dietrich
MeisterLampe schrieb: > auf einen Mega88 aufspielen. MeisterLampe schrieb: > Programmiert wird er mittels AVR Dragon und als IDE verwende ich AVR > Studio 6. MeisterLampe schrieb: > Ein Debuggen ist leider nicht möglich, da kein JTAG vorhanden. Warum, ist doch alles da, Studio6, Dragon und Mega88 (mit debugwire) ...
ja theoretisch könnte ich debuggen bzw. einen anderen Controller verwenden, nur leider ist schon alles auf Platine und da habe ich aus Platzgründen nur einen 6 Pin Stecker verbaut. Ich möchte jetzt eigentlich nicht den Controller auf gut Glück runterlöten und einen neuen drauf, ist halt tqfp32 und somit nicht meine Lieblingsbeschäftigung.
MeisterLampe schrieb: > ur leider ist schon alles auf Platine und da habe ich aus > Platzgründen nur einen 6 Pin Stecker verbaut. Und genau darüber läuft auch Debug-Wire. Lies dir mal die Anleitung vom Dragon sowie das Kapitel "Debug wire" im Datenblatt durch. http://www.atmel.no/webdoc/avrdragon/avrdragon.html mfg.
So jetzt läuft er. Woran es lag kann ich leider nicht sagen. Könnte jedoch am Dragon gelegen haben, da ich jetzt ein STK 500 benutzt habe.
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.