PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATmega48 externer Quarz



Michael 123
22.09.2006, 20:15
Hallo,

um das ganze nun ein bisschen einzugrenzen und nicht ein neues Thema aufzumachen habe ich den Titel geändert. Es geht nun nur noch um den externen Quarz.
Mein Programm schaut so aus:


$regfile = "m48def.dat"
$crystal = 4000000
$baud = 19200

Dim I As Byte 'Byte: 0...255




On Urxc Onrxd 'Interrupt-Routine setzen
Enable Urxc 'Interrupt URXC einschalten
Enable Interrupts 'Interrupts global zulassen
'---------------------------------------------------
Do
I = I
Loop
'---------------------------------------------------
Onrxd:

I = Udr


Printbin I

Return

Wenn ich nun an den ATmega48 was sende kommen mehr oder weniger nur "schmierenzeichen" am Terminal raus. Baudrate ist auf 19200 eingestellt wenn ich aber nun die Baudrate auf 1200 einstelle geht alles. Ist das so richtig?
Ach ja in Bascom habe ich bei den Fuse Bits das Fusebit für den Quarz auf 0000 (= external Clock) gestellt. Ich verwende ja einen externen 4 Mhz Quarzoszillator.

Hoffe ihr könnt mir helfen.

mfg
Michael

PS: Die nächsten Antworten beziehen sie noch auf das alte Thema:
ATmega48 Quarz PWM AD-Wandler Uart welche Fuse und Lock Bits
also einfach am schluss Antworten :-)

Hallo,

wie schon der Name sagt: Ich weiß nicht welche Lock und Fusebits ich setzten muss. Ich möchte keine Flaschen setzten nicht das er dann am ende sich nicht mehr Progrmmieren lässt.
Mein Problem ich möchte so ziemlich alles auf einmal nutzen am ATmega48 d.h. Uart, PWM, AD-Wandler, externer Quarz EEprom RAM und so weiter. Was muss ich wo an und ausschalten damit ich nichts kaputt mache? Gehen überhaupt alle Funktionen gleichzeitig?
Das ganze möchte ich über Bascom machen kann aber auch ein anderes Programm sein.

mfg
Michael

linux_80
22.09.2006, 21:20
Hallo,
LockBits als normaler User nicht anfassen, denn sonst ist der Zug abgefahren ;-)

Ob und wie man die Funktionen eines AVR verwendet, ist nicht von den Fusebits abhängig, zumindest die, die da aufgezählt sind. Das wird alles per Software erledigt, die Du selber schreibst. Die einzige Einschränkung die es noch gibt, ist, das bestimmte Funktionen den gleichen Pin eines AVR verwenden, in diesem Fall kann man immer nur eine Funktion davon verwenden. Deshalb sollte man immer das Datenblatt danebenliegen haben, Belegung ist immer auf der 2. Seite.

Wenns ein externer Quarz sein soll, sollte der AVR schon mit einem solchen verbunden sein, damit es nach dem umstellen der Fuses gleich weitergehen kann.
Im Bascom ist das schön beschrieben, als Klartext, welche Fuses man dafür verwendet. Zusammengehörige Fuses sind auch zusammengefasst, sodaß man sie leichter findet.
Je nach AVR muss/kann man noch das JTAG-Bit umstellen, damit der entsprechende Port frei wird. Gibts aber jetzt beim Mega48 nicht.

Die anderen Fusebits würde ich anfangs nicht anlangen, denn da sperrt man sich nur aus, und kommt evtl. nimmer rein.
Ausprobieren was ein Fusebit macht ist auch keine gute Idee [-X

Michael 123
23.09.2006, 11:26
Ok ich habe gestern noch ein bissel gespielt und festgestellt das der den internen 8mhz quarz an hat ich möchte aber einen externen 4mhz quarz.
naja kann auch der interne sein wie muss ich dann das programm dazu schreiben? momentan für einen 4mhz quarz extern mache ich das so: $crystal = 4000000 und wie bei dem internen? einfach: $crystal = 8000000?

mfg
Michael

linux_80
23.09.2006, 11:44
Mit dem $crystal gibts Du nicht an wie Du es gerne hättest, sondern hier wird dem Compiler mitgeteilt wie schnell der AVR in Wirklichkeit ist damit er die Berechnung für die Timer richtig vornimmt.
Theoretisch kannst du dort angeben was Du willst, mit der Einschränkung, das zB. die Übertragung per UART nicht mehr richtig funktioniert !
An der Einstellung im AVR kann man damit nix ändern.

Michael 123
23.09.2006, 11:49
hallo,

ok angenommen ich lasse den 8mhz internen quarz an dann muss ich doch $crystal = 8000000 inschreiben oder? müsste doch dann rein teoretisch gehen oder?

mfg
Michael

JonnyP
23.09.2006, 12:52
8mhz (8 Milliherz)????????????????

Michael 123
23.09.2006, 13:02
sorry ich meine 8Mhz

mfg
Michael