User:JanosA: Difference between revisions

From ArmadeusWiki
No edit summary
(OneWire moved to main Wiki Tree)
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
== About Me ==
I am IP Network and Datacenter engineer, currently I'm working for an Internet Service Provider in Hungary.
I am IP Network and Datacenter engineer, currently I'm working for an Internet Service Provider in Hungary.


Line 16: Line 17:
* Data logger for Saia Sbus based intelligent power meters.
* Data logger for Saia Sbus based intelligent power meters.


 
== My works comitted to ArmadeuS project ==
== RS485 ==
* [[RS-485]] for APF28/iMX28 mxs-auart and busybox stty patch
Mini HOWTOs for my APF28/iMX28 mxs-auart and busybox stty patches.
* [[OneWire GPIO bus Master]] for APF28DEV
 
* Setup APF28 serial port for RS485 communication:
<pre class=apf>
# stty -F /dev/ttySP0 raw
# stty -F /dev/ttySP0 -echo -echoe -echok
# stty -F /dev/ttySP0 rs485
</pre>
 
* Set extra delays for TXEN/RTS signaling before and after the transmitted packet (in microseconds):
<pre class=apf>
# stty -F /dev/ttySP0 rs485delaybefore 100
# stty -F /dev/ttySP0 rs485delayafter 100
</pre>
 
* To get current RS485 parameters. (If the port device supports the RS485 options you will see the last two lines)
<pre class=apf>
# stty -F /dev/ttySP0
speed 9600 baud; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-brkint -imaxbel
rs485 -rs485rtsonsend -rs485rtsaftersend -rs485rxduringtx
rs485delaybefore = 100; rs485delayafter = 100; rs485delaylastchartx = 1250;
</pre>
Please note:
* You can't set the "rs485delaylastchartx" parameter, it's calculated automatically from the baudrate.
Special notes only for APF28/iMX28 mxs-auart driver:
* All delays are in microseconds.
* The "rs485delaylastchartx" parameter is not used in DMA mode.
* The parameters: "rs485rtsonsend" "rs485rtsaftersend" "rs485rxduringtx" are not used.
 
 
* The RS485 mode can be turned on with ioctl calls from C code, here is the example:
<source lang="C">
#include <stdio.h>
#include <fcntl.h>
#include <linux/ioctl.h>
#include <linux/serial.h>
#include <asm-generic/ioctls.h> /* TIOCGRS485 + TIOCSRS485 ioctl definitions */
 
int main(void) {
        struct serial_rs485 rs485conf;
 
        int fd = open ("/dev/ttySP0", O_RDWR);
        if (fd < 0) {
                printf("Error: Can't open: /dev/ttySP0\n");
        }
 
 
        /* Don't forget to read first the current state of the RS485 options with ioctl.
            If You don't do this, You will destroy the rs485conf.delay_rts_last_char_tx
            parameter which is automatically calculated by the driver when You opens the
            port device. */
        if (ioctl (fd, TIOCGRS485, &rs485conf) < 0) {
                printf("Error: TIOCGRS485 ioctl not supported.\n");
        }
 
        /* Enable RS485 mode: */
        rs485conf.flags |= SER_RS485_ENABLED;
 
        /* Set rts/txen delay before send, if needed: (in microseconds) */
        rs485conf.delay_rts_before_send = 0;
 
        /* Set rts/txen delay after send, if needed: (in microseconds) */
        rs485conf.delay_rts_after_send = 0;
 
        if (ioctl (fd, TIOCSRS485, &rs485conf) < 0) {
                printf("Error: TIOCSRS485 ioctl not supported.\n");
        }
 
        fcntl(fd, F_SETFL, 0);
        int n = write(fd, "ABC\r\n", 5);
        if (n < 0) {
                /* Error handling */
        }
 
        if (close (fd) < 0) {
                printf("Error: Can't close: /dev/ttySP0\n");
        }
}
</source>

Latest revision as of 14:39, 19 May 2013

About Me

I am IP Network and Datacenter engineer, currently I'm working for an Internet Service Provider in Hungary.

My hobby is programming embedded systems and creating my own small electronic boards.

Skills

  • Assembly programming: PIC 8bit family
  • C programming: PIC 8bit / PIC32MX family, Linux
  • Perl, PHP, Javascript, Html programming with MySQL
  • Linux system administration
  • RS-232/485 serial communications: Ascii, Modbus, Saia Sbus, etc.
  • IP networking

My ArmadeuS plans (APF28 based)

  • Creating an universal home automation hardware for my friends, with easy programming in perl or PHP. :)
  • Datacenter temperature monitoring, with RS-485 and OneWire communications.
  • Data logger for Saia Sbus based intelligent power meters.

My works comitted to ArmadeuS project