PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Attiny2313 Senden über RS232 mit Bascom



nose
11.10.2006, 23:41
Hallo zusammen,
ich möchte einen Attiny2313 mit Bascom programmieren und Sachen über RS232 an einen PC senden. Den Controller zu programmieren und zu machen klappt alles wunderbar nur kommt nichts bei meinem PC an.
Als RS232 Pegelwandler benutze ich den MAX232CPE, den ich exakt nach dem Schaltplan von der RN-Control aufgebaut habe. An dem liegt es auch defintiv nicht, da ich ihn mit einem anderen Microcontroller getestet habe und der ganze Aufbau dort wunderbar funktionierte. Ansonsten hab ich am Attiny nichts groß angeschlossen. Läuft noch mit internem Takt von einem Mhz und es ist nur eine LED dran zum überprüfen ob das Programm läuft.
Mein Testprogramm sieht wiefolgt aus:


$regfile = "attiny2313.dat"
$crystal = 1000000
$baud = 9600

Config Portd = Output

Do

Portd.6 = 0
Waitms 100
Portd.6 = 1
Waitms 100
Print "test"

Loop

Kann es sein das man das Senden über RS232 beim Attiny2313 erst noch irgendwie enablen muss? Also irgendwelche Fusebits setzen muss oder im Programm erst noch was initialisieren muss?
Im Datenblatt steht dazu zwar was aber leider sind die Codebeispiele zur Initialisierung nur in C und in Assembler angegeben, was mir leider nicht viel weiterhilft, da ich damit noch nie etwas gemacht habe.

Vielen Dank schon mal und viele Grüße
Daniel

linux_80
12.10.2006, 00:52
Hallo,

gern genommen wird der Fehler mit den vertauschten Leitungen RX <-> TX

Was auch sein könnte, der eingebaute Taktgeber soll ja nicht so sehr genau sein, und die Geschwindigkeit hat keine 9600.
Und was dazu kommt, um die 9600 baud zu bekommen bei 1MHz gibt es eine Abweichung von -7% laut DB.
Probier es mal mit 4800, da ist die Abweichung deutlich geringer, dann kannst Du den Fehler schon etwas eingrenzen.

Vitis
12.10.2006, 08:37
Was auch ne Stolperfalle ist:
Der Tiny2313 hat nen Clockdivider eingebaut, der den
Takt durch 8 teilt. Ein-Aus-schalten geht per Fuse,
schau mal ob der enabled ist. Wenn ja, dann disablen.

SprinterSB
12.10.2006, 08:57
Mit dem U2X-Flag kannst du die Baudrate verdoppeln. Dadurch bekommst du kleinnere Feler und liegst auch bei 1MHz und 9600 Baud in der Toleranz von 0.2%.

http://people.freenet.de/gjl/helferlein/avr-uart-rechner.html

Picht
12.10.2006, 14:47
Hallo zusammen,
ich hab mein ersten Attiny ohne Fusebits zu setzen angeschlossen.
Da kam aber wenigstens "Müll" auf den Terminalprogramm.
Dann ist mir eingefallen:Da war noch was?.Also auf externen Quarz
umschalten.
Wenn gar nichts kommt, ist das schon komisch.
Ich würde heute immer die krummen Quarze nehmen.(Nach Baudraten
Rechner)
Sprinter SB :Wie geht das mit den U2X-Flag.Was muss ich da tun?

nose
12.10.2006, 15:30
Vielen Dank für die schnellen Antworten. Also ich habs mal probiert mit 4800 Baud aber da kam immer noch nichts an.
Das Fusbit vom Clockdivider war enabled aber das disablen hat auch nichts gebracht. Aber muss ich dann 8 Mhz als Taktfrequenz einstellen wenn das disabled ist?

Aber ist doch schon irgendwie komisch wie Picht schon gesagt hat, dass da gar nichts kommt. Meint ihr es wär mal ein Versuch wert ein Testprogramm in C zu probieren? Dann könnte man mal mit den Einstellungsmöglichkeiten aus dem Datenblatt rumprobieren.

Gruß
Daniel

Picht
12.10.2006, 15:51
Hallo,
Dein Programm läuft bei mir .Die LED blinkt und das Terminalprogramm
sagt laufend "Hallo" zu mir.
Ich benutze Quarz :9216000 Hz
FuseBits Programmet: CKAUT ,SUTO
Versuch Dein Glück

SprinterSB
12.10.2006, 16:33
Wie geht das mit den U2X-Flag.Was muss ich da tun?
In UCSRA einfach U2X=1 setzen.

CowZ
12.10.2006, 16:45
Hi, dass gar nichts kommt, ist ganz normal. War bei mir zumindest genauso, bis ich die Baudrate richtig eingestellt hatte.

Das U2X ist ein Bit in einem der Statusregister. Weiteres steht unter entsprechendem Punkt im Datenblatt :)
(edit: ups... länger nicht refreshed gehabt... sry ;))

Gruß, CowZ