[De-Nut-Discussion] De-Nut-Discussion Digest, Vol 23, Issue 3

Dominik Schröder dominik.schroeder at bh-informativ.de
Mon Aug 31 10:29:03 CEST 2009


Hallo

Danke für die Antwort. Habe das Häckchen bei Ethernut 4.8.2 (USE HW RS485 on
UART1) gesetzt und neu compiliert. Dann hab ich den Code aus dem RS485
sample aus dem Internet in mein Programm eingefügt:

u_long baud = 9600;
	uint32_t to_485 = 1000;
	uint32_t flow_uart = USART_MF_HALFDUPLEX;
    u_char i;
.
.
.
/*
	 *Initialize UART1 device for RS485
	 */
	 if (NutRegisterDevice(&DEV_UART1, 0, 0)) {
        puts("Failed to register " DEV_UART1_NAME);
    }
    if ((uart = fopen(DEV_UART1_NAME, "r+")) == NULL) {
        puts("Failed to open " DEV_UART1_NAME);
    }
    if (_ioctl(_fileno(uart), UART_SETFLOWCONTROL, &flow_uart)) {
        puts("Failed to set flow control");
    }
    if (_ioctl(_fileno(uart), UART_SETSPEED, &baud)) {
        puts("Failed to set baudrate");
    }
    if (_ioctl(_fileno(uart), UART_SETREADTIMEOUT, &to_485)) {
        puts("Failed to set read timeout");
    }

*uart ist global definiert.

Wenn ich das in compiliere und in meinen Controller lade kommt er bei der
Initialisierung bis zu "SETFLOWCONTROL". Hier wird dann die Warnmeldung "
Failed to set flow control" ausgegeben. Und auf meinen CTS/RTS Leitungen tut
sich nach wie vor nichts (Bin direkt mit dem Oszi drauf)...
Habt ihr noch eine Idee?

Gruß Dominik

-----Ursprüngliche Nachricht-----
Von: de-nut-discussion-bounces at egnite.de
[mailto:de-nut-discussion-bounces at egnite.de] Im Auftrag von
de-nut-discussion-request at egnite.de
Gesendet: Sonntag, 30. August 2009 12:00
An: de-nut-discussion at egnite.de
Betreff: De-Nut-Discussion Digest, Vol 23, Issue 3

Send De-Nut-Discussion mailing list submissions to
	de-nut-discussion at egnite.de

To subscribe or unsubscribe via the World Wide Web, visit
	http://lists.egnite.de/mailman/listinfo/de-nut-discussion
or, via email, send a message with subject or body 'help' to
	de-nut-discussion-request at egnite.de

You can reach the person managing the list at
	de-nut-discussion-owner at egnite.de

When replying, please edit your Subject line so it is more specific
than "Re: Contents of De-Nut-Discussion digest..."


Today's Topics:

   1. Re: RS 485 und Ethernut (Ulrich Prinz)


----------------------------------------------------------------------

Message: 1
Date: Sat, 29 Aug 2009 22:58:23 +0200
From: Ulrich Prinz <uprinz2 at netscape.net>
Subject: Re: [De-Nut-Discussion] RS 485 und Ethernut
To: "Ethernut Anwenderforum (deutsch)" <de-nut-discussion at egnite.de>
Message-ID: <4A99966F.7070304 at netscape.net>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

Hallo!

Der SAM7X hat zwei dedizierte Pins, RTS und CTS f?r DE und /RE eines 
RS485 Tranceivers. Diesen Modus kann man aktivieren, in dem man im 
NutConfig unter Architecture->ARM->USARTx Driver das H?kchen bei USE HW 
RS485 on UART0 setzt. Welcher der beiden Pine RTS/CTS f?r welches der 
beiden Signale zust?ndig ist, steht im Datenblatt.

Es ist, soweit ich das in der K?rze sehen konnte, beim AT91 keine freie 
Port-Wahl vorgesehen, also es kann kein beliebiger Pin via Software f?r 
das DE/RE verwendet werden. Beim AVR ist das so vorhanden, beim AT91 
k?nnte man es nachtr?glich noch einbauen. Aber wozu, wenn es da die 
schnellere Option gibt.

Das Half-Duplex/Full-Duplex kann man per _IOCLT() umschalten.
int uartmode = 1;
_IOCTL(fileno(myuart), UART_SETHDPXMODE, &uartmode);

Normalerweise ist es nicht n?tig, auf HALF-Duplex zu wechseln, wenn man 
die DE/RE Steuerung verwendet, denn da beide Signale gesteuert werden, 
empf?ngt man kein Echo. Wenn Du nur DE verwenden willst, kannst Du auch 
einfach /RE mit auf DE legen. Auch dann ist das Echo weg.

Gru?, Ulrich

Dominik Schr?der wrote:
> Hallo
> 
>  
> 
> Ich betreibe das Betriebssystem Ethernut 4.8.2 gerade auf einem 
> At91SAM7X 256 EK. Ich m?chte eine RS485 Kommunikation zu anderen Modulen 
> aufbauen. Hierzu brauche ich einen Drive Enable (DE) Pin. Dieser muss 
> bei einer ?bertragung High gesetzt werden. Ich wollte das eigentlich mit 
> einem freien IO Pin l?sen. Jetzt kam mit die Idee, das RTS Signal des 
> UASART dazu zu verwenden. Kann mir jemand sagen, wie ich bei der Device 
> Registrierung Die Hardware Flusskontrolle einschalten kann.
> 
>  
> 
> Dominik Schr?der
> 
>  
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> De-Nut-Discussion mailing list
> De-Nut-Discussion at egnite.de
> http://lists.egnite.de/mailman/listinfo/de-nut-discussion


------------------------------

_______________________________________________
De-Nut-Discussion mailing list
De-Nut-Discussion at egnite.de
http://lists.egnite.de/mailman/listinfo/de-nut-discussion


End of De-Nut-Discussion Digest, Vol 23, Issue 3
************************************************




More information about the De-Nut-Discussion mailing list