Hallo, man bekommt in AVR Studio diverse Fehlermeldungen wenn man mit diesen Befehlen die Clock wechseln möchte.... ../Atmega32U4_test.c:30: error: expected identifier before numeric constant //Wechsel zur externen Clock/Crystal void switch_clock_rc_to_extern(void){ if (UDINT.WAKEUPI == 1) { UDINT.WAKEUPI = 0; CKSEL0.EXTE = 1; while (CLKSTA.EXTON != 1); CLKSEL0 = 1; PLLCSR.PLLE = 1; CLKSEL0.RCE = 0; while (PLLCSR.PLOCK != 1); USBCON.FRZCLK = 0; } } Der richtige Controllertyp ist eingestellt. Verwendet wird AVR Studio 4.18 An was kann es liegen, dass die Definitionen nicht bekannt sind? Gruß Flo
Du hättest wenigstens angeben können, welche denn nun die Zeile 30 ist! Aber das hier:
1 | if (UDINT.WAKEUPI == 1) |
dürfte so nicht passen. Das sieht nach der Notation für atXmegas aus. Für atmagas (ohne X) sollte eher sowas passen:
1 | if(UDINT & (1<<WAKEUPI)) |
Ähnlich dann für den Rest.
Die Fehlermeldung kommt bei jeder Zeile.... Das Beispiel ist aus dem Datenblatt... darum wundert es mich um so mehr, dass es nicht hinaut..... Gruß Flo
flo schrieb: > Die Fehlermeldung kommt bei jeder Zeile.... Naja, die Syntax ist halt auch in jeder Zeile falsch. flo schrieb: > Das Beispiel ist aus dem Datenblatt Das kann ich kaum glauben. Welches Datenblatt?
Hallo, wenn ich mich nicht täusche, ist das Beispiel für den IAR C Compiler. Da sehen die Bitdefinitionen so aus. Glaube ich zumindest, habe den IAR Compiler noch nicht benutzt. Carsten
... schrieb: > flo schrieb: >> Das Beispiel ist aus dem Datenblatt > > Das kann ich kaum glauben. Welches Datenblatt? Mist, da hab ich vorhin auch in das falsche DB geschaut :( Steht tatsächlich so im DB, allerdings nur als Kommentar und dann auch noch fehlerhaft :( Für GCC müßte das Ganze etwa so aussehen:
1 | //Wechsel zur externen Clock/Crystal
|
2 | void switch_clock_rc_to_extern(void){ |
3 | if(UDINT & (1<<WAKEUPI)) |
4 | {
|
5 | UDINT &= ~(1<<WAKEUPI)); |
6 | CLKSEL0 |= (1<<EXTE); |
7 | while(!(CLKSTA & (1<<EXTON))); |
8 | CLKSEL0 |= (1<<CLKS); |
9 | PLLCSR |= (1<<PLLE); |
10 | CLKSEL0 &= ~(1<<RCE)); |
11 | while(!(PLLCSR & (1<<PLOCK))); |
12 | USBCON &= ~(1<<FRZCLK); |
13 | }
|
14 | }
|
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.