Forum: Mikrocontroller und Digitale Elektronik Funktionsaufruf probleme


von maddin (Gast)


Lesenswert?

hi,

ich habe etwas sorgen mit einem kleinen standard projekt. programmiere 
in c. momenten steuer ich nur ein paar leds an, ist ein kleines projekt.

wenn ich jetzt die portinitialisierung oder / und die portklimperei in 
eine funktion auslagere, diese vor das main kopiere und im main klassich 
aufrufe dann scheint der controller an der stelle des aufrufes stehen zu 
bleiben, der code in der funktion scheint auch nicht ausgeführt zu 
werden.

nun ist c nichts neues für mich, aber das avr studio benutze ich erst 
seit einem jahr. kann es an irgentwelchen einstellungen liegen, hatte 
soetwas bis jetzt noch  nie, klappte immer alles wie man es gewohnt ist.

oder kann soetwas durch die optimierungsoptionen am compiler entstehen, 
ich habe an der ecke aber nichts geändert...

tappe im dunktlen.

m.

von Stefan E. (sternst)


Lesenswert?

M103C Fuse deaktivieren.

von Oliver (Gast)


Lesenswert?

Shifttaste reparieren.

Zeile 42 in 43 ändern.

Optimierung zum Debuggen ausschalten.

Oliver
P.S. Leuchten denn die LED's wie gewünscht, oder geht gar nichts?

von Christian (Gast)


Lesenswert?

Das ist bei einem ATMega128 ein beliebter Fehler. Der MC ist werksmäßig 
im ATMega103 kompatibilitätsmodus. Wenn du im AVR Studio den 128er 
eingestellt hast sucht das Programm seine Rücksprungadressen an der 
falschen Stelle und stürzt dann ab. Also wie mein Vorposter schon gesagt 
hat:

M103C Fuse deaktivieren.

von maddin (Gast)


Lesenswert?

entschuldigung, aber diese sorge beim 128iger habe ich schon bitter 
kennengelernt.

ist ein atmega48, wie schon gesagt, alles läuft wie ich es erwarte, nur 
wenn ich es in eine void funktion auslagere ist schluss. das ist 
bestimmt einer dieser fehler die man so nie erwarten würde....ich gehe 
mal davon aus das bei dieser "einfachheit" des programmes der compiler 
eh ein inline daraus macht, da die funktion ja eh nur 1 mal als init für 
die spezifische hardware aufgerufen wird, und dort die porteinstellungen 
vorgenommen werden.

m.

von Oliver (Gast)


Lesenswert?

Prima. Keine 5 Beitraäge später sagst du uns schon, um welchen Prozessor 
es eigentlich geht.

Ich wiederhole mich mal...

>Shifttaste reparieren.

>Zeile 42 in 43 ändern.

>Optimierung zum Debuggen ausschalten.

und jetzt kommt der absolute Geheimtip:

Code posten. Mit allem. Kompilierbar. Hier. Als Anhang.
(und nicht weitersagen, der Tip ist so geheim, den darf keiner 
wissen...)

Oliver

von maddin (Gast)


Lesenswert?

....ich fall vom glauben ab, das ist immer das gleiche wenn man die 
umgebung wechselt.

ich habe schon einige controller von unterschiedlichen herstellern mit 
unterschiedlichen entwicklungsumgebungen programmiert...

dass ein controller (128iger) ausgeliefert wird in einem zustand in dem 
er kein 128iger ist, ist schon unlogisch genug, vielleicht gibt es hier 
einen hardwaregrund, den ich nicht sehe da ich den 103er nicht kenne 
aber egal...das war vor 4 wochen und hat mich nur eine halbe stunde 
gekostet da sich der verdacht schnell auftat das hier etwas in der 
richtugn nicht stimmt...

wenn man in der entwicklungsumgebung das falsche device eingestellt hat 
(unter general), kann so ein funktionsaufruf schon mal in die grüze 
gehen. oder besser gesagt, wenn man den 48/88 und 168 liegen hat und 
nicht aufpasst... das ist so peinlich das ich es kaum posten mag, aber 
ich habe es echt nicht gesehen... und konnt mir wirklich keinen reim 
daraus machen...

