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.
Ausprobieren auf eigene Gefahr!
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
Lesezeichen