PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einige Fragen zu ATmega16



Gerko
20.03.2006, 14:38
Hallo Leute

Ich hoffe ich bin hier nicht im Falschen Forum, aber bis jetzt hab ich für so eine "leichte" Frage noch keine Antwort bekommen.

Wie kann man bei einem ATmega16 den externen Takteingang aktivieren?
Ich habe einen ATmega16 und möchte diesen mit einem Quarz von 4MHz betreiben, die Schaltung habe ich schon aufgebaut, aber ich weiß nicht welche Fuses ich setzen muss. Ich verwende übrigens das Programm AVR Studio 4.11

Nun meine zweite Frage:
Ich versuche eine Funkübertragung zwischen PC und Roboter herzustellen, dazu verwende ich das EasyRadio, aber darum geht es jetzt noch nicht, ich will nur wissen was diese Zeile zu bedeuten hat, bzw warum?

ldi temp, (1<<URSEL)|(1<<USBS)|(3<<UCSZ0)
out UCSRC, temp

Ich weiß zwar das es angeblich das Format auf 8Bit / 2Stopbit einstellt, aber da ich nicht verstehe wie man auf diese Zeile kommt kann ich auch nicht sagen ob das richtig ist. Wo ist eigentlich der unterschied zwischen einem und zwei Stopbit, ist das eine sicherere Übertragung wenn man mehr versendet? Wenn das ziemlich egal ist, wie stelle ich mein Format dann auf 8 Bit / 1 Stopbit?

Danke im Voraus, Gerko

CowZ
20.03.2006, 14:48
Also für die Fusebits und weitere Fragen kann ich nur das Tutorial von mikrocontroller.net empfehlen :)

SprinterSB
20.03.2006, 14:52
Aber Obacht, externer Takt (z.B. via Quarz-Oszillaror) ist was anderes als externer Quarz!

CowZ
20.03.2006, 14:54
Verdammt, sry, stimmt, hab ich vergessen :(

Gerko
20.03.2006, 19:24
Im Tuturial von microcontroller.net wird das nicht über AVRStudio gemacht sondern über ein eigenes Programm, das muss doch auch ohne dem gehen oder?

Ich schätze einmal das dieses Silberne kleine Ding ein externer Quarz ist, dann muss ich also die Fuse Ext. Clock; Start-up time 6CK+0ms setzen, was auch imer das CK heißt, oder lieg ich da falsch.

CowZ
20.03.2006, 19:25
DAS TUTORIAL FUNKTIONIERT NICHT FÜR DICH!

Das Tutorial nutzt einen QuarzOSZILLATOR und du einen normalen Quarz. Dafür musst du vermutlich die Fuses anders setzen!

askazo
20.03.2006, 19:31
Ich schätze einmal das dieses Silberne kleine Ding ein externer Quarz ist, dann muss ich also die Fuse Ext. Clock; Start-up time 6CK+0ms setzen, was auch imer das CK heißt, oder lieg ich da falsch.

Wenn das silberne Ding 2 Beinchen hat, musst die Fuse "Ext. Crystal/Resonator, Medium Frequ." setzen.
Die Startup-Time ist nicht so kritisch, da kannst Du ruhig das oberste nehmen.

askazo

Gerko
20.03.2006, 19:32
Kann man das einfach auf gut Glück austesten oder lösen sich dann Teile der Schaltung in Rauch auf?

Außerdem hab ich sofort erkannt das das Tuturial nicht für mich geeignet ist :) aber deswegen habe ich doch versucht anhand der Fuses die verfügbar sind eine für mich denkbar sinnvolle auszuwähelen, also die

Ext. Clock; Start-up time 6CK+0ms

War deine schnelle Reaktion jetzt ein Hinweis darauf das das kompletter nonsens ist, oder wie?

CowZ
20.03.2006, 19:35
Wenn du die Fuses falsch setzt, löst sich zwar nichts in Rauch auf, aber u.U. sperrst du dich aus dem Controller aus. Und dann darfst du den enweder HF-Programmieren (STK 500 etc) oder dir nen neuen kaufen.

Also mit den Fuses immer schön vorsichtig sein ;)

