Minimaler Systemtakt Atmega32

Gast #3508753
Lesenswert?

Hallo,

ich habe eine Frage bzgl der Taktung der AVRs.

Folgendes Szenario:

Systemtakt kommt vom Funktionsgenerator (Rechteck 1kHz..40MHz)
passiert dem Chip was (irgendwelche Beschädigungen) wenn ich mit der 
Frequenz auf 1KHz gehe? oder läuft der Chip dann erst garnicht mehr an?

Danke für eure Antworten

Gruß

Matthias
#3508781
Lesenswert?

@ matze (Gast)

>Systemtakt kommt vom Funktionsgenerator (Rechteck 1kHz..40MHz)
>passiert dem Chip was (irgendwelche Beschädigungen) wenn ich mit der
>Frequenz auf 1KHz gehe?

Nein, aber.

>oder läuft der Chip dann erst garnicht mehr an?

Es kann passieren, dass beim einem zu schnellen Anstieg der Frequenz die 
CPU abstürzt. Der Grund liegt in ein paar geheimen Tricks, die im AVR 
beim Takten passieren. Laut Datenblatt darf die Änderung der 
Taktfrequenz zwischen zwei Takten maximal 2% betragen.

Siehe Datenbaltt unter

"External Clock Drive Waveforms", delta t CLCL

Die ganz alten AVRs der AT90S Reihe hatten das Problem nicht, die 
konnten wild mit der Taktfrequenz rumspringen.

Früher war alle besser ;-)
Persönliche Seite #3508840
Lesenswert?

Falk Brunner schrieb:
> @ matze (Gast)
> Es kann passieren, dass beim einem zu schnellen Anstieg der Frequenz die
> CPU abstürzt. Der Grund liegt in ein paar geheimen Tricks, die im AVR
> beim Takten passieren. Laut Datenblatt darf die Änderung der
> Taktfrequenz zwischen zwei Takten maximal 2% betragen.
>
> Siehe Datenbaltt unter
>
> "External Clock Drive Waveforms", delta t CLCL

Kann der dabei wirklich abstürzen oder zickt dann nur Peripherie, wie 
der AD-Wandler? Letzteres fände akzeptabel, ersteres blöd. Das 
Datenblatt schweigt sich da ja aus. Weiß da jemand was genaueres?

Ich hatte vor einiger Zeit mal eine Schaltung, bei der der Takt von 
einem externen CAN-Controller kam. Der CAN-Controller lieferte auf 
seinem CLKOUT per Default sein CLK/8, lies sich dann aber per SPI in 
Zweierpotenzen hochkonfigurieren bis CLK. So konnte ich ein Quarz 
sparen. Zumindest theoretisch blieben mir damit auch mögliche (schwer zu 
blockende, niederfrequente) Interferenzen erspart, die bei 
unterschiedlichen Quarzen theoretisch auftreten können. Gut, vielleicht 
etwas esoterisch und EMV war eh egal, aber dran denken darf man ja.
Sowas geht also nicht mehr.

Grüße, Joey
#3508857
Lesenswert?

@ Tilo Renz (joey5337)

>Kann der dabei wirklich abstürzen

Ja!

>oder zickt dann nur Peripherie, wie
>der AD-Wandler?

NEIN!

> Letzteres fände akzeptabel, ersteres blöd. Das
>Datenblatt schweigt sich da ja aus. Weiß da jemand was genaueres?

Hab ich live erlebt. Das RFM12 Projekt hier aus der Codesammlung, das 
schaltet den Takt vom RFM12 (welcher den AVR speist) hart von 1 MHz auf 
10 MHz. Obwohl KEINE Glitches auftreten (hab ich nachgemessen) 
stürzt der AVR ab. Nur ein schrittweises Hochschalten von 1,2,5,10 MHz 
geht, obwohl auch das WEIT über den zulässigen 2% liegt.

>Sowas geht also nicht mehr.

Nicht mehr offiziell ;-)
Gast #3508874
Lesenswert?

Bei niedrigem Takt, so unter 100 kHz muss man damit rechnen da der AD 
Wandler nicht mehr so gut geht. Da wird dann einfach der AD Tahlt zu 
niedrig. Bei nicht zu hoher Temperatur und damit nicht so hohen 
Leckströmen kann es vermutlich noch einiges niedriger als die 
offiziellen 100 kHz (50 kHz ADC-takt) gehen, bevor man viel merkt.
Gast #3509774
Lesenswert?

Falk Brunner schrieb:
> Hab ich live erlebt. Das RFM12 Projekt hier aus der Codesammlung, das
> schaltet den Takt vom RFM12 (welcher den AVR speist) hart von 1 MHz auf
> 10 MHz. Obwohl KEINE Glitches auftreten (hab ich nachgemessen)
> stürzt der AVR ab. Nur ein schrittweises Hochschalten von 1,2,5,10 MHz
> geht, obwohl auch das WEIT über den zulässigen 2% liegt.

Wo stürzt da was ab?
Habe den Mega8 taktversorgt vom RFM12 zigfach im Einsatz...
#3509854
Lesenswert?

@ Moby (Gast)

>> stürzt der AVR ab. Nur ein schrittweises Hochschalten von 1,2,5,10 MHz
>> geht, obwohl auch das WEIT über den zulässigen 2% liegt.

>Wo stürzt da was ab?
>Habe den Mega8 taktversorgt vom RFM12 zigfach im Einsatz...

Ich glaub es war ein ATmega88, der hat einenen anderen Prozess bzw. ist 
intern sowieso überarbeitet. In diesem Punkt leider in die falsche 
Richtung. :-(

Wie schaltest du den Takt um? Direkt von 1MHz auf 10MHz?
Gast #3510060
Lesenswert?

Falk Brunner schrieb:
> Ja, das ist das Projekt.
>
> Beitrag "Re: bidirektionale RS232 Funkbrücke mit RFM12"
>
> Nimm einen ATmega88 und teste. Mit der Version 4 natürlich!

Mag sein, dafür möchte ich aber jetzt keine meiner Fertigplatinen 
opfern...
Im Beitrag wird auch ein Mega8 verwendet. Trotzdem gut zu wissen.
#3510145
Lesenswert?

@ Moby (Gast)

>    rfm12funkbruecke.7z (10 KB, 1 Downloads)
> Die Version verwende ich und kann dafür die Hand ins Feuer legen :)

1
void rf12_init(void)
2
{
3
  RF_PORT=(1<<CS);
4
  RF_DDR&=~((1<<SDO));
5
  RF_DDR|=(1<<SDI)|(1<<SCK)|(1<<CS);
6
  SPCR=(1<<SPE)|(1<<MSTR);
7

8
  for (unsigned char i=0; i<20; i++)
9
    _delay_ms(10);          // wait until POR done
10
  rf12_trans(0xC060);          // AVR CLK: 2MHz
11
  rf12_trans(0xC0C0);          // AVR CLK: 5MHz
12
  rf12_trans(0xC0E0);          // AVR CLK: 10MHz
13
  rf12_trans(0x80D7);          // Enable FIFO
14
  rf12_trans(0xC2AB);          // Data Filter: internal
15
  rf12_trans(0xCA81);          // Set FIFO mode
16
  rf12_trans(0xE000);          // disable wakeuptimer
17
  rf12_trans(0xC800);          // disable low duty cycle
18
  rf12_trans(0xC4F7);          // AFC settings: autotuning: -10kHz...+7,5kHz
19
}

;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren