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.
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)
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
;-)
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.
??? 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.
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.
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.
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.