- SF800 Solar Speicher Tutorial    Werbung      
Ergebnis 1 bis 5 von 5

Thema: XMega Clock,PLL, Prescaler einstellen in Bascom Demo

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    habe mal etwas Overclocking versucht.
    Die CPU läuft bei mir bis 50MHz, darüber ist Schluss.
    Was die interne Peripherie dazu sagt, oder wie lange der Chip das aushält , ist eine andere Frage. Bild  
    Ausprobieren auf eigene Gefahr! Bild  

    Es wird mit einem 4MHz Quarz ein 100MHz Takt über die PLL erzeugt und dann über den Prescaler C auf 50MHz CPU Takt geteilt.

    Code:
    $regfile = "xm128a1def.dat"
    $crystal = 50000000                                         'Für Bascoms interne Berechnung der Wartezeiten, etc.
    
    Ddre = &B11111111                                           'PortE alles auf Output konfigurieren
    
    Dim A As Byte                                               '
    
    ' 4MHz Quarz an PortR0 und R1, PLL mit Multiplikationsfaktor 25
    ' ergibt 100MHz Takt für 2 x Speed tolerante Peripherie (clk2per)
    ' der CPU Takt wird mit Prescaler C DIV 2 auf 50MHz gebracht.
    
    Out &H52 , &B01101011                                       ' Freq 2 bis 9 MHz, Startup Time 16K Takte, 32KHz Osc in low power Mode
    Out &H50 , &B00001000                                       ' Externen Oszillator einschalten
    Out &H55 , &B11011001                                       ' Takt für die Pll = externer Oszillator (die 4MHz) Multiplikator = 25
    Out &H34 , &HD8                                             ' Register Schreibschutz für 4 Zyklen aufheben                                        '
    Out &H41 , &B00000001                                       ' Prescaler A und B werden nicht verwendet (:1),  Prescaler C teilt durch 2
                                                                ' Vor dem Prescaler C 100 MHz Peripherietakt, dahinter 50 MHz CPU Takt
    While A.3 = 0                                               ' Warte bis Ext Oszillator stabil
       A = Inp(&H51)
    Wend
    Out &H50 , &B00011000                                       ' jetzt die PLL dazuschalten
    
    While A.4 = 0                                               ' und warten, bis sie stabil ist
       A = Inp(&H51)
    Wend
    
    Out &H34 , &HD8                                             ' Register Schreibschutz für 4 Zyklen aufheben        '
    Out &H40 , &B00000100                                       ' PLL als Systemtakt auswählen
    Out &H34 , &HD8                                             ' Register Schreibschutz für 4 Zyklen aufheben                                         '
    Out &H42 , &B00000001                                       ' weitere Einstellungen sperren
    
    Do                                                          ' Port toggeln,
                                                                ' (nur damit ich auf dem Frequenzzähler kontrollieren konnte, was sich verändert)
     Porte = 0                                                  ' 32 MHz CPU = ca. 3.5 MHz auf PortE
     Porte = 255                                                ' 50 MHz CPU = ca. 5.5 MHz auf PortE , scheint also zu funktionieren :)
    Loop
    End
    Gruß
    Christopher

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    45
    Beiträge
    1.273
    Hallo 2010, danke für diese Erklärung, sie wird sicherlich noch einigen Leuten helfen die per Google suchen. Sie hat mir eben auch wieder sehr geholfen! Bei mir laufen mehrere xmega16A4 seit langer Zeit problemlos auf 64 MHz mit 16 Mhz Quarz.

    Code:
    $regfile = "xm16A4def.dat"
    $crystal = 64000000                                 
    $hwstack = 256
    $swstack = 256
    $framesize = 256
    $lib "xmega.lib"
    Dim A As Byte
    Out &H52 , &B10101011                                      
    Out &H50 , &B00001000                                     
    Out &H55 , &B11000100                                      
    Out &H34 , &HD8                                           
                              
    Out &H41 , &B00000000                                    
                                                              
    While A.3 = 0                                            
       A = Inp(&H51)
    Wend
    Out &H50 , &B00011000                                      
    While A.4 = 0                                              
       A = Inp(&H51)
    Wend
    Out &H34 , &HD8                                           
    Out &H40 , &B00000100                                      
    Out &H34 , &HD8                                       
    Out &H42 , &B00000001
    Auch der 128A1 läuft gut auf 64 Mhz (da habe ich aber keine Langzeiterfahrung).
    Viele Grüße, William
    -> http://william.thielicke.org/

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

    Werbung      Labornetzteil AliExpress