Forum: Mikrocontroller und Digitale Elektronik Zeitschalter mit ATtiny13 auf STK 500 in C


von Sascha A. (sascha2011)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich versuche verzweifelt mit einem Attin13 auf einem STK 500 Board einen
simplen Zeitschalter mit einem Attiny 13 zu realisieren. Das Ding soll
folgendermassen aussehen. Es soll eine Taste gedrückt werden, danach
läuft eine Timer ab der einen Ausgan für eine gewisse Zeit schaltet. Mit
einer zweiten Taste kann der Timer vorzeitug abgebrochen werden und der
Ausgang wird resettet.  Der Tiny soll im CTC Mode arbeiten. Der Timer
funktioniert so grundsätzlich auch, nur stimmt die Dauer überhaubt nicht
mit den errechneten Werten überein. Ich habe einen OCR Wert von 47
ausgerechnet bei einer internen Taktfrequenz von 4.8 MHz um einen
Interrupt nach 10ms auszulösen. Durch runterteilen der Dauer müsste ich
bei einer Wartezeit von 100 , genau 1s erreichen. Das Problem ist, dass
die Zeit immer unterschieldlich ist, mal 1s mal 3s mal 2s. Ich komme
hier einfach nicht weiter. Vielleicht könnt ihr mir ja helfen? Ich habe
das Programm vorher auf einem Mega8515 laufen gehbat und habe
entsprechende die IO Konfiguaration und die Register angepasst. Die
Taktfrequenz hab ich über das AVR Studio eingestellt
(Boardeinstellungen), dort ist auch der Code entstanden. Bitte
berücksichtigt, dass ich ein uC Neuling bin und mein Wissen aus der
Technikerausbildung habe. Also bitte nicht zu hart mit mir umspringen
falls es ein banaler Fehler ist.

Vielen Dank schonmal und schönen Abend noch

Grüße aus Bayern

Sasscha

von Hubert G. (hubertg)


Lesenswert?

Die richtige Taktfrequenz ist in den Fuses eingestellt und CKDIV8 ist 
abgeschalten?

von Peter D. (peda)


Lesenswert?

Was hat Dich denn geritten, ein C-File als PDF zu posten?


Peter

von syn_error (Gast)


Lesenswert?

Sei froh, er hätte auch ein Photo vom Bildschirm machen können.

von sascha2011 (Gast)


Lesenswert?

Sorry, ich wusste nicht wie ich den Code sonst schicken soll dass es 
einigermassen gut aussieht. Die Taktfrequenz hab ich über das AVR 
Studion eingestellt. Die sache mit dem CKDIV8 muss ich noch prüfen. Was 
macht dieses Bit genau?

von Hubert G. (hubertg)


Lesenswert?

Im Programmierfenster gibt es den Reiter Fuses, Dort stellst du die 
Taktfrequenz ein, Standard ist 9,6MHz, und nimmst den Haken bei CKDIV8 
weg.
Es wird die Takt durch 8 geteilt. Tatsächliche Taktfrequenz daher 
1,2MHz.

von Peter D. (peda)


Lesenswert?

sascha2011 schrieb:
> Sorry, ich wusste nicht wie ich den Code sonst schicken soll dass es
> einigermassen gut aussieht.

Das macht das Forum schon ganz alleine, sogar mit Syntax-Highlighting, 
C-Files sind hier ja öfters.

Du solltest Deinem Editor nur vorher sagen, die Tabs durch Leerzeichen 
zu ersetzen.
Der Forum-Formatter kann ja nicht wissen, wie lang ein Tab bei Dir 
eingestellt ist.


Peter

von sascha2011 (Gast)


Lesenswert?

Der CKDIV war tatsächlich das Problem, ihr seid super. Dank. Beim 
nächsten mal werd ich den Code auch eleganter posten ;-)

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.