Forum: Mikrocontroller und Digitale Elektronik Studio4.x & Takt-Teiler.


von W. Meyer (Gast)


Angehängte Dateien:

Lesenswert?

Werte Damen und Herren.

Habe nun schon wieder eine Frage. Sowohl zum AVR-Studio4.1x als auch zum 
Taktteiler.
Weil ich Englisch zwar einigermaßen gut lesen, aber nur bruchstückhaft 
verstehen kann,
nützt mir die Beschreibung des Tiny2313V nicht immer viel.
Vor allem wenn Zusammenhänge erklärt werden, die nun mal nicht ganz 
trivial sind.
Die Fachbegriffe merkt man sich mit der Zeit und ich kann vieles selbst 
herauslesen.
Current bedeutet Strom (mA), Flash ist der Programmspeicher im AVR 
usw...
Natürlich habe ich versucht, den Abschnitt der den Taktteiler beschreibt 
zu verstehen.
Das gelingt mir aber nicht vollständig (mit fast 60 wird Englisch sicher 
nicht mehr zu meiner Muttersprache).

Wie man generell die Taktquelle mit passender Startzeit auswählt, habe 
begriffen.
Ich würde aber gern nur den Taktteiler dauerhaft ändern. Das scheint mir 
nicht so einfach zu sein.
Irgentwo im WWW habe ich gelesen (manchmal findet man auch was deutsches 
zum speziellen Problem),
das es mit bestimmten Registerlade-Befehlen sogar während der Laufzeit 
des AVR-Programms gehen soll.
Ansonsten findet man zwar meistens nur den Hinweis auf das 
CKDIV-Register,
aber nicht wie man z. B. im AVR-Studio vorgehen muß, um den Taktteiler 
dauerhaft zu verändern.

Klar ist mir, das der Tinny2313 mit eingeschalteten internen 
RC-Oszillator mit der Einstellung auf 8MHz
und dem nachfolgenden Taktteiler auf 8 ausgeliefert wird. Somit arbeitet 
der 2313 original erst mal mit 1MHz.
Das Ergebnis beim Auslesen der Fuses meines Boards zeigt das auch so, 
was sich mit der Beschreibung deckt.

Hätte gern mal probehalber den Taktteiler auf 16 statt 8 gestellt 
(später brauche ich 256) um mal zu sehen,
ob die LEDs in meiner fertigen Zielschaltung dann auch wirklich mit der 
halben Frequenz blinken.
Eine spätere Anwendung würde nahelegen, dann gleich mit 128KHz durch 
Teiler 256 zu arbeiten.
Schneller braucht eine 7-Segmentanzeige mit 2313 als BCD-Dekoder nun mal 
nicht zu sein.
Weil die ISP-Frequenz meines Programmers bis herunter zu 50Hz 
einstellbar ist, sollte es doch funktionieren.

Weil ich mein "Targetboard" keinesfalls gleich totlegen will, habe ich 
mal damit gespielt:
http://www.engbedded.com/fusecalc
Man kann dort, wie anscheinend auch im AVR-Studio ganz unten auch die 
Hex-Werte ändern.
Dabei hat sich aber auch die Taktquelle u. A. unabsichtlich mit 
verstellt.
Ich will aber wirklich nur den Teilerfaktor ändern. (Später zusätzlich 
interner Takt auf 128KHz mit Teiler 256.)
Eigentlich wollte ich nach Tabelle 12 in der Tiny2313 Beschreibung 
vorgehen.
Vorerst will ich nur den Teiler von 8 auf 16 ändern um zu sehen ob die 
LEDs dann halb so schnell blinken.

Was mache ich da falsch?

Vielen Dank: Wolfg.

von Düsendieb (Gast)


Lesenswert?

W. Meyer schrieb:
> Hätte gern mal probehalber den Taktteiler auf 16 statt 8 gestellt

Das geht nicht.

Da gibt es Taktteiler bei der Konfiguration der Timer, die sind dafür da

von Düsendieb (Gast)


Lesenswert?

Lass die Fuses auf Auslieferungszustand und beschäftige dich mit den 
Timern im Tutorial

von W. Meyer (Gast)


Angehängte Dateien:

Lesenswert?

Welchen Sinn hat dann diese Tabelle in der Beschreibung des 2313V?
Wolfg.

von spess53 (Gast)


Lesenswert?

Hi

>Welchen Sinn hat dann diese Tabelle in der Beschreibung des 2313V?

Das sind die Teilerfaktoren für das Clock Prescale Register (CLKPR). Das 
must du aber im Programm setzen.

MfG Spess

von Anton (Gast)


Lesenswert?

Hallo Wolfgang,

1. die "fast 60" sind kein Hinderungsgrund, gehöre schon zu Ü60

2. Die Tabelle gibt an durch welchen Faktor der Oszillatortakt
   (Systemtakt) geteilt wird, bevor er z.B. auf einen Teilereingang 
gelangt.

Beispiel:
Ist das Bit CLKPS1 gesetzt, die anderen gelöscht, wird der Systemtakt
durch 4 geteilt bevor er z.B. zum Timer gelangt.

Die Bits stehen in einem Register, auf das Du per In/out oder LDS STS
zugreifen kannst. Somit kannst Du diese Bits per Programm 
setzten/löschen.
Die Fuse "Clock durch 8 teilen" hat mit den Bits CLKPSx nichts zu
tun.
Betrachte dies einfach als einen per Fuse zuschaltbaren zusätzlichen 
Teiler.

von W. Meyer (Gast)


Lesenswert?

Erst mal vielen Dank für die Antworten.

Es geht also wirklich nur vom Anwender-Programm aus. Schade.

Habe was gefunden, was natürlich noch auf den 2313 angepaßt werden 
müßte:
 #include "tn13def.inc"
  ldi r16,(1<<clkpce)     ; erlaube Änderung des Clock-Prescaler
  out clkpr,r16
  ldi r16,(1<<clkps3)  ; Teile den Takt durch 256
  out clkpr,r16

So könnte ich bei einer Versorgung mit Batterie Strom sparen.
Das ist der eigentliche Sinn der Sache.
So spare ich eben erst nach dem Hochfahren. Das tut es aber auch.

Allerdings habe ich die Anleitung so verstanden,
daß evtl. noch ein spezielles Regime eingehalten werden muß (4 Takte?).

Hauptsache die Taktquelle und alles Andere wird nicht verändert.

Sehr vielen Dank für Eure Antworten: Wolfg.

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.