ATtiny1614 CPU Takt Problem

Gast #5384589
Hallo,

ich versuche aktuell die neuen Attiny1614 in Betrieb zu nehmen.

Ich habe 5V am Chip, Fuses in Standard-Einstellungen (20MHz RC, kein 
OSCLOCK). Ich habe ein Programm, besser gesagt "nichts". Es ist einfach 
nur:

#define F_CPU 20000000UL

#include <avr/io.h>
#include <avr/delay.h>
#include <avr/wdt.h>


int main(void)
{
   while(1)
   {
      PORTA.OUTTGL = (1<<PIN6_bp);
      _delay_ms(1000);
      wdt_reset();
   }
}



Die LED sollte jetzt jede sek einmal aufblinken (0,5 Hz blinken).
Ich habe hier einen ermittelten Takt von ca. 5 Mhz. Wie geht das?! Was 
mache ich falsch?!
Gast #5384602
Ich habe das Problem so halb gefunden. Da scheint wohl ein Prescaler 
nach dem Reset noch aktiv zu sein. Aktuell finde ich das Register zwar 
noch nicht womit ich den auf 1 schalte, aber irgendwie ist das 
schwachsinnig.
Gast #5384612
Das ist auf Ausgang gesetzt, klar.
Habe ich vergessen anzugeben.

Ich habe schon versucht mit 100ms, dann habe ich ca. 1 sek.


Das muss irgendwas mit den Clockregistern sein, ich verstehe nur nicht, 
welche ich setzen muss.
Gast #5384620
CPU_CCP = 0xD8;
  CLKCTRL_MCLKCTRLA = CLKCTRL_CLKSEL_OSC20M_gc;
  CPU_CCP = 0xD8;
  CLKCTRL_MCLKCTRLB = 0x1;


Damit habe ich, so wie ich das sehe, 10Mhz. Jetzt mal eine Frage: Wie 
bekomme ich 20 Mhz?! Nach dem DB ist der kleinste Prescaler 2. ?!?!
Gast #5384626
Mr. AVR schrieb im Beitrag #5384620:
> CPU_CCP = 0xD8;
>   CLKCTRL_MCLKCTRLA = CLKCTRL_CLKSEL_OSC20M_gc;
>   CPU_CCP = 0xD8;
>   CLKCTRL_MCLKCTRLB = 0x1;
>
>
> Damit habe ich, so wie ich das sehe, 10Mhz. Jetzt mal eine Frage: Wie
> bekomme ich 20 Mhz?! Nach dem DB ist der kleinste Prescaler 2. ?!?!

OMG

Lies' endlich das verdammte DB!

Da steht zu MCLKCTRLB:

> Bit 0 – PEN: Prescaler Enable
> This bit must be written '1' to enable the prescaler. When enabled, the
> division ratio is selected by the
> PDIV bit field.
> When this bit is written to '0', the Main Clock will pass through undivided
> (CLK_PER=CLK_MAIN),
> regardless of the value of PDIV.
Gast #5384630
Anbei das DB. Auf Seite 61 sieht man den MUX, ich habe OSC20M gewählt, 
danach kommt der Prescaler-Block mit 1,2,4,8 usw. Okay. Dort steht auch, 
nach dem Reset hat man 3,33 Mhz (das kam ca. hin).

Dann ab Seite 66 MCLKCTRLA = 0 (siehe Post vorher), ich habe OSC20M 
gewählt.
Auf Seite 67 MCLKCTRLB, kleinster Prescaler nach PDIV ist 2.

Wenn PEN = 0, kein Prescaler (Prescaler = 1) ist aktiv, wenn man die 
Prescaler nutzen möchte von PDIV, PEN muss auf 1 gesetzt werden.

Hier sieht man, nach dem Reset der Wert ist 0x11 (17), also PEN und 
Prescaler 6 aktiv.


Nun habe ich 20 Mhz int. RC. War für mich etwas verwirrend. Ich 
denke/hoffe vll. kann der Thread jmd. hilfreich sein, sind ja noch recht 
neu die Teile.
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 8 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.