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