@OLIVER
die symptome hätten nicht von dem 103er flag beim atmega128 kommen 
können, wenn dieses flag bei dem prozessor das problem gewesen wäre, 
dann hätte es so und so nie funktioniert, ob nun als funktionsaufruf 
oder nicht, wenn es den port nicht gibt gibts den nicht...FINDEST DU ES 
LIESST SICH MIT CAPSLOCK BESSER?

manchmal sieht man den wald vor lauter bäumen nicht, das es soetwas sein 
muss war mir klar, nur wo man sucht, das ist die kunst...

vielen dank nochmal,
gruß,
m.

von Stefan E. (sternst)


Lesenswert?

maddin schrieb:

> die symptome hätten nicht von dem 103er flag beim atmega128 kommen
> können, wenn dieses flag bei dem prozessor das problem gewesen wäre,
> dann hätte es so und so nie funktioniert, ob nun als funktionsaufruf
> oder nicht, wenn es den port nicht gibt gibts den nicht

Und woher hätte irgendjemand hier wissen sollen, dass du einen Port 
benutzt, den es auf dem Mega103 nicht gibt?
Klasse, erst völlig unzulängliche Informationen posten, und dann auch 
noch auf der Basis der fehlenden Informationen rumklugscheißern.

> ...FINDEST DU ES
> LIESST SICH MIT CAPSLOCK BESSER?

Wenn du nicht kapierst, dass es schlichtweg höflich ist, beim Posten 
darauf zu achten, dass es nicht für dich selbst am bequemsten ist, 
sondern für den potenziellen Antworter (schließlich soll der ja einen 
Teil seiner Zeit für dich opfern), dann wirst du bald einfach gar keine 
Antworten mehr bekommen. Und dazu es den Antwortern möglichst leicht zu 
machen, gehört nun mal auch eine möglichst korrekte Rechtschreibung 
(also mit Groß-/Kleinschreibung).

von ich will auch mal (Gast)


Lesenswert?

> dann wirst du bald einfach gar keine Antworten mehr bekommen

Das glaube ich kaum, hier gibt es genug Leute, die immer wieder 
antworten.

Es denken auch nicht alle gleich. Zum Glück. Darum kann man auch nicht, 
wie Du, einfach so für die anderen sprechen.

von maddin (Gast)


Lesenswert?

...die MEISTEN der leute die wirklich ahnung haben posten hier eh nicht, 
sie lesen allerhöchstens nur...

eine sehr egoistische haltung, sowie die leute die hier code entnehmen 
und verkaufen bsp.: s65 display ansteuerung oder radig sourcen für einen 
ethernetserver auf atmel basis...

es gibt hier alles, sich darüber zu streiten, ist wie zwei flöhe auf 
einem hund die sich darum streiten wem der hund gehört...oder?

...mir ist schon klar das es in diesem moment schlauer ist garnicht mehr 
zu schreiben, aber vielleicht bin ich schon lang in diesem forum... wie 
dem auch sei, alle 6-8 monate ergözt sich mal wieder einer über das 
thema mit der shift taste, es wäre auch unhöflich gewesen darauf nicht 
zu antworten, also die arschkarte hast du eh wenn es jemand darauf 
anlegt...

>>
Und woher hätte irgendjemand hier wissen sollen, dass du einen Port
benutzt, den es auf dem Mega103 nicht gibt?

das war doch die vermutung der poster hier, nicht meine angabe, aus 
gutem grund...

manchmal ist zuviel info auch nicht hilfreich, da es zu 1000 vermutungen 
führt, die 1000 gründe haben, von denen 500 auf schlechtes lesen, 450 
auf schlechtes schreiben, 49 auf annahme es läge im code und ein 
blödsinniger dazu betragen das ganze unterfangen zu unterlassen...
<<

zumal es auch leute gibt die nicht den ganzen tag hier im forum sind, um 
darauf zu warten das einer antwortet und das ruder in dem moment in die 
richtige richtung zu lenken...

