AT32UC3C2512C Initialiserung

OP #4307024
Lesenswert?

Hallo,

ich habe mir den Artikel 
https://www.mikrocontroller.net/articles/AT32UC3C_-_Einstieg_in_die_Programmierung 
angeguckt und wollte die Init mal compilieren und auf einen 
AT32UC3C2512C flashen. Leider erhalte ich Fehler:

Zeile 22:
Error  5  multiple definition of `CPU_set_clk'  C:\Users\.././cpu.c

Zeile 1:
Error  6  undefined reference to `barrier'  C:\Users ... 
AT32UC3C2_ErsteTest.c

Restlichen Meldungen sind nur Warnungen.

Mehrere Definitionen von der Funktion CPU_set_clk() sind auf jeden Fall 
nicht vorhanden.

Habe versucht die Fehler zu googlen,  leider ohne Erfolg.

Würde mich über einen Tipp freuen!

Gruß
Angehängte Dateien:
OP #4307641
Lesenswert?

Timmo H. schrieb:
> In cpu.c gibts gibts CPU_set_clk in der cpu.h ein CPU_set_clk2.
> Du rufst in der AT32UC3C2_ErsteTest.c also etwas auf was in der cpu.h
> nicht deklariert wurde, jedoch in der cpu.c und damit zweimal.

Habe ich nur zum Testen mal umbenannt. Habe ich dummer weise vergessen 
wieder Rückgängig zu machen...

Error  5  multiple definition of `CPU_set_clk' erhalte ich auch, wenn 
ich die Fkt. CPU_set_clk() in der main nicht aufrufe
OP #4308850
Lesenswert?

Habe das hier gefunden
1
void UsePLL(unsigned int clock)
2
{
3
  int clockh = (clock/6) - 1;
4

5
  AVR32_PM.oscctrl0 = (AVR32_PM.oscctrl0 | 0x00000407);        // Startup time  /  Oscillator Mode
6

7
  AVR32_PM.mcctrl =       AVR32_PM_OSC0EN_MASK;          // Enable Oscillator 0
8

9
  while((AVR32_PM.poscsr & AVR32_PM_POSCSR_OSC0RDY_MASK)== 0);  // Oscillator 0 is ready
10

11

12
  AVR32_PM.pll[0] =       0 << AVR32_PM_PLLOSC_OFFSET  |    // Oscillator 0 is the source for the PLL
13
                    1 << AVR32_PM_PLLDIV_OFFSET  |    // div = 1
14
                    clockh << AVR32_PM_PLLMUL_OFFSET |  // multi clock z.b. if clockh = 10 (10+1)*12=132/2Fvc = 66Mhz
15
                    5 << AVR32_PM_PLLOPT_OFFSET;      // 80MHz<fvco<180MHz / fPLL = fvco / Wide Bandwidth Mode disabled
16

17
  AVR32_PM.cksel =       0x80808080;
18

19
  AVR32_PM.pll[0] |=       AVR32_PM_PLLEN_MASK;            // PLL enable
20

21
  while(!(AVR32_PM.poscsr & AVR32_PM_POSCSR_LOCK0_MASK));      // PLL 0 is locked, and ready to be selected as clock source
22

23

24
  AVR32_FLASHC.fcr |=      0 << AVR32_FLASHC_FWS_OFFSET;      // The flash is read with 0 wait state. (write 1 otherwise)
25

26
  AVR32_PM.mcctrl |=       2 << AVR32_PM_MCSEL_OFFSET;        // PLL0 as main oscillator
27

28
}


AVR32_PM.oscctrl0 gibt es bei mir nicht laut AVR Studio. Das Register 
OSCCTRL ist bei mir unter System Control Interface also AVR_SCIF.oscctrl

AVR32_PM.mcctrl wiederum ist unter Power Manager...

Ist das bei den AVR32 unterschiedlich? Macht für mich nicht so richtig 
Sinn. Kann mir hier jemand was zu erklären?

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