Moin,
Ich stricke momentan an einer RS485 Verbindung zwischen PC und
Attiny2313.
Die Beschaltung ist wie z.B. unter
http://avrhelp.mcselec.com/index.html?using_rs485.htm angegeben.
Verwende einen MAX487. Scheint auch OK zu sein, denn:
Verwende ich einen "Expert EX9520" RS232 nach RS485 Umsetzer, läuft die
Kommunikation ziemlich glatt. Gelegentlich verschluckte Bytes schreibe
ich momentan noch dem verwendeten BASCOM zu, stört (noch) nicht so sehr.
Mit Waitms geht es dann, wenn es auch nicht nötig sein sollte.
Bzw. ohne Waitms 50 zwischen Input und Print kommt nur noch Käse
zurück...
Also mit dem Expert Wandler: Ich sende (ASCII) 1<CR> und bekomme die
Antwort EINS, bei 2<CR> ZWEI, ansonsten ERROR.
ABER: Verwende ich bei ansonsten gleicher Hard- und Software einen
meiner zwei weiteren FTDI USB->RS485 Umsetzer, bekomme ich nur noch
ERROR zurück.
Auch andere Versuche hatten da wenig erfolg, wobei das Senden vom AVR
zum PC meist klappt, nur andersrum nicht.
Hier der Testcode:
1 | $regfile = "attiny2313.dat"
|
2 | $crystal = 8000000
|
3 | $hwstack = 32
|
4 | $swstack = 32
|
5 | $framesize = 32
|
6 | $baud = 9600
|
7 |
|
8 | Config Print = Porta.1 , Mode = Set
|
9 | Rs485dir Alias Porta.1
|
10 | Config Rs485dir = Output
|
11 | Rs485dir = 0 ' go to receive mode
|
12 |
|
13 | Dim X As Byte
|
14 | Print "Hallo..."
|
15 |
|
16 | Do
|
17 | Input X
|
18 | Waitms 50
|
19 | Select Case X
|
20 | Case 1:
|
21 | Print "EINS" ; Chr(13)
|
22 | Case 2:
|
23 | Print "ZWEI" ; Chr(13)
|
24 | Case Else
|
25 | Print "ERROR" ; Chr(13)
|
26 | End Select
|
27 | Loop
|
Auch das Vorspannen mit 390Ohm nach Vcc und GND brachte keinen Erfolg.
Ebensowenig das Verbinden der GND Leitungen.
120Ohm Widerstände sind angeschlossen.
Leitungslänge 20-200cm, je nach Adapter.
Auffällig ist auch noch, dass anscheinen das letzte Byte abgeschnitten
wird, daher sende ich das Chr(13) nochmal vorab....
Hat Jemand einen Tip, was da los sein könnte??
Danke!