unsigned char ds_present(){ //ds_pin_get(); // give the device time to get back to the 'rest' state ds_pin_set( 1 ); delay( 2000 ); // test for stuck-at-0 if( ! ds_pin_get() ){ uart_put_string("\ntest stuck at 0"); return 0; } // request a presence pulse ds_pin_pulse( 1000 ); // test for the presence pulse delay( 30 ); if( ds_pin_get() ){ uart_put_string("\npresent pulse"); return 0; } // test whether the presence pulse ends delay( 1000 ); if( ! ds_pin_get() ){ uart_put_string("\npresence pulse doesn't end."); return 0; } // all tests succeeded return 1; }
void ds1990_id_print(){ int i, d; ds_send_byte( 0x33 ); for( i = 0; i < 8; i++ ){ d = ds_receive_byte(); uart_put_int_hexadecimal( d, 2 ); uart_put_string( " " ); } uart_put_string( "\n" ); }
int main( void ){ timer_init(); uart_init(); uart_put_string( "DS1990 reader\n" ); for(;;){ delay( 500 * 1000 ); if( ds_present() ){ uart_put_string( "***\n" ); ds1990_id_print(); } else { uart_put_string( "-\n" ); } } return 0; }
// Uebersetzung Schrittmotorkarte void switch_Stepper (char * str_rx) { const char* pOptions[] = { // Array mit bekannten Befehlen "#", // 0 - Stepper Karte hat Befehl erkannt "E", // 1 - Stepper Karte meldet Error "!CLS", // 2 - Clear Screen (Debugging) "Test", // 3 - Test (Debugging) 0 }; switch (FindStringInArray(str_rx, pOptions, 1)) { // String gegen bekannte Antworten pruefen case 0: // 0 - Stepper Karte hat Befehl erkannt lcd_puts("Erfolgreich\n"); break; case 1: // 1 - Stepper Karte meldet Error lcd_puts("Error\n"); uart_put_string("1\r\n", D_RapidForm); break; case 2: // 2 - Clear Screen (Debugging) lcd_clrscr(); break; case 3: // 3 - Test (Debugging) lcd_puts("Test bestanden\n"); break; default: ms_spin(10); } }
void uart_put_hex(int val) { int i; for (i = 7; i >= 0; --i) { char c = (0xF & (val >> (i * 4))); uart_put_char(0, c + (c < 10 ? '0' : ('A' - 10))); } uart_put_string("\n\r"); }
// Funktion zum senden der Menuepunkte ueber die serielle Schnittstelle void menu_puts (void *arg, char *name) { // Menu/Sende Funktion uart_put_string(arg, D_Stepper); // Uebergebenen String an Stepper senden // Befehl auf Display ausgeben lcd_clrscr(); lcd_puts("Sent: "); lcd_puts(arg); lcd_puts("\n"); ms_spin(100); //if ((UCSR1A & (1 << RXC1))) uart_rx(D_Stepper); // Antwort des Stepper empfangen ms_spin(1000); // Antwort noch eine weile Anzeigen }
int main() { uart_init(); timer_init(); config_SSP(); unsigned char theColors[(NUMBER_OF_LEDS*3)] = {0}; convert_full_ledstrip(theColors); uart_put_string("\nLPC1114"); while(1){ receive_GRB_value(); } return 0; }
// // syscall entry point // long int syscall(unsigned long int command,...){ int ret; va_list ap; ret = 0; va_start(ap,command); switch (command) { // SYS case SYS_INIT: { tick_init(); // raw-handler int_init(); // raw-handler syscall(SYS_TIMER_INIT); syscall(SYS_DMA_INIT); syscall(SYS_VRAM_INIT); syscall(SYS_SCREEN_INIT); syscall(SYS_UART_INIT); ret = 0; } break; // TIMER case SYS_TIMER_INIT: { timer_init(&timer); ret = 0; } break; case SYS_TIMER_GET_COUNT: { ret = timer_get_count(&timer); } break; // DMA case SYS_DMA_INIT: { unsigned long int base; unsigned long int irq; base = va_arg(ap,unsigned long int); irq = va_arg(ap,unsigned long int); dma.ch = dma_channel; dma.ch_size = DMA_CH_SIZE; dma.ch[0].buf = dma_buffer_ch0; dma.ch[0].buf_size = DMA_BUF_SIZE; dma_init(&dma,DMA_BASE,DMA_IRQ); ret = 0; } break; case SYS_DMA_ADD: { unsigned long int ch; void *src; void *dst; unsigned long int size; ch = va_arg(ap,unsigned long int); src = va_arg(ap,void *); dst = va_arg(ap,void *); size = va_arg(ap,unsigned long int); dma_add(&dma,ch,src,dst,size); ret = 0; } break; case SYS_DMA_ADD_FULL: { unsigned long int ch; ch = va_arg(ap,unsigned long int); ret = (long int)dma_add_full(&dma,ch); } break; case SYS_DMA_GET_HANDLE: { ret = (long int)&dma; } break; case SYS_DMA_GET_CH: { ret = 0; } break; // VRAM case SYS_VRAM_INIT: { vram_init(&vram,&dma,0); ret = 0; } break; case SYS_VRAM_CLEAR: { vram_clear(&vram); ret = 0; } break; case SYS_VRAM_IMAGE_PASTE: { IMAGE *img; unsigned long int x; unsigned long int y; img = va_arg(ap,IMAGE *); x = va_arg(ap,unsigned long int); y = va_arg(ap,unsigned long int); vram_image_paste(&vram,img,x,y); ret = 0; } break; case SYS_VRAM_IMAGE_PASTE_FILTER: { IMAGE *img; unsigned long int x; unsigned long int y; img = va_arg(ap,IMAGE *); x = va_arg(ap,unsigned long int); y = va_arg(ap,unsigned long int); vram_image_paste_filter(&vram,img,x,y); ret = 0; } break; case SYS_VRAM_IMAGE_CLEAR: { IMAGE *img; unsigned long int x; unsigned long int y; img = va_arg(ap,IMAGE *); x = va_arg(ap,unsigned long int); y = va_arg(ap,unsigned long int); vram_image_clear(&vram,img,x,y); ret = 0; } break; // SCREEN case SYS_SCREEN_INIT: { screen_init(&scr,&vram); ret = 0; } break; case SYS_SCREEN_CLEAR: { screen_clear(&scr); ret = 0; } break; case SYS_SCREEN_LOCATE: { unsigned long int x; unsigned long int y; x = va_arg(ap,unsigned long int); y = va_arg(ap,unsigned long int); screen_locate(&scr,x,y); ret = 0; } break; case SYS_SCREEN_SCROLL: { unsigned long int height; height = va_arg(ap,unsigned long int); screen_scroll(&scr,height); ret = 0; } break; case SYS_SCREEN_PUT_STRING: { unsigned char *s; s = va_arg(ap,unsigned char *); screen_put_string(&scr,s); ret = 0; } break; case SYS_SCREEN_PUT_CHAR: { unsigned char c; c = va_arg(ap,unsigned int); // usigned char screen_put_char(&scr,c); ret = 0; } break; case SYS_SCREEN_PRINT: { unsigned char c; c = va_arg(ap,unsigned int); // unsigned char screen_print(&scr,c); ret = 0; } break; //case SYS_SCREEN_IMAGE: { // IMAGE *image; // image = va_arg(ap,IMAGE *); // screen_image(&scr,image); // ret = 0; //} break; case SYS_SCREEN_SET_LOCATE_X: { unsigned long int x; x = va_arg(ap,unsigned long int); screen_set_locate_x(&scr,x); ret = 0; } break; case SYS_SCREEN_SET_LOCATE_Y: { unsigned long int y; y = va_arg(ap,unsigned long int); screen_set_locate_y(&scr,y); ret = 0; } break; case SYS_SCREEN_GET_LOCATE_X: { ret = screen_get_locate_x(&scr); } break; case SYS_SCREEN_GET_LOCATE_Y: { ret = screen_get_locate_y(&scr); } break; case SYS_SCREEN_SET_COLOR_FG: { unsigned long int r,g,b; r = va_arg(ap,unsigned long int); g = va_arg(ap,unsigned long int); b = va_arg(ap,unsigned long int); screen_set_color_fg(&scr,r,g,b); ret = 0; } break; case SYS_SCREEN_SET_COLOR_BG: { unsigned long int r,g,b; r = va_arg(ap,unsigned long int); g = va_arg(ap,unsigned long int); b = va_arg(ap,unsigned long int); screen_set_color_bg(&scr,r,g,b); ret = 0; } break; // UART case SYS_UART_INIT: { unsigned long int base; unsigned long int irq; base = va_arg(ap,unsigned long int); irq = va_arg(ap,unsigned long int); uart.tx.buf = uart_buffer_tx; uart.tx.buf_size = UART_TX_BUF_SIZE; uart.rx.buf = uart_buffer_rx; uart.rx.buf_size = UART_RX_BUF_SIZE; uart_init(&uart,UART_BASE,UART_IRQ); ret = 0; } break; case SYS_UART_GET: { ret = (long int)uart_get(&uart); } break; case SYS_UART_GET_EXIST: { ret = (long int)uart_get_exist(&uart); } break; case SYS_UART_GET_CLEAR: { uart_get_clear(&uart); ret = 0; } break; case SYS_UART_PUT: { unsigned int data; data = va_arg(ap,unsigned int); uart_put(&uart,(unsigned char)data); ret = 0; } break; case SYS_UART_PUT_FULL: { ret = uart_put_full(&uart); } break; case SYS_UART_PUT_CLEAR: { uart_put_clear(&uart); ret = 0; } break; case SYS_UART_PUT_STRING: { unsigned char *string; string = va_arg(ap,unsigned char *); uart_put_string(&uart,string); ret = 0; } break; case SYS_UART_IS_CTS: { ret = uart_is_cts(&uart); } break; case SYS_UART_IS_DSR: { ret = uart_is_dsr(&uart); } break; case SYS_UART_IS_RI: { ret = uart_is_ri(&uart); } break; case SYS_UART_IS_DCD: { ret = uart_is_dcd(&uart); } break; case SYS_UART_DTR: { unsigned long int data; data = va_arg(ap,unsigned long int); uart_dtr(&uart,data); ret = 0; } break; case SYS_UART_RTS: { unsigned long int data; data = va_arg(ap,unsigned long int); uart_rts(&uart,data); ret = 0; } break; } va_end(ap); return ret; }