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
Das Datenblatt ist dein Helfer. Es sagt, dass der Takt minimal 0Hz sein darf.
@ 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 ;-)
Hallo Nochmal, Damit wäre alles beantwortet! vielen Dank an alle! werde dann mal alles von 1Khz bis 40 MHz probieren... Mal sehen ob AVR übertaktet werden kann! Viele Grüße Matze
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
@ 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 ;-)
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.
@ Falk Brunner (falk) vielen Dank für den Erfahrungsbericht. Wieder was gelernt.
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...
matze schrieb: > Hallo Nochmal, > Mal sehen ob AVR > übertaktet werden kann! > > Viele Grüße > > Matze Da mußt Du Dir mal den Xmega ansehen. Teilweise bis 64 MHz und darüber hinaus (offiziell 32)
@ 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?
Es handelt sich um den Code von hier: Beitrag "bidirektionale RS232 Funkbrücke mit RFM12" Den meinst Du doch? Setze ich unverändert ein. Den Mega8 noch kurz auf externen Clock gefust, fertig.
Ja, das ist das Projekt. Beitrag "Re: bidirektionale RS232 Funkbrücke mit RFM12" Nimm einen ATmega88 und teste. Mit der Version 4 natürlich!
:
Bearbeitet durch User
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! Wo finde ich die Version 4? Im Thread wird sie erwähnt, jedoch ohne Link.
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.
Die Version verwende ich und kann dafür die Hand ins Feuer legen :)
@ 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 | }
|
;-)
Schau an. Dann ist man damit also in jedem Fall auf der sicheren Seite :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.