SHARE
TWEET

Untitled




Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
- PySerial and microcontroller
- putsU1("string");
- // print a string
- int putsU1(char *s) {
- while(*s)
- putU1(*s++);
- }
- // print a character
- int putU1(int c) {
- while (_UTXBF);
- U1TXREG = c;
- return c;
- }
- In [13]: ser = serial.Serial('/dev/ttyACM0', 9600, bytesize=7, xonxoff=0)
- In [14]: while True:
- print(struct.unpack('s', ser.read()))
- ....:
- ('x7f',)
- ('c',)
- ('x11',)
- ('t',)
- ('e',)
- ('y',)
- ('=',)
- ('x7f',)
- getsnU1(s, BUF_SIZE);
- char *getsnU1(char *s, int len) {
- char *p = s;
- int cc = 0;
- do {
- *s = getU1();
- putU1(*s);
- if ((*s == 0x8) && (s > p)) {
- putU1(' ');
- putU1(0x8);
- len++;
- s--;
- continue;
- }
- if (*s == 'n')
- continue;
- if (*s == 'r')
- break;
- s++;
- len--;
- } while (len > 1);
- *s = ' ';
- return p;
- }
- #define FOSC 8000000
- #define FCY (FOSC/2)
- #define BAUD 9600
- #define U1BRGValue (((FCY/BAUD)/16)-1)
- void initUART1(void) {
- /* general UART config */
- RPINR18bits.U1RXR = U1RXPIN; // set RP5 as UART1 RX
- _RP6R = 0b00011; // set RP6 as UART Tx pin
- U1RXPINTRIS = 1; // set RP5 (RB5) as input
- U1MODEbits.PDSEL = DATAPARITY; // set data bits and parity
- U1MODEbits.STSEL = STOPBITS; // set stop bits
- U1MODEbits.ABAUD = 0; // auto-baud disabled
- U1MODEbits.BRGH = 0; // low speed baud rate
- U1BRG = U1BRGValue; // set baud value
- /* enable interrupt on error */
- IEC4bits.U1EIE = 1; // enable UART1 error interrupt
- IPC16bits.U1EIP = 6; // set interrupt priority to 6
- /* enable RX buffer interrupt */
- IEC0bits.U1RXIE = 0; // enable UART1 RX interrupt
- U1STAbits.URXISEL = 0b00; // interrupt flag is set when buffer is 3/4 full
- IPC2bits.U1RXIP = 6; // set interrupt priority to 6
- /* enable TX interrupt */
- IEC0bits.U1TXIE = 0;
- /* enable UART1 module */
- U1MODEbits.UEN = 0b00;
- U1MODEbits.UARTEN = 1;
- _UTXEN = 1; // enable UART Tx
- def write(s):
- for c in s:
- ser.write(c)
- time.sleep(0.001) # often not required
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy.