Und zwar springt der Controller beim oben gezeigten Beispiel zwar in die
Funktion "test_Funktion()", messbar durch die eingeschaltete blaue LED
auf der Platine, aber dort einfach nicht mehr heraus. -> Die rote LED
bleibt ausgeschaltet
Dabei ist es völlig egal was in der Funktion steht und welche Funktion
auch aufgerufen wird. In der ersten, in die er springt verharrt der uC
und wartet auf besseres wetter oder so...
Da ich mein Programm mitlerweile auf diesen kleinen Code
heruntergebrochen habe, verschiedene "Schreibweisen" von Funktionen
(z.B. void test(void), int test(void) und return-Befehle am Ende der
Funktion) versucht habe, aber alles nichts gebracht hat, melde ich mich
in meiner Verzweiflung bei euch...
Zu meinem Umgebung:
ATmega128
AVR Studio 7 (v7.0.790)
Da es das erste Mal ist, das ich mit AVR Studio 7 programmiere, schließe
ich einen Bug oder falsche Einstellungen nicht aus, aber bei Onkel
Google finde ich da rein garnichts zu...
Vieleicht hat wer von euch noch eine Idee!
Vielen Dank schonmal!
LG
Andreas
Andreas schrieb:> ATmega128
habe jetzt nicht nachgeschaut, aber einige ATmega haben ein
Kompatibilitätsmodus die Standardmäßig aktiviert ist. Schau mal bei den
Fuse ob du etwas findest.
Das führt zumindest genau zu dem verhalten.
Guest schrieb:> Auf jeden Fall fehlt noch je eine> 1 im DDRC, damit die Pins auch getrieben werden.
Richtig. Ein Wunder dass die blaue LED überhaupt was von sich gibt.
Hi
>habe jetzt nicht nachgeschaut, aber einige ATmega haben ein>Kompatibilitätsmodus die Standardmäßig aktiviert ist. Schau mal bei den>Fuse ob du etwas findest.>Das führt zumindest genau zu dem verhalten.
Nö, macht es nicht. Im M103-Mode wäre PortC generell als Ausgang
konfiguriert.
MfG Spess
Bist du dir sicher, dass er nicht mehr aus der Funktion heraus springt
oder einfach die rote LED aus anderen Gründen nicht funktioniert?
Vertausche im Code einmal Stat_LED_bl und Stat_LED_rt, leuchtet dann
auch die blaue LED oder funktioniert die rote dann?
Bezüglich DDRC - Standardmäßig ist beim ATmega128 der ATmega103
Kompatibilitätsmodus aktiviert, solang dieser nicht deaktiviert wurde
ist Port C sowieso als Ausgang konfiguriert.
Andreas schrieb:> Und zwar springt der Controller beim oben gezeigten Beispiel zwar in die> Funktion "test_Funktion()", messbar durch die eingeschaltete blaue LED> auf der Platine, aber dort einfach nicht mehr heraus.
M103-Fuse
Der Stack zeigt in den Wald.
Hi Leute,
danke schonmal für die vielen Antworten! :)
Ich komme zwar nachher erst zum testen, aber vorab, natürlich
funktioniert die rote LED! :P Bevor ich mit den Funktionen rumspiele,
werden erstmal alle "Verbraucher" auf Funktion getestet.
Ausserdem ist es egal was hinter der Funktion steht, nichts von alle dem
wird ausgeführt leider. ;(
LG
Andreas
Andreas schrieb:> Ausserdem ist es egal was hinter der Funktion steht, nichts von alle dem> wird ausgeführt leider.
Deshalb tippe ich wie Peter auf die M103-Fuse. Wenn der Stack kaputt
ist, dann kann er auch nach Funktionsaufruf nicht wieder zurückspringen.
Dein µC muss erstmal auf ATmega128 umgestellt werden. Und danach musst
Du beide Pins noch auf Ausgang setzen, weil die dann nämlich nicht mehr
standardmäßig auf Ausgang programmiert sind.
Guten Morgen,
was soll ich sagen, ich habe gestern das Fuse-Bit gesetzt und nun
funktioniert alles so wie es soll!
Danke!! :)
Auf die Idee wäre ich alleine nie gekommen...
Dann kann es ja weiter gehen und bei weiteren Fragen weiss ich ja nun,
wo ich damit hinmuss :thumbsup:
LG
Andreas
Andreas schrieb:> was soll ich sagen, ich habe gestern das Fuse-Bit gesetzt und nun> funktioniert alles so wie es soll!
Ohne ein Bit in DDRC zu setzen? Das ist dann doch eher unwahrscheinlich.
> Auf die Idee wäre ich alleine nie gekommen...
Dafür gibt's hier u.a. sowas:
https://www.mikrocontroller.net/articles/AVR_Checkliste
Oliver
Peter II schrieb:> warum? Beim PullUP leuchtet auch eine LED.
Wie soll das gehen ?
bei einem AVR liegt der Widerstandswert nach Vcc bei 30kOhm - 50kOhm.
Karl M. schrieb:> Wie soll das gehen ?>> bei einem AVR liegt der Widerstandswert nach Vcc bei 30kOhm - 50kOhm.
5V bei 50kOhm sind 0.1mA - das sieht man deutlich ein leuchten
Peter II schrieb:> das sieht man deutlich ein leuchten
Nun, da gibt es wohl verschiedene Auffassungen zwischen
Leuchten und Leuchten. Insbesondere dann wenn man noch
die Aussenlicht-Bedingungen in Betracht zieht .....
Nachtrag:
Das Data Direction Bit ist selbstverständlich gesetzt! :)
Nun funktionieren die Funktionen ja, sodass ich meine Funktion IO_init()
ja nun auch aufrufen kann! :P
LG
Andreas
Andreas schrieb:> #define Stat_LED_bl PC5> #define Stat_LED_rt PC6
Versuch mal, die Namen der #defines groß zu schreiben.
Ich meine mich erinnern zu können, das das schonmal zu Problemen geführt
hat.
Also zum Beispiel:
#define STAT_LED_BL PC5
Viele Grüße
Sterni
Sterni schrieb:> Versuch mal, die Namen der #defines groß zu schreiben.> Ich meine mich erinnern zu können, das das schonmal zu Problemen geführt> hat.
Da es nur eine Konvention ist, defines in Großbuchstaben zu schreiben,
damit man sie als solche erkennen kann, ist Deine Aussage schlichtweg
falsch.
Ich halt ja eine statisch LED nicht für eine geeignete Methode um den
Lauf eines Programms zu testen.
Blinken und wenn auch bloß mit delays, das zeigt an ob das Programm
läuft.
Hallo Peter,
Peter II schrieb:> 5V bei 50kOhm sind 0.1mA - das sieht man deutlich ein leuchten
Bitte schreibe dann schon die richtig Formel hin:
Iled = (Udd - Uled)/50kOhm