ATmega128, Timer1-overflow Problem

Hallo,

ich hab hier gerade ein kleines Problem.

Timer1 eines ATmega128 soll mit dem Prozessortakt getaktet werden. Bei overflow soll ein weiterer 16 Bit-Zähler incrementiert werden.

Initialisierung sieht folgendermaßen aus:

... TCCR1B = (0

Reply to
Stefan
Loading thread data ...

Am 12.03.2012 09:31, schrieb Stefan:

Reply to
Heiko Lechner

Am 12.03.2012 10:01, schrieb Heiko Lechner:

ok, werd ich mal testen

Kann ich nicht genau sagen. Mein Programm stürzt ab, bzw. mein LCD-Display zeigt nichts mehr an.

Ich habe das Programm mal modifiziert und statt TOIE1 den OCIE1A und den compare-int aktiviert. Damit geht es. ... TCCR1B = (0

Reply to
Stefan

Am 12.03.2012 10:01, schrieb Heiko Lechner:

Hm, mit ISR(SIG_OVERFLOW1) funktioniert es.

Seltsam...

Danke für den Tipp

Gruß

Stefan

Reply to
Stefan

Am 12.03.2012 10:17, schrieb Stefan:

Wenn schon dann: ISR(TIMER1_OVF_vect).

Aber wirklich seltsam- das kann eigentlich nicht alles sein was du geändert hast [SIGNAL(SIG_OVERFLOW1) = ISR(TIMER1_OVF_vect) = ISR(SIG_OVERFLOW1) = SIGNAL(TIMER1_OVF_vect)].

Du schrubst aber im ersten Posting:

Signal (SIG_OVERFLOW1) { timer1_high++; }

Hattest du da wirklich "Signal" oder "SIGNAL" (oder gar "signal") stehen?

Reply to
Heiko Lechner

Er müßte es merken. Wenn C als Programmiersprache irgendwas taugen würde, könnte er es auch merken...

Reply to
Heiko Nocon

Vermutlich an diesem Scheißdreck namens C, den manche völlig Verrückte eine Programmiersprache nennen...

Zeig' das Disassemblat. Nur da sieht man, was wirklich passiert!

Reply to
Heiko Nocon

Am 12.03.2012 19:05, schrieb Heiko Nocon:

Ich vermute ja eher, dass exessives C - Programmieren erst zu Wahnsinn führt ;-)

Gruß

Stefan

Reply to
Stefan

GCC gibt eine Warnung aus wenn man sich bei einem Interrupptnamen täuscht. Wenn du aber den falschen Interrupt aktivierst merkt das keiner.

--
MFG Gernot
Reply to
Gernot Fink

Am 12.03.2012 19:50, schrieb Stefan:

Entspann' dich bei

formatting link

Alfred.

Reply to
Alfred Gemsa

Hmm, Lesen allein gibt nicht den richtigen Eindruck.

Um C wirklich so richtig hassen zu lernen, muß man zumindest gelegentlich selber in C programmieren.

Am besten Änderungen/Erweiterungen in einem bestehenden, etwas länglicheren Machwerk sog. erfahrener C-"Programmierer".

Das ist echte Härte.

Reply to
Heiko Nocon

Ich hab dazu auch noch was:

formatting link

Gruß

Stefan

Reply to
Stefan

Nein, das ist nun mal compiler-spezifisch. Ein vernuenftiger AVR Compiler meckert so was ueberigens auch an bzw. benutzt eine eindeutige Syntax fuer ISRs.

Gerade C ermoeglicht es dem Compiler-Entwickler uebrigens genau solche Checks sehr einfach durchzufuehren.

Dass gcc diese Checks offenbar nicht implementiert, zweitens antiquierten Unix Stil ("SIGNAL") erlaubt und drittens offenbar ISRs wegoptimiert, wenn sie keinen Inhalt haben, koennte man eher als Beleg fuer die kuerzlich von MaWin gemachte Einschaetzung zur Brauchbarkeit von open-source-software deuten :-(

[Duck und weg] Klaus
Reply to
Klaus Bahner

Könnte man auch als Feature sehen. GCC muß ja auch alte Programme compilieren können. Gut ist übrigens immer per -Wall zu compilieren, oder gar -Werror. In meinen Programmen versuche ich sowieso immer alle Warnings zu eliminieren, und nur wenn es gar nicht anders geht (z.B. Fremdbibliothek eingebunden) per Compiler-Switch zu unterdrücken, so übersieht man keine wichtigen neuen Warnings. Jedes Werkzeug ist immer nur so gut wie derjenige der es verwendet. GCC zählt meiner Meinung nach zu den eher positiven Beispielen von Open Source Software.

--
Frank Buss, http://www.frank-buss.de
piano and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

Quark, in Binary-Only-Software ist so ein Mist auch regelmäßig drin und wird evtl. niemals gefixt, weil der Hersteller daran nichts verdient.

Bei OSS kannst du das notfalls selbst fixen. Oder jemanden bitten, der mehr Ahnung hat, es für dich zu tun.

Mit freundlichem Gruß

Jan

Reply to
Jan Kandziora

Was ich am gcc schätze, ist, daß ich *einen* Compiler für viele Plattformen habe. Ein AVR-Compiler kann sicher viele Eigenschaften der AVR berücksichtigen. Die genaue Kenntnis der Plattform ersetzt er nicht. Ein anderer Zielprozessor benötigt dann einen anderen Compiler, die Handbücher muß man trotzdem lesen. Wer mal mit ADCs in AVR und MSP430 zu tun hatte, weiß,was ich meine.

...

Wer in C programmiert, muß sehr genau wissen, was er tut. Wer in java programmiert, muß das anscheinend nicht. Und das merkt man oft genug.

Falk

--
Es gibt doch diese Kombimodelle, die man auch ans Fahrrad hängen kann,
 wenn man sein Kind nicht so gern hat.
Ulrich G. Kliegis in d.r.s.s über Kinderwagen
Reply to
Falk Willberg

Stefan :

Was wollt ihr? C ist doch bloss ein Wrapper für den Assembler. Ein klein wenig weiterentwickelter als eine Assembler Macrosprache und es hat ne Gleitkommabibliothek eingebaut. Mehr nicht. ;-)

M.

Reply to
Matthias Weingart

Man kann in jeder Programmiersprache unlesbare Programme schreiben, und von den möglichen Alternative in kleinen Embedded-Umgebungen (C, Assembler, evtl. noch Forth) ist C noch mit Abstand am besten lesbar.

Für antikes K&R-C hat das einen wahren Kern. Moderne Varianten (ANSI-C, C++) bieten dann aber doch eine ganze Menge Features, mit denen ein guter Programmierer sehr gut les- und wartbare Programme produzieren kann.

Hergen

Reply to
Hergen Lehmann

Am 13.03.2012 10:46, schrieb Hergen Lehmann:

Wichtig sind hier die Worte 'guter' und 'kann'. :-)

Gruß Dieter

Reply to
Dieter Wiedmann

Dieter Wiedmann :

Letzlich sind die Krankheiten von C nichts anderes wie der Gebrauch der unregelmässigen Verben in natürlichen Sprachen: das menschliche Gehirn ist flexibel genug, sich die Ausnahmen zu merken und damit umzugehen. Aber das braucht Zeit. Die meisten Probleme haben die Neulinge.... ;-). Warum setzt sich das Beste eigentlich so gut wie nie durch?

M.

Reply to
Matthias Weingart

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.