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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.