PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Oszillator /Taktgeber selber bauen? Wie?



Dani-Bruchflieger
24.07.2005, 12:10
Hi,
ich wurde gestern mal hier hin verwiesen, als ich Probleme mit meinem EA DIP 204-6 Display hatte - und wurde sofort fündig. Nun habe ich aber ein anderes Problem, und hoffe hier auch eine einfache Lösung zu finden. Ich wollte meinen Mega 16 auf ext. Quartz umstellen und naja wie bei Anfängern üblich hab ich das falsch gemacht - jetzt brauche ich eine ext. Taktquelle und habe keinen Oszillator da. Extra einen Bestellen wollte ich jetzt nicht, zumahl das auch ein paar Tage dauert. Darum meine Frage, kann man sich mit einfachen Mitteln sowas selber bauen? Quartze hab ich da, und auch noch ein paar andere AVR Tiny2313, Tiny26, Mega8, Mega8L. Da ich die 120 Eus für ein STK500 sparen wollte, hab ich mir einen AVR910 Programmer gebastelt, der mit AVRProg vom AVRStudio funzt - beim Ponyprog oder Bascom kriege ich den allerdings nicht zum laufen...

MfG Dani.

Manf
24.07.2005, 12:37
Vielleicht meinst Du soetwas:
Ein Oszillator besteht grundsätzlich aus einem aktiven Element, einer Arbeitspunkteinstellung und der Ankoppelung an den Resonator. Zur Arbeitspunkteinstellung braucht man einen Tiefpass vom Ausgang zum Eingang des Inverters. Die Ankoppelung an den Quarz kann mit einem Kondensator erfolgen.
Manfred
http://www.stanford.edu/~jayasena/ee272/proj_desc.htm
http://www.stanford.edu/~jayasena/ee272/osc.jpg

Dani-Bruchflieger
24.07.2005, 13:44
So ich hab es wieder hinbekommen - Grundlage für die Idee war eine Bemerkung, doch mittels 2.µC das Taktsignal zu generieren. Und so habe ich einen Mega 8 auf intern Oszillator 8MHz getaktet, und dann an Port C.0 eine LED mit Vorwiderstand zur Funktionskontrolle gesteckt und an Port C.1 das Taktsignal für den verstellten Mega16 abgegriffen.

Programm:


$regfile = "m8def.dat" 'Mega8
$crystal = 8000000

Ddrc.0 = 1
Ddrc.1 = 1
Config Timer0 = Timer , Prescale = 256
Dim 0ov1 As Byte
Enable Interrupts
Enable Timer0
Start Timer0
On Timer0 Tim0ov
0ov1 = 0

Do
If 0ov1 >= 10 Then
0ov1 = 0
Toggle Portc.0
End If
Toggle Portc.1
Loop


Tim0ov:
Incr 0ov1
Return


OK- das ergibt keine saubere Frequenz, da ab und zu auch die Befehle vom Blinken der LED abgearbeitet werden müssen, aber es funzt - ansonsten könnte das Prog auch so aussehen:


$regfile = "m8def.dat" 'Mega8
$crystal = 1000000

Ddrc.1 = 1

Do
Toggle Portc.1
Loop

Aber dann kann man nicht sehen, ob der "Taktgenerator" auch wirkich arbeitet.