haste denn einen pegelwandler für seriell eingebaut ?
atmel laufen ja auf 5 volt oder weniger.
pc seriell schnittstellen auf +-15volt oder so.
gruss
Hallo kalletronic
Externe Quarz ist besser,interner unterligt größeren schwankungen durch Temperatur.
Falls es geht einen krummen Quarz nehmen zb.3686400 hz
zum anderen hast Du TX u.RX einmal gekreuzt
TX --->RX
RX---->TX
Gruß raggy
haste denn einen pegelwandler für seriell eingebaut ?
atmel laufen ja auf 5 volt oder weniger.
pc seriell schnittstellen auf +-15volt oder so.
gruss
Sind +-12 Volt.Zitat von kolisson
jon
Nice to be back after two years
www.roboterfreak.de
ja, hab nen MAX232 drinne
Hallo
Wenn es eine selbst gebaute Platine ist,hast du die richtigen Elkos drin,Datenblatt des RS232_IC nachsehen.
Zum anderen muß Du ein Null-Modemkabel Nehmen.(TX und RX sind bei dem Kabel gekreuzt)
Gruß raggy
Man braucht nicht unbedingt eien MAX232, um mit einem AVR einen PC zu kontaktieren. Die 5V TTL Signale reichen meist aus, um dem UART im PC zu sagen, das ein HIGH vorhanden ist, un die 0V für ein Low.
Worauf es eher ankommt, ist die Taktfrequenz, und die Geschwindigkeit, mit der diese Daten übertragen werden.
die Serielle Kommunikation ist nicht beiderseitig durch einen Takt geregelt, der dem Anderen Partner mitteilt, das jetzt neue Daten vorliegen, und diese jezt abgefragt werden. Bei der Seriellen Kommunikation mit dem RS232-Protokoll werden 2 Geräte verwendet, welche selbst einen erzeugten Takt nutzen, um zu kommunizieren.
Damit nun die Daten "Syncron" zur anderen gegenstelle übermittelt werden können, müssen beide Partner in der selben geschwindigkeit miteinander kommunizieren.
Damit man dies erreichen kan, braucht man beim AVR einen Takt, der dem der Baud-Rate entspricht.
Wenn man eien 4MHZ oder 8MHz quarz verwendet, dann liegt man nicht genau auf diesem Takt. (PC arbeitet mit z.B. 1000Bits/s, und AVR mit 800Bits/s) Dadurch hat man ein ungleiches verhltniss, und es kann passieren, das einer der beiden einfach Bits verschluckt.
Hier mal eine kleine Rechnung dazu:
Bei einem Takt von 11,059200MHz und einer Baud-Rate von 9600, erhält man 11059200 / 9600 = 18432 Zyklen. Das Heist, alle 18432µS kommt ein neues Bit an.
Nuzt man nun 10.000.000 MHz, dann erhält man alle 1041,66666~ µS ein neues Bit
Da ein µC aber keine Komma-Takte beherscht , ist es verständlich, wenn mal ein paar Bits beid er übertragung verschwinden. Darum sollte man einen Quaz bevorzugen, der in das Baud-Raster fällt.
Möchte man z.B. mit 9600Baud kommunizieren, und einen Quaz verwenden, der bei ca. 4MHz liegt, dann kann man das recht simpel ausrechnen: 4000000 / 9600 = 416,6666~ ... 9600 * 416 = 3993600 -> 3.993.600 Hz wären angebracht, als Takt zu nutzen. Da es jedoch solch einen Quarz nicht geben wird, kann man sich mit einem der Alternativen begrügen, die er reichlich zu kaufen gibt.
Man könnte es auch so ausrechnen: 11059200 bei 9600 Baud. Bei 9600 mit ca. 22MHz wären das 11059200 * 2 = 22118400MHz
=Nachtrag=
In BascomAVR läst sich diese Fehlkonfiguration auch anhand des Status-Berichts einsehen: BascomAVR-Menü -> Edit -> Show Results -> Unter BAUD Error. Dort findet man die Abweichung der Baudrate zum Takt hin in % ... (100% entspricht dabei keiner Abweichung)
JimJim
XUN
hi, danke für die Antworten, dann werd ichs mal mit nem externen quarz versuchen!!
Stimmt die im Programm angegebene Frequenz (4MHz) mit der im internen Oszi eingestellten überein?
Hab ich auch schon mal übersehen, mit dem Resultat, dass 8 MHz geplant waren, die Fusebits aber "vergessen" wurden... Programm lief halt dann nur mit 1/8 der Geschwindigkeit...
Bei manche ATMEL Controllern kann man eine Taktteilung einstellen. Jetzt weiß ich nicht, ob das beim ATMega8 möglich ist. Schau aber trotzdem mal nach, ob du etwas in dieser Art eingestellt hast.
jon
Nice to be back after two years
www.roboterfreak.de
Hi Leute, gestern hab ich das ganze mal mit nem Quarz mit 14,irgendwas versucht. Ich hab die fuses umgestellt auf externen RC Oszillator und dann ging garnix mehr, jetzt kann ich ihn nicht mal mehr programmieren, kommt wieder die typische Could not identifi... Fehlermeldung. Was kann ichn da jetzt tun????????????????????
Lesezeichen