Atemga32U4 - Pr

Gast #2250079
Lesenswert?

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
Gast #2252030
Lesenswert?

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.
Gast #2252292
Lesenswert?

... 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
}

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