Forum: Mikrocontroller und Digitale Elektronik RS485 PC<->AVR diverse Probleme


von RS485er (Gast)


Lesenswert?

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!

von RS485er (Gast)


Lesenswert?

So, ich habe nochmals rumprobiert, und siehe da: mit einem Pullup nach 
5V geht es schon besser mit allen Adaptern. Und ein MAX485 macht weniger 
Probleme als ein MAX487. LTC485 macht keinen Mucks, trotz gleichem 
Pinout???

Es werden jedoch immernoch Zeichen verschluckt. Kennt sich damit jemand 
aus?

von Weinbauer (Gast)


Lesenswert?

genau deshalb verwend ich in Bascom die RS485-Funktion nicht, hat mich 
auch schon fast verzweifeln lassen ...

Die Umschaltung kommt mitunter zu schnell.

Der nächste Pferdefuß ist, dass beim Senden der Controller 
Warteschleifen dreht bis das letzte Byte raus ist.

TXC-Interrupt nehm ich ... also einfach dem String n Bytearray per 
overlay drüber legen und dann einfach den RS485-Baustein auf senden 
Stellen, erstes Byte in UDR-REgister, bei TXC nen Pointer 
inkrementieren, nächstes Byte in UDR, bei Byte 0 (Stringende) aufhören 
mit senden und Timer starten.
Bei Timerüberlauf (etwa halbe Framelänge) dann 485-Bauzstein auf Empfang 
umschalten und fertig.

von horscht (Gast)


Lesenswert?

Tippe mal auf ein timingproblem von bascom. Hier hatte schonmal einer 
eine bessere irq routine vorgestellt.... Finde gerade nur den fred nicht 
wieder.

Zu deinen anderen problemen... Ausgelutschtes steckbrett mit schlechtem 
kontakt? Hatte ich mal spass mit.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.