static int kgdb_uart_getchar(void) { int lsr; int c = -1; while (c == -1) { lsr = UART_IN(UART_LSR); if (lsr & UART_LSR_DR) c = UART_IN(UART_RX); if ((lsr & UART_LSR_RXCERR)) c = -1; } return c; }
//=============================================== //=============================================== //=============================================== //=============================================== void main(void) { t0_init(); port_init(); TIMSK=0x02; #asm("sei") UCR=0xD8; UBRR=0x33; while (1) { if(bRXIN) { bRXIN=0; UART_IN(); } if(b100Hz) { b100Hz=0; } if(b10Hz) { b10Hz=0; but_an(); } if(b5Hz) { b5Hz=0; ind_hndl(); // cnt; //OUT(3,4,5,6,0,0,0); } if(b1Hz) { b1Hz=0; } #asm("wdr") } }
//=============================================== //=============================================== //=============================================== //=============================================== void main(void) { t0_init(); ei(); PEIE=1; di(); ei(); TRISB=0x00; PORTB=0x00; PORTC|=(1<<led_ERR); sci_init(); while (1) { if(bRXIN) { bRXIN=0; UART_IN(); } if(bit_100Hz) { bit_100Hz=0; in_read(); step_contr(); mdvr_drv(); but_drv(); but_an(); } if(bit_10Hz) { bit_10Hz=0; // out_out(); led_out(); err_drv(); prog_drv(); // if(prog==p1) OUT(3,CMND,eeprom_read(DELAY1),eeprom_read(DELAY2)/*3,3*/,0,0,0); // else if(prog==p2) OUT(3,CMND,eeprom_read(DELAY3),eeprom_read(DELAY4),0,0,0); if(prog==p3) { if(!sub_ind)adress=DELAY1; else adress=DELAY2; } else if(prog==p4) { if(!sub_ind)adress=DELAY3; else adress=DELAY4; } else if(prog==p1) { if(!sub_ind)adress=DELAY5; else adress=DELAY6; } else if(prog==p2) { if(!sub_ind)adress=DELAY7; else adress=DELAY8; } OUT(3,CMND,/*prog*/eeprom_read(adress),sub_ind+1,0,0,0); } if(bit_1Hz) { bit_1Hz=0; } } }
//=============================================== //=============================================== //=============================================== //=============================================== void main(void) { t0_init(); ei(); PEIE=1; di(); ei(); TRISB=0x00; PORTB=0x00; PORTC|=(1<<led_ERR); sci_init(); while (1) { if(bRXIN) { bRXIN=0; UART_IN(); } if(bit_100Hz) { bit_100Hz=0; in_read(); step_contr(); mdvr_drv(); but_drv(); but_an(); } if(bit_10Hz) { bit_10Hz=0; // out_out(); led_out(); err_drv(); prog_drv(); if(prog==p1) OUT(3,CMND,eeprom_read(DELAY1),eeprom_read(DELAY2),0,0,0); else if(prog==p1) OUT(3,CMND,eeprom_read(DELAY3),eeprom_read(DELAY4),0,0,0); } if(bit_1Hz) { bit_1Hz=0; } } }
/* * Initialize UART to configured/requested values. * (But we don't interrupts yet, or interact w/serial.c) */ static int kgdb_uart_setup(void) { int port; int lcr = 0; int bdiv = 0; if (kgdb_portnum >= UART_NPORTS) { KGDB_PRINTK("uart port %d invalid.\n", kgdb_portnum); return -1; } kgdb_uart_port = &uart_ports[kgdb_portnum]; /* Init sequence from gdb_hook_interrupt */ UART_IN(UART_RX); UART_OUT(UART_IER, 0); UART_IN(UART_RX); /* Serial driver comments say */ UART_IN(UART_IIR); /* this clears interrupt regs */ UART_IN(UART_MSR); /* Figure basic LCR values */ switch (kgdb_bits) { case '7': lcr |= UART_LCR_WLEN7; break; default: case '8': lcr |= UART_LCR_WLEN8; break; } switch (kgdb_parity) { case 'O': lcr |= UART_LCR_PARITY; break; case 'E': lcr |= (UART_LCR_PARITY | UART_LCR_EPAR); break; default: break; } /* Figure the baud rate divisor */ bdiv = (SB_BASE/kgdb_baud); /* Set the baud rate and LCR values */ UART_OUT(UART_LCR, (lcr | UART_LCR_DLAB)); UART_OUT(UART_DLL, (bdiv & 0xff)); UART_OUT(UART_DLM, ((bdiv >> 8) & 0xff)); UART_OUT(UART_LCR, lcr); /* Set the MCR */ UART_OUT(UART_MCR, SB_MCR); /* Turn off FIFOs for now */ UART_OUT(UART_FCR, 0); /* Setup complete: initialize function pointers */ kgdb_getchar = kgdb_uart_getchar; kgdb_putchar = kgdb_uart_putchar; return 0; }
static void kgdb_uart_putchar(int c) { while ((UART_IN(UART_LSR) & UART_LSR_THRE) == 0) ; UART_OUT(UART_TX, c); }