Forum: Mikrocontroller und Digitale Elektronik Tiny45 Timer1 Fragen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Basti (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi,


ich möchte einen Code vom Mega328P auf den Tiny45 Umschreiben. Der 
Timer1 ist beim M328P ein 16 Bit timer und beim Tiny ein 8 Bit timer.

Ich nutze Timer1 zur frequenzerzeugung

Config Timer1 = Timer , Prescale = 256 , Clear Timer = 1 , Compare A = 
Toggle ,COMPARE b=disconnect
und dann
ocr1A=63


ich habe die timer-berechnungsroutine so angepasst, dass sie keine werte 
über 255 akzeptiert (65535 beim mega328pdef)

jedoch entspricht die erzeugte Frequenz nicht dem was ich 
vorherberechnet habe - anders als beim mega328p, wo die erzeugten 
frequenzen immer passen.

Gibt es Bit auf die Bitlänge noch etwas anderes zu beachten beim Tiny45?

von posti (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi

Denke, Du veränderst mit dem Prescale nicht die Taktung des Timer, 
sondern den Takt des Chip.

Denke, Du möchtest per CS13...CS10 (TCCR1) eine Reduzierung der 
Timergeschwindigkeit erreichen.

Selber nur Assembler, könnte also auch kompletter Unsinn sein :)

MfG

von Karl M. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Basti schrieb:
> Gibt es Bit auf die Bitlänge noch etwas anderes zu beachten beim Tiny45?

Ja steht sehr genau im Datenblatt. Welche Register man so setzen muss.

Dann überprüft man noch den Assemblercode und stellt so fest, ober 
Bascom das auch so umsetzt, wie man möchte.

von Thomas E. (Firma: Thomas Eckmann Informationst.) (thomase)


Bewertung
0 lesenswert
nicht lesenswert
Basti schrieb:
> Gibt es Bit auf die Bitlänge noch etwas anderes zu beachten beim Tiny45?

Der Prescaler hat eine andere Teilung. Die CS-Bits kann man nicht 1:1 
übernehmen.

von Marc V. (Firma: Vescomp) (logarithmus)


Bewertung
0 lesenswert
nicht lesenswert
Basti schrieb:
> ich habe die timer-berechnungsroutine so angepasst, dass sie keine werte
> über 255 akzeptiert (65535 beim mega328pdef)

 Bei 8bit Timer ginge das auch schwer.

> jedoch entspricht die erzeugte Frequenz nicht dem was ich
> vorherberechnet habe

 Und darf man wissen, was du vorherberechnet hast ?

 Tiny85 läuft normalerweise mit 8MHz = 125ns * 256 = 32us * 64 =
 2048us.
 Vorausgesetzt, du hast nicht auf fast peripheral clock umgestellt.

 Falls nicht, deine LED leuchtet nicht mit voller Helligkeit, weil mit
 etwa 250Hz ein- und ausgeschaltet wird. Auf jeden Fall 50% : 50%.
 Mit blossem Auge merkst du da aber nicht viel davon.

: Bearbeitet durch User
von M. K. (sylaina)


Bewertung
0 lesenswert
nicht lesenswert
Marc V. schrieb:
> Tiny85 läuft normalerweise mit 8MHz

Kommt drauf an was man unter "normalerweise" versteht. Werksseitig läuft 
er nur mit 1 MHz.

Basti schrieb:
> jedoch entspricht die erzeugte Frequenz nicht dem was ich
> vorherberechnet habe

Welche Frequenz hast du denn vorher berechnet und welche Frequenz hat 
sich eingestellt?

Zeige doch mal deinen Code der zu dem Verhalten führt. Hast du z.B. 
bedacht, dass der System-Clock-Precaler nicht so ohne weiteres geändert 
werden kann? Und hast du bedacht, dass man beim Tiny85 zwar einen recht 
schnellen Timer1-Takt vorgeben kann (32/64 MHz), jedoch auch da zum 
Einstellen ähnliches zu beachten ist wie zum Einstellen des 
System-Clock-Prescalers?
Ich nehme an, dass du die Frequenz richtig berechnet hast jedoch einer 
deiner Taktgeneratoren nicht mit der Geschwindigkeit läuft, die du in 
deinen Berechnungen angenommen hast.

von filiph (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Marc V. schrieb:
>  Und darf man wissen, was du vorherberechnet hast ?
>
>  Tiny85 läuft normalerweise mit 8MHz = 125ns * 256 = 32us * 64 =
>  2048us.

Und darf man wissen, was du hier berechnet hast?

von M. K. (sylaina)


Bewertung
0 lesenswert
nicht lesenswert
filiph schrieb:
> Und darf man wissen, was du hier berechnet hast?
Na das ist doch einfach: Er hat die Dauer berechnet, bis der Compare 
eintritt, mit den Werten die der TE angab.

von filiph (Gast)


Bewertung
0 lesenswert
nicht lesenswert
M. K. schrieb:
> filiph schrieb:
>> Und darf man wissen, was du hier berechnet hast?
> Na das ist doch einfach: Er hat die Dauer berechnet, bis der Compare
> eintritt, mit den Werten die der TE angab.

Achso, ich dachte schon, das die Frequenz, die bei dem TE nicht paßt, 
2048us wären wegen 8MHz = 125ns * 256.

von m.n. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich denke, Basti wird sich nach seiner Eingangsfrage nicht wieder 
melden, wie es mit gleicher Problematik schon hier der Fall war. 
Beitrag "Frequenzerzeugung mit tiny45 - niedirge frequenzen in hardware?"
Zeitverschwendung!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.