Forum: Mikrocontroller und Digitale Elektronik AVR32UC3X512- PM macht probleme(SPI, uart)


von Manuel -. (ploana)


Lesenswert?

Hallo

ich arbeite mit einem AVR32UC31512
Mit dem PowerManagement habe ich Probleme
Wenn ich den UC3 mit 60MHz geht dass nicht wenn ich SPI verwende

1
static void init_sys_clocks(void)
2
{
3
4
  // Initialize system clocks.
5
  pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP);
6
  
7
 
8
9
  
10
  pm_pll_setup(&AVR32_PM, 0,  // pll. 60MHz
11
                 4,  // mul.
12
                 1,   // div.
13
                 0,   // osc.
14
                 16); // lockcount.
15
16
//  pm_pll_setup(&AVR32_PM, 0,  // pll. 48MHz
17
  //               3,  // mul.
18
    //             0,   // div.
19
      //           0,   // osc.
20
        //         16); // lockcount.
21
  
22
  
23
  pm_pll_enable(&AVR32_PM, 0);
24
  pm_wait_for_pll0_locked(&AVR32_PM);
25
  /* Divide PBA clock by 2 from main clock (PBA clock = 66MHz/2 = 33MHz).
26
     Pheripheral Bus A clock divisor enable = 1
27
     Pheripheral Bus A select = 0
28
     Pheripheral Bus B clock divisor enable = 0
29
     Pheripheral Bus B select = 0
30
     High Speed Bus clock divisor enable = 0
31
     High Speed Bus select = 0
32
  */
33
 
34
  pm_cksel(&AVR32_PM, // PBA auf 60MHz/4
35
           1,   // pbadiv.
36
           1,   // pbasel.
37
           0,   // pbbdiv.
38
           0,   // pbbsel.
39
           0,   // hsbdiv.
40
           0);  // hsbsel.
41
//  flashc_set_wait_state(1);
42
  pm_switch_to_clock(&AVR32_PM, AVR32_PM_MCSEL_PLL0);
43
44
45
  // Give the used PBA clock frequency to Newlib, so it can work properly.
46
 set_cpu_hz(FCPU_HZ);
47
}

SPI lässt sich nicht einmal Initialisieren
denn wenn der µC mit den 60MHz und PBA = 15MHz
dann bleibt dass Programm in der funktion:
spi_setupChipReg(&AVR32_SPI1, &spiOptions, FPBA_HZ);
hängen ... dass alles ist äußerst merkwürdig und ich habe zur Zeit keine 
idee was es da haben kann!

Denn der PBA Clock gilt für PWM, TC, I2C, usw und anhand von meiner 
eingestellten PWM kann ich die Periodendauer messen und die passt zu 
meinem eingestellten PBA Clock
1
        
2
     // Assign I/Os to SPI
3
        gpio_enable_module(SPI_GPIO_MAP, sizeof(SPI_GPIO_MAP) / sizeof(SPI_GPIO_MAP[0]));
4
        
5
        // add the spi options driver structure for the CC2500
6
        spi_options_t spiOptions =
7
        {
8
          .reg          = 0,  // dan wäre dies aber der chip-select!!!!!!!
9
          .baudrate     = SPI_SPEED, //SPI_SPEED,
10
          .bits         = 8,
11
          .spck_delay   = 0,
12
          .trans_delay  = 0,
13
          .stay_act     = 1,
14
          .spi_mode     = 0,
15
          .modfdis      = 1
16
        };
17
        
18
        // Initialize as master
19
        spi_initMaster(&AVR32_SPI1, &spiOptions);
20
        
21
        
22
        // Set selection mode: variable_ps, pcs_decode, delay
23
        spi_selectionMode(&AVR32_SPI1, 0, 0, 0);
24
                
25
          
26
        // Enable SPI
27
        spi_enable(&AVR32_SPI1);
28
        
29
        
30
        // setup chip registers
31
 spi_setupChipReg(&AVR32_SPI1, &spiOptions, FPBA_HZ);

Für Hinweise und Gedankenanstöße wäre ich sehr verbunden

von Jens (Gast)


Lesenswert?

Gleich vorneweg, bisher habe ich selbst nichts mit einem AT32UC3
gemacht. Was mir allerdings beim Blick ins Datenblatt aufgefallen
ist sind die vielen Erratas für die Engineering Samples. Falls Du
davon eins hast wäre das eine mögliche Ursache für merkwürdiges
Verhalten. Falls Du ein Production Part hast, wo gibt es die?

Jens

von Manuel -. (ploana)


Lesenswert?

Hallo Jens,

Nein ein Rev. H od I,
Also am einfachsten gehts, wenn du auf der Atmel Hompage einen "Sample 
Request" machst: http://www.atmel.com/forms/Samples.asp?family_id=682
Um keine Rev. unter H od. I zu bekommen, habe ich in dem Feld "Comments 
or Action" dies angemerkt!
Du bekommst dann eine Mail von einem österreichischen bzw, deutschen 
Distributor und der schickt dir diese!!
Oder du fragst gleich bei einem Distributor an


lg manuel

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
Noch kein Account? Hier anmelden.