Gerko
20.03.2006, 19:41
Ha, das war etwas posetives ich programmier sowieso alles mit STK 500 :)
Übrigens ich hab jetzt mal ein paar herausgeschrieben die passen könnten, also da währe mal:
- Ext. Clock; Start-up time 6CK+0ms
- Ext. RC-Oszillator 3-8Mhz (den schließ ich hald amal aus)
und dann wirds schwierig, da muss man dann entscheiden ob 4MHz low, medium oder high frequenz sind:
- Ext. Crystal/Resonator Low Freq.
- Ext. Crystal/Resonator Medium Freq.
- Ext. Crystal/Resonator high Freq.

Also das Wort Quarz kommt da nirgends vor, aber da ich hald Oszillatoren ausschließen kann, und nicht weiß ob low, medium oder high, versuch ich mal den Ext. Clock, oder hat wer einen besseren Vorschlag?

mfg Gerko

CowZ
20.03.2006, 19:45
Also, Crystal = Quarz
askazo hat ja schon gesagt: "Wenn das silberne Ding 2 Beinchen hat, musst die Fuse "Ext. Crystal/Resonator, Medium Frequ." setzen."

Das will ich aber nicht bewerten, hab bisher nur mit Oszi gearbeitet, lässt sich aber sicherlich im Datenblatt rausfinden (RTFM ;))

Gerko
20.03.2006, 19:51
Ah, danke diesen beitrag hab ich ganz überlesen, hab wahrscheinlich zur gleichen Zeit geschreiben oder so ;)

Jetzt muss ich nur noch herausfinden ob ich wirklich 8Bit 2Stopbit eingestellt habe, und dann müsste alles funktionieren, JUHU

Gerko

urkel_
21.03.2006, 10:52
Hallo Leute
Nun meine zweite Frage:
Ich versuche eine Funkübertragung zwischen PC und Roboter herzustellen, dazu verwende ich das EasyRadio, aber darum geht es jetzt noch nicht, ich will nur wissen was diese Zeile zu bedeuten hat, bzw warum?

ldi temp, (1<<URSEL)|(1<<USBS)|(3<<UCSZ0)
out UCSRC, temp

Ich weiß zwar das es angeblich das Format auf 8Bit / 2Stopbit einstellt, aber da ich nicht verstehe wie man auf diese Zeile kommt kann ich auch nicht sagen ob das richtig ist. Wo ist eigentlich der unterschied zwischen einem und zwei Stopbit, ist das eine sicherere Übertragung wenn man mehr versendet? Wenn das ziemlich egal ist, wie stelle ich mein Format dann auf 8 Bit / 1 Stopbit?


Schau Dir mal das Datenblatt an da findest Du alles wichtige für diese Frage unter USART
http://www.atmel.com/dyn/products/product_card.asp?part_id=2010

Mit dem Bit USBS im Register UCSRC kann man die Stop Bits einstellen
0 = 1 Stop Bit
1 = 2 Stop Bits

Weitere Infos zu dem Register UCSRC und auch UCSRA, UCSRB findest Du im Datenblatt.

cu

Habe mich wohl ein wenig in den Registern vertan - habs aber jetzt korregiert ;)

Gerko
21.03.2006, 19:02
ok, das hilft mir weiter, und die schreibweise (1<<USBS) bedeutet einfach das USBS auf 1 gesetzt wird, also wenn ich 1 stopbit will dann muss ich (0<<USBS) schreiben oder?

Was hat das eigentlich für Vorteil und Nachteile wenn man 2 oder 1 Stopbit verwendet?

urkel_
22.03.2006, 09:36
Der AVR Assembler erlaubt verschiedene Ausdrücke, darunter gibt es den Ausdruck << der eigentlich ein Linksschieben bedeutet. In diesem Fall kann man es aber auch so ausdrücken wie Du es getan hast - ein Bit setzten.

Vor- Nachteile von einem oder zwei Stop Bits (wird das eigentlich jetzt mit einem p oder 2 p's geschrieben? ;) ). Bei 2 Stop Bits werden (vorausgesetzt 8Nx) 11Bits pro Datenpaket übertragen (1 Startbit + 8 Datenbits + 2 Stop Bits), wohingegen bei 1 Stop Bit nur 10 Bits Übertragen werden und dadurch die Übertragnung etwas schneller ist.
Das Stop Bit legt eine Pause ein, die je nach Hardware benötigt wird und daher manchmal 2 Stop Bits notwendig sind. Kurz gesagt. Falls Deine Übertragung mit einem Stop Bit funktioniert, würde ich auch kein weiteres Stop Bit verwenden.

Gerko
22.03.2006, 11:39
Ok, dann teste ich das mal mit einem Stopbit, vielleicht funktionierts ja ^^