Forum: Mikrocontroller und Digitale Elektronik Alle Viertelsekunde was zum PC schicken (16bit Timer, CTC)


von Johannes Permoser (Gast)


Angehängte Dateien:

Lesenswert?

hi,

ich wollte alle Viertelsekunde ein 'a' udn einen Zeilenumbruch per
RS232 an den PC schicken. Eigentlich funktioniert das auch, nur alles
geht vile zu schnell. Die 'a's überfluten geradezu Hyperterminal.

Warum? Habe ich Timereinstellungen falsch gesetzt?

Quellcode hängt an

MfG, Johannes

von Christian Rötzer (Gast)


Lesenswert?

Wenn Du Dir diesen Fehler suchen läßt, solltest Du Dir überlegen, Bäcker
zu werden :-)

Grüße

Christian

von Johannes Permoser (Gast)


Lesenswert?

> Wenn Du Dir diesen Fehler suchen läßt, solltest Du Dir überlegen,
> Bäcker zu werden :-)

heißt das jetzt:
1. dass ich entweder einen sehr dummen fehler gemacht hab
oder 2.: such doch selbst ?

von Christian Rötzer (Gast)


Lesenswert?

Ich würde es anders ausdrücken: Ergreife die Chance, Dich mit dem
Prozessor so richtig auseinander zusetzen. Spätere Fehler in einem
komplizierterem System werden voraussetzen, dass Du dich mit dem Timer
bestens auskennst.
Erfahrungsgemäß gibt es nämlich nichts schlimmeres, wie ein Programm,
das auf Anhieb funktioniert. Gibt's in einem fortgeschrittem Stadium
Deines Projektes dann doch ein Problem, kannst Du nicht mehr
unterscheiden, wo die Fehlerursache liegt, bzw. mußt Dich erst recht
mit der Materie auseinandersetzen.

Grüße

Christian

von Johannes Permoser (Gast)


Lesenswert?

zu meiner verteidigung:

am programm code war garnichts falsch.
der assembler wollte nur nicht mit kommazahlen (in den ersten zeilen
gleich) rechnen

von Profi (Gast)


Lesenswert?

@Christian: diesen Kommentar hättest Du Dir sparen können.
Andere Leute schwach anzureden ist nicht gerade Zeugnis hohen
Charakters und sozialer Kompetenz.

Ich hatte zuerst alle Posts gelesen, dann den Code.
Ich hatte schlimmsten Spagetticode befürchtet, aber er ist recht in
Ordnung, bis auf die eine Berechnung.

Oder, Christian, wie hättest Du es gemacht?
(Das soll eine Aufforderung sein, einen 1A-Code zu posten!)

@Johannes: Im Listing oder im Simulator hättest Du aber gleich sehen
können, wo der Hase im Pfeffer liegt.

von Christian Rötzer (Gast)


Lesenswert?

Hallo Profi,

Ich habe an dem Code auch nix auszusetzen. Sauber und übersichtlich.
Ich frage mich nur, wo hier der Ergeiz ist, so einen Fehler zu finden.
Und es werden härtere Nüsse folgen!

Grüße

Christian

P.S.: Fast wäre ich der Versuchung erlegen. Netter Versuch ;-)

von Olaf_K (Gast)


Lesenswert?

Noch eine kleine Anmerkung:

Bei den neueren AVRs (Tiny..., Mega...) wird der Compare Match
Interrupt erst bei OCVAL+1 ausgelöst. Bei deinem Code (d.h. falls die
Berechnung klappen würde) also einen Timertick zu spät.

Das unterschiedliche Verhalten zu den älteren AVRs (90S...) wird z.B.
in der Appnote AVR091 (=Vergleich zwischen AT90S2313 und dessen
Nachfolger Tiny2313) gut beschrieben.

Das AVRStudio simuliert den CompareMatch-Interrupt bei den älteren AVRs
(AT90S2313) übrigens nicht korrekt.

MfG Olaf

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.