Forum: Mikrocontroller und Digitale Elektronik Zeit beim ATTiny 2313 stimmt nicht?


von Andi (Gast)


Lesenswert?

Hallo Leute,

mein Model wird gesteuert durch einen 2313. Berichtigt mich, wenn ich 
mich irre, aber 1 sec hat 100 ms. das heißt, 10 sekunden wären 1000ms. 
Ich habe den so programmiert und musste aber feststellen, dass die Zeit 
überhaupt nicht stimmte. Ich musste sie um einen Faktor von 1.35 
erhöhen, um annähernd die Zeit von 10 sec. einzuhalten. Woran liegt das 
denn?
Ein Ausschnitt aus dem Programm:

Waitms 945                                                  'Anlaufzeit 
des CD-Players+Zeit bis Start
Waitms 2025

Portb.3 = 1


Waitms 2565

Portb.3 = 0

Waitms 3780

Portb.1 = 1


Waitms 945
Portb.2 = 1

Waitms 1215

Portb.3 = 1

Waitms 810
Portb.3 = 0
Portb.5 = 1

Waitms 8235
Portb.5 = 0
Portb.3 = 1

Waitms 2160

Portb.3 = 0
Waitms 1080

Portb.2 = 0

Waitms 1890

Portb.1 = 0



End


Gruß
Krakeman

von Cyblord -. (cyblord)


Lesenswert?

Andi schrieb:
> Berichtigt mich, wenn ich
> mich irre, aber 1 sec hat 100 ms.

ms = Millisekunden. Milli= 1000. Somit 1ms = 1/1000 Sekunden.

Erinnere dich mal an Zentimeter und Millimeter. Na klingelts?

von holger (Gast)


Lesenswert?

>10 sekunden wären 1000ms.

Nö, 1000ms sind eine Sekunde.

von Adam Rübe (Gast)


Lesenswert?

cyblord ---- schrieb:
> Milli= 1000.

ja klar... und kilo = 0,001 ;-)

Weitere Vorschläge zur Mathematikreform?

von Cyblord -. (cyblord)


Lesenswert?

Adam Rübe schrieb:
> cyblord ---- schrieb:
>> Milli= 1000.
>
> ja klar... und kilo = 0,001 ;-)
>
> Weitere Vorschläge zur Mathematikreform?

Trottel...
Ich denke den restlichen Teilnehmern war klar wie das gemeint ist. Der 
lateinische Wortstamm "Mille" entspricht Tausend.
Milli als Vorsatz für Maßeinheiten deshalb tausendstel. Was übrigens 
auch durch das 1/1000 angedeutet war. Also krieg dich wieder ein.
Und mit Mathematik hat das auch alles recht wenig zu tun.

von Andi (Gast)


Lesenswert?

Wieso müssen sich hier immer alle angiften. Kann das nicht mal sachlich 
bleiben?

von Andi (Gast)


Lesenswert?

Ok, ich habe mich verhauen, das kann auch mal einem Techniker passieren, 
aber wieso musste ich den Faktor um 1.35 erhöhen, und nicht um 10?

von Uwe (de0508)


Lesenswert?

Ich habe eine Frage,
was soll |Waitms| für eine Funktion sein ?

Einfach ein Delay oder ist die Wartezeit timerbasierend ?

Wenn das ein einfaches Delay ist, dass ist das nie genau, da jeder 
Interrupt die Ausführungszeit verlängert.

oK?

von Andi (Gast)


Lesenswert?

Ich habe nur in Bascom programmiert, ich denke, dass das nur ne 
Verzögerung darstellt, bis der nächste Befehl ausgeführt wird

von Eumel (Gast)


Lesenswert?

hast du denn Interrupts in deinem Programm? Welche Taktquelle benutzt 
du? Hast du dem Programm den richtigen Takt mitgeteilt?

von Andi (Gast)


Lesenswert?

$regfile = "2313def.dat"
$hwstack = 32
$swstack = 10
$framesize = 40
$crystal = 8000000                                          ' Achtung: 
Taktfrequenz per Fusebits auf 8 MHz einstellen!
'----------------------------------------------------------------------- 
--------------------------
' Ports auf Ausgang setzen
'----------------------------------------------------------------------- 
--------------------------
Ddrb = &B11111111
Ddrd = &B01111111

habe ich aus einem fertigen Programm übernommen...

von Uwe (de0508)


Lesenswert?

$crystal = 8000000 UND --

läuft der RC Oszillor oder ist ein externer Quarz angeschlossen und 
richtig beschaltet ?

Welche Fusebits sind gesetzt ?

von Andi (Gast)


Lesenswert?

Kein externer Quarz.

von Hannes L. (hannes)


Lesenswert?

Uwe S. schrieb:
> $crystal = 8000000 UND --
>
> läuft der RC Oszillor...

Naja, es gibt immer noch Bascomer, die meinen, mit der $crystal-Angabe 
den AVR auf den genannten Takt einstellen zu können...

...

von Andi (Gast)


Lesenswert?

Fusebits habe ich auch keine gesetzt, habe auch keine Ahnung, wie das 
geht. Bin in den Kinderschuhen, was das betrifft. Der 2313 soll doch nur 
das machen, was ich will :-))

von adam riese (Gast)


Lesenswert?

Andi schrieb:
> Taktfrequenz per Fusebits auf 8 MHz einstellen!

10/8 = 1,25
also um Faktor 10 verrechnet und Takt nur 1 Mhz statt 8.
clkdiv8 Fuse falsch.

kommt doch mit 1,35 in etwa hin.

von Eumel (Gast)


Lesenswert?

Also schreib bei Crystal 1000000 hin und alles ist gut :)

von Eumel (Gast)


Lesenswert?

Wenn du dann noch 1 Sekunde = 1000 Millisekunden beachtest wirds 
funktionieren.

von Andi (Gast)


Lesenswert?

Super, ich werde es probieren. Wie immer bekomme ich in diesem Forum 
gute Antworten, abgesehen von Leuten die sich für Gott halten und andere 
beleidigen müssen. Als Dank ein Link zu meinem Karussell

http://www.youtube.com/watch?v=ejOkMP1EC9A&feature=channel&list=UL

von Chris (Gast)


Lesenswert?

Habe die letzte Zeit einige 2313 mit internem RC laufen um einen 0815 
Timer zu ralisieren, dabei habe ich bei einer minute soll teilweise nur 
57 sekunden rausbekommen, mit nem externen Quarz, konnt ich die Uhr gar 
nicht so genau stoppen ;) Also nicht wundern wenn du doch noch etwas 
anpassen musst. LG

von Eumel (Gast)


Lesenswert?

Es könnte hilfreich sein, zu schauen was das Datenblatt zur Genauigkeit 
des internen Oszillators sagt. Tip: sie ist bescheiden.

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.