jeder zweite post hier ist unzulangend beschrieben, das ist halt so, 
entweder man hilft oder man lässt es, aber manche leute können diese 
entscheidung einfach nicht für sich im stillen treffen...

m.

von Simon K. (simon) Benutzerseite


Lesenswert?

maddin schrieb:
> ...die MEISTEN der leute die wirklich ahnung haben posten hier eh nicht,
> sie lesen allerhöchstens nur...
>
> eine sehr egoistische haltung, sowie die leute die hier code entnehmen
> und verkaufen bsp.: s65 display ansteuerung oder radig sourcen für einen
> ethernetserver auf atmel basis...

Die "MEISTEN der leute, die wirklich Ahnung haben" klauen hier nichts um 
es zu verkaufen.
Sondern sparen es sich einfach auf solche Threads zu antworten, wenn 
nicht mal grundlegende Informationen drinstehen.

Ich hatte ja eigentlich auch nicht vor hier zu schreiben. Tue es aber 
auch nicht (zumindest nicht zum Thema hier).

Respekt an Karl Heinz und die Kollegen, die sich immer wieder dazu 
hinreißen lassen doch helfen zu wollen.

von maddin (Gast)


Lesenswert?

Hallo Simon,

>>Die "MEISTEN der leute, die wirklich Ahnung haben" klauen hier nichts um
es zu verkaufen.<<

das habe ich auch nie gesagt.

was hätte ich den einstellen sollen wenn ich zu blöde bin mein studio zu 
bedienen? den code in dem ich einen port auf ausgang stelle und dann ein 
bit im portregister setzte, von dem ich weiß das er läuft, wie oben 
bereits gesagt?

oder vielleicht die studioversion, compilerverion und das ich 
rechtshänder bin.

m.

von gast (Gast)


Lesenswert?

ähm so wie ich das lese sind die ersten antworten reine veralberung weil 
du in deinem eröffnungspost nicht sagst welche µC es ist .. weder code 
postet noch irgendwas anderes preisgibst

und das bis jetzt noch nicht getan hast


deswegen :

- deine beschaltung posten
- dein programmcode der nicht geht posten

woher soll auch nuer einer hier ahnen was du in den tiefes des AVR 
studios  da reingeschrieben hast

schreibs einfach rein und dir wird geholfen

von Karl H. (kbuchegg)


Lesenswert?

maddin schrieb:

> was hätte ich den einstellen sollen wenn ich zu blöde bin mein studio zu
> bedienen? den code in dem ich einen port auf ausgang stelle und dann ein
> bit im portregister setzte, von dem ich weiß das er läuft, wie oben
> bereits gesagt?


Ach wenn du wüsstest, wie viele hier behaupten das ihr Code fehlerfrei 
ist. :-)

Ja, du hättest den Code posten sollen. Glaubs oder glaubs nicht, auch 
bei sowas Simplem gibts genug Leute die 20 Fehler dabei einbauen. 
Niemand hier kennt dich, niemand weiß womit wir es bei dir zu tun haben.
Soo eine Riesenarbeit ist es dann auch wieder nicht, den Code per 
Copy&Paste einzustellen. Die Regulars werfen einen Blick drauf und 
wissen, dass sie in der Richtung nicht mehr weitersuchen müssen.

Du musst dir immer vor Augen halten, dass wir auf dieser Seite des 
Bildschirms dir nicht über die Schulter schauen können. Also gehen wir 
mal vom Naheliegensten aus: Du hast einen Codefehler. Bei deiner 
Fehlerbeschreibung ist auch die M103 Fuse ein heisser Kandidat, genauso 
wie die JTAG Fuse bei Problemen am PORTC bei vielen hier einen 
automatischen Reflex auslöst.

Aber zunächst mal klappern wir die naheliegenden, üblichen 
Fehlerursachen ab, ehe wir uns in die esoterischen Fehlerquellen 
vorwagen. Wenn du mithilfst, die üblichen Fehler schnell ad acta zu 
legen, ist uns allen geholfen und wir können anfangen nach dem 
tatsächlichen Problem zu fahnden.

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
Noch kein Account? Hier anmelden.