本文整理汇总了C++中serial_init函数的典型用法代码示例。如果您正苦于以下问题:C++ serial_init函数的具体用法?C++ serial_init怎么用?C++ serial_init使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了serial_init函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: machine_specific_init
/* C128-specific initialization. */
int machine_specific_init(void)
{
int delay;
c128_log = log_open("C128");
if (mem_load() < 0) {
return -1;
}
event_init();
if (z80mem_load() < 0) {
return -1;
}
/* Setup trap handling. */
traps_init();
/* Initialize serial traps. */
if (serial_init(c128_serial_traps) < 0) {
return -1;
}
serial_trap_init(0xa4);
serial_iec_bus_init();
if (!video_disabled_mode) {
joystick_init();
}
gfxoutput_init();
/* initialize RS232 handler */
rs232drv_init();
c64_rsuser_init();
/* initialize print devices */
printer_init();
/* Initialize the tape emulation. */
machine_tape_init_c128();
/* Initialize the datasette emulation. */
datasette_init();
/* Fire up the hardware-level drive emulation. */
drive_init();
disk_image_init();
/* Initialize autostart. FIXME: at least 0xa26 is only for 40 cols */
resources_get_int("AutostartDelay", &delay);
if (delay == 0) {
delay = 3; /* default */
}
autostart_init((CLOCK)(delay * C128_PAL_RFSH_PER_SEC * C128_PAL_CYCLES_PER_RFSH), 1, 0xa27, 0xe0, 0xec, 0xee);
#ifdef USE_BEOS_UI
/* Pre-init C128-specific parts of the menus before vdc_init() and
vicii_init() create canvas windows with menubars at the top. This
could also be used by other ports, e.g. GTK+... */
c128ui_init_early();
#endif
if (vdc_init() == NULL) {
return -1;
}
if (vicii_init(VICII_EXTENDED) == NULL) {
return -1;
}
cia1_init(machine_context.cia1);
cia2_init(machine_context.cia2);
#ifndef COMMON_KBD
/* Initialize the keyboard. */
if (c128_kbd_init() < 0) {
return -1;
}
#endif
c64keyboard_init();
c128_monitor_init();
/* Initialize vsync and register our hook function. */
vsync_init(machine_vsync_hook);
vsync_set_machine_parameter(machine_timing.rfsh_per_sec, machine_timing.cycles_per_sec);
/* Initialize native sound chip */
sid_sound_chip_init();
/* Initialize cartridge based sound chips */
cartridge_sound_chip_init();
drive_sound_init();
video_sound_init();
//.........这里部分代码省略.........
示例2: main
int main(void)
{
// Initialize system upon power-up.
serial_init(); // Setup serial baud rate and interrupts
settings_init(); // Load Grbl settings from EEPROM
stepper_init(); // Configure stepper pins and interrupt timers
system_init(); // Configure pinout pins and pin-change interrupt
memset(sys_position,0,sizeof(sys_position)); // Clear machine position.
sei(); // Enable interrupts
// Initialize system state.
#ifdef FORCE_INITIALIZATION_ALARM
// Force Grbl into an ALARM state upon a power-cycle or hard reset.
sys.state = STATE_ALARM;
#else
sys.state = STATE_IDLE;
#endif
// Check for power-up and set system alarm if homing is enabled to force homing cycle
// by setting Grbl's alarm state. Alarm locks out all g-code commands, including the
// startup scripts, but allows access to settings and internal commands. Only a homing
// cycle '$H' or kill alarm locks '$X' will disable the alarm.
// NOTE: The startup script will run after successful completion of the homing cycle, but
// not after disabling the alarm locks. Prevents motion startup blocks from crashing into
// things uncontrollably. Very bad.
#ifdef HOMING_INIT_LOCK
if (bit_istrue(settings.flags,BITFLAG_HOMING_ENABLE)) { sys.state = STATE_ALARM; }
#endif
// Grbl initialization loop upon power-up or a system abort. For the latter, all processes
// will return to this loop to be cleanly re-initialized.
for(;;) {
// Reset system variables.
uint8_t prior_state = sys.state;
memset(&sys, 0, sizeof(system_t)); // Clear system struct variable.
sys.state = prior_state;
sys.f_override = DEFAULT_FEED_OVERRIDE; // Set to 100%
sys.r_override = DEFAULT_RAPID_OVERRIDE; // Set to 100%
sys.spindle_speed_ovr = DEFAULT_SPINDLE_SPEED_OVERRIDE; // Set to 100%
memset(sys_probe_position,0,sizeof(sys_probe_position)); // Clear probe position.
sys_probe_state = 0;
sys_rt_exec_state = 0;
sys_rt_exec_alarm = 0;
sys_rt_exec_motion_override = 0;
sys_rt_exec_accessory_override = 0;
// Reset Grbl primary systems.
serial_reset_read_buffer(); // Clear serial read buffer
gc_init(); // Set g-code parser to default state
spindle_init();
coolant_init();
limits_init();
probe_init();
plan_reset(); // Clear block buffer and planner variables
st_reset(); // Clear stepper subsystem variables.
// Sync cleared gcode and planner positions to current system position.
plan_sync_position();
gc_sync_position();
// Print welcome message. Indicates an initialization has occured at power-up or with a reset.
report_init_message();
// Start Grbl main loop. Processes program inputs and executes them.
protocol_main_loop();
}
return 0; /* Never reached */
}
示例3: hardware_init
static void
hardware_init(void)
{
__pdata uint16_t i;
// Disable the watchdog timer
PCA0MD &= ~0x40;
// Select the internal oscillator, prescale by 1
FLSCL = 0x40;
OSCICN = 0x8F;
CLKSEL = 0x00;
// Configure the VDD brown out detector
VDM0CN = 0x80;
for (i = 0; i < 350; i++); // Wait 100us for initialization
RSTSRC = 0x06; // enable brown out and missing clock reset sources
#ifdef _BOARD_RFD900A // Redefine port skips to override bootloader defs
P0SKIP = 0xCF; // P0 UART avail on XBAR
P1SKIP = 0xF8; // P1 SPI1, CEX0 avail on XBAR
P2SKIP = 0x01; // P2 CEX3 avail on XBAR, rest GPIO
#endif
// Configure crossbar for UART
P0MDOUT = 0x10; // UART Tx push-pull
SFRPAGE = CONFIG_PAGE;
P0DRV = 0x10; // UART TX
SFRPAGE = LEGACY_PAGE;
XBR0 = 0x01; // UART enable
// SPI1
#ifdef _BOARD_RFD900A
XBR1 |= 0x44; // enable SPI in 3-wire mode
P1MDOUT |= 0xF5; // SCK1, MOSI1, MISO1 push-pull
P2MDOUT |= 0xFF; // SCK1, MOSI1, MISO1 push-pull
#else
XBR1 |= 0x40; // enable SPI in 3-wire mode
P1MDOUT |= 0xF5; // SCK1, MOSI1, MISO1 push-pull
#endif
SFRPAGE = CONFIG_PAGE;
P1DRV |= 0xF5; // SPI signals use high-current mode, LEDs and PAEN High current drive
P2DRV |= 0xFF;
SFRPAGE = LEGACY_PAGE;
SPI1CFG = 0x40; // master mode
SPI1CN = 0x00; // 3 wire master mode
SPI1CKR = 0x00; // Initialise SPI prescaler to divide-by-2 (12.25MHz, technically out of spec)
SPI1CN |= 0x01; // enable SPI
NSS1 = 1; // set NSS high
// Clear the radio interrupt state
IE0 = 0;
// initialise timers
timer_init();
// UART - set the configured speed
serial_init(param_get(PARAM_SERIAL_SPEED));
// set all interrupts to the same priority level
IP = 0;
// global interrupt enable
EA = 1;
// Turn on the 'radio running' LED and turn off the bootloader LED
LED_RADIO = LED_ON;
LED_BOOTLOADER = LED_OFF;
// ADC system initialise for temp sensor
AD0EN = 1; // Enable ADC0
ADC0CF = 0xF9; // Set amp0gn=1 (1:1)
ADC0AC = 0x00;
ADC0MX = 0x1B; // Set ADC0MX to temp sensor
REF0CN = 0x07; // Define reference and enable temp sensor
#ifdef _BOARD_RFD900A
// PCA0, CEX0 setup and enable.
PCA0MD = 0x88;
PCA0PWM = 0x00;
PCA0CPH3 = 0x80;
PCA0CPM3 = 0x42;
PCA0CN = 0x40;
#endif
XBR2 = 0x40; // Crossbar (GPIO) enable
}
示例4: board_early_init_f
int board_early_init_f (void)
{
int index, len, i;
int status;
#ifdef FPGA_DEBUG
/* set up serial port with default baudrate */
(void) get_clocks ();
gd->baudrate = CONFIG_BAUDRATE;
serial_init ();
console_init_f ();
#endif
/*
* Boot onboard FPGA
*/
status = fpga_boot ((unsigned char *) fpgadata, sizeof (fpgadata));
if (status != 0) {
/* booting FPGA failed */
#ifndef FPGA_DEBUG
/* set up serial port with default baudrate */
(void) get_clocks ();
gd->baudrate = CONFIG_BAUDRATE;
serial_init ();
console_init_f ();
#endif
printf ("\nFPGA: Booting failed ");
switch (status) {
case ERROR_FPGA_PRG_INIT_LOW:
printf ("(Timeout: INIT not low after asserting PROGRAM*)\n ");
break;
case ERROR_FPGA_PRG_INIT_HIGH:
printf ("(Timeout: INIT not high after deasserting PROGRAM*)\n ");
break;
case ERROR_FPGA_PRG_DONE:
printf ("(Timeout: DONE not high after programming FPGA)\n ");
break;
}
/* display infos on fpgaimage */
index = 15;
for (i = 0; i < 4; i++) {
len = fpgadata[index];
printf ("FPGA: %s\n", &(fpgadata[index + 1]));
index += len + 3;
}
putc ('\n');
/* delayed reboot */
for (i = 20; i > 0; i--) {
printf ("Rebooting in %2d seconds \r", i);
for (index = 0; index < 1000; index++)
udelay (1000);
}
putc ('\n');
do_reset (NULL, 0, 0, NULL);
}
/*
* IRQ 0-15 405GP internally generated; active high; level sensitive
* IRQ 16 405GP internally generated; active low; level sensitive
* IRQ 17-24 RESERVED
* IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
* IRQ 26 (EXT IRQ 1) DUART_A; active high; level sensitive
* IRQ 27 (EXT IRQ 2) DUART_B; active high; level sensitive
* IRQ 28 (EXT IRQ 3) unused; active low; level sensitive
* IRQ 29 (EXT IRQ 4) unused; active low; level sensitive
* IRQ 30 (EXT IRQ 5) unused; active low; level sensitive
* IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
*/
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
mtdcr (uicer, 0x00000000); /* disable all ints */
mtdcr (uiccr, 0x00000000); /* set all to be non-critical */
mtdcr (uicpr, 0xFFFFFFB1); /* set int polarities */
mtdcr (uictr, 0x10000000); /* set int trigger levels */
mtdcr (uicvcr, 0x00000001); /* set vect base=0,INT0 highest priority */
mtdcr (uicsr, 0xFFFFFFFF); /* clear all ints */
/*
* EBC Configuration Register: set ready timeout to 100 us
*/
mtebc (epcr, 0xb8400000);
return 0;
}
示例5: main
int main(int argc, char* argv[])
{
pthread_t shooting_threads[MAX_PROCESSING_THREADS];
char c;
int i;
// Initialization
printf("CATIA:\tStarting Camera Application Triggering Image Analysis\n");
chdk_pipe_init();
int ret = serial_init("/dev/ttySAC0");
if (ret < 0) {
printf("CATIA:\tfailed to open /dev/ttySAC0\n");
return -1;
}
pthread_mutex_init(&mut, NULL);
socket_init(1);
// Initial settings
is_shooting = 0;
mora_protocol.status = 0;
image_idx = 0;
image_count = 0;
shooting_idx = 0;
shooting_count = 0;
shooting_thread_count = 0;
// MAIN loop
while (1) {
// Read the serial
if (read(fd, &c, 1) > 0) {
parse_mora(&mora_protocol, c);
} else if (errno != 11) {
printf("CATIA:\nSerial error: %d\n" , errno);
}
// Parse serial commands
if (mora_protocol.msg_received) {
// Process Only Once
mora_protocol.msg_received = FALSE;
// Shoot an image if not busy
if (mora_protocol.msg_id == MORA_SHOOT) {
// Parse the shoot message
union dc_shot_union* shoot = (union dc_shot_union*) malloc(sizeof(union dc_shot_union));
for (i = 0; i < MORA_SHOOT_MSG_SIZE; i++) {
shoot->bin[i] = mora_protocol.payload[i];
}
printf("CATIA:\tSHOT %d,%d\n", shoot->data.nr, shoot->data.phi);
pthread_create(&shooting_threads[(shooting_idx++ % MAX_PROCESSING_THREADS)], NULL, handle_msg_shoot, (void*)shoot);
send_msg_status();
}
// Fill the image buffer (happens busy because needs fd anyway)
if (mora_protocol.msg_id == MORA_BUFFER_EMPTY) {
send_msg_image_buffer();
}
}
// Read the socket
if (socket_recv(image_buffer[image_idx], IMAGE_SIZE) == IMAGE_SIZE) {
image_idx = (image_idx + 1) % MAX_IMAGE_BUFFERS;
if (image_count < MAX_IMAGE_BUFFERS) {
image_count++;
}
}
}
// Close
close(fd);
chdk_pipe_deinit();
printf("CATIA:\tShutdown\n");
return 0;
}
示例6: modify_uboot_uart
/*
************************************************************************************************************
*
* function
*
* name : modify_uboot_uart
*
* parmeters :
*
* return :
*
* note : [email protected]
*
*
************************************************************************************************************
*/
int modify_uboot_uart(void)
{
script_gpio_set_t fetch_cfg_gpio[2];
u32 reg = 0;
int uart_port_id = 0;
//disable uart0
if(script_parser_fetch("uart_para","uart_debug_rx",(int *)(&fetch_cfg_gpio[0]),sizeof(script_gpio_set_t)/4))
{
printf("debug_mode_error: can't find card0_rx \n");
return -1;
}
fetch_cfg_gpio[0].mul_sel = 0;
if(script_parser_patch("uart_para","uart_debug_rx",(void*)&fetch_cfg_gpio[0],sizeof(script_gpio_set_t)/4))
{
printf("debug_mode_error : can't patch uart_debug_rx\n");
return -1;
}
//config uart_tx
if(script_parser_fetch("uart_para","uart_debug_tx",(int *)(&fetch_cfg_gpio[1]),sizeof(script_gpio_set_t)/4))
{
printf("debug_mode_error: can't find card0_tx \n");
return -1;
}
fetch_cfg_gpio[1].mul_sel = 0;
if(script_parser_patch("uart_para","uart_debug_tx",(void*)&fetch_cfg_gpio[1],sizeof(script_gpio_set_t)/4))
{
printf("debug_mode_error : can't patch uart_debug_tx\n");
return -1;
}
//disable uart0
gpio_request_simple("uart_para",NULL);
//port_id
if(script_parser_fetch("force_uart_para","force_uart_port",(int *)(&uart_port_id),sizeof(int)/4))
{
printf("debug_mode_error: can't find card0_tx \n");
return -1;
}
if(script_parser_patch("uart_para","uart_debug_port",(int *)(&uart_port_id),sizeof(int)/4))
{
printf("debug_mode_error: can't find card0_tx \n");
return -1;
}
if(script_parser_fetch("force_uart_para","force_uart_tx",(int *)(&fetch_cfg_gpio[0]),sizeof(script_gpio_set_t)/4))
{
printf("debug_mode_error: can't find card0_tx \n");
return -1;
}
if(script_parser_patch("uart_para","uart_debug_tx",(void*)&fetch_cfg_gpio[0],sizeof(script_gpio_set_t)/4))
{
printf("debug_mode_error : can't patch uart_debug_tx\n");
return -1;
}
if(script_parser_fetch("force_uart_para","force_uart_rx",(int *)(&fetch_cfg_gpio[1]),sizeof(script_gpio_set_t)/4))
{
printf("debug_mode_error: can't find card0_tx \n");
return -1;
}
if(script_parser_patch("uart_para","uart_debug_rx",(void*)&fetch_cfg_gpio[1],sizeof(script_gpio_set_t)/4))
{
printf("debug_mode_error : can't patch uart_debug_tx\n");
return -1;
}
printf("uart_port_id = %d\n",uart_port_id);
uboot_spare_head.boot_data.uart_port = uart_port_id;
//reset
#ifdef UART_RST_CTRL
reg = readl(UART_RST_CTRL);
reg &= ~(1 << (16 + uart_port_id));
reg |= (1 << (16 + uart_port_id));
writel(reg,UART_RST_CTRL);
#endif
//gate
reg = readl(UART_GATE_CTRL);
reg &= ~(1 << (16 + uart_port_id));
reg |= (1 << (16 + uart_port_id));
writel(reg,UART_GATE_CTRL);
//enable card0
gpio_request_simple("uart_para",NULL);
serial_init();
return 0;
}
示例7: machine_specific_init
/* C64-specific initialization. */
int machine_specific_init(void)
{
int delay;
scpu64_log = log_open("SCPU64");
if (mem_load() < 0) {
return -1;
}
event_init();
/* Setup trap handling. */
traps_init();
if (!video_disabled_mode) {
joystick_init();
}
gfxoutput_init();
/* Initialize serial traps. */
if (serial_init(scpu64_serial_traps) < 0) {
return -1;
}
serial_trap_init(0xa4);
serial_iec_bus_init();
/* Initialize RS232 handler. */
rs232drv_init();
c64_rsuser_init();
/* Initialize print devices. */
printer_init();
/* Fire up the hardware-level drive emulation. */
drive_init();
disk_image_init();
resources_get_int("AutostartDelay", &delay);
if (delay == 0) {
delay = 3; /* default */
}
/* Initialize autostart. */
autostart_init((CLOCK)(delay * SCPU64_PAL_RFSH_PER_SEC * SCPU64_PAL_CYCLES_PER_RFSH), 1, 0xcc, 0xd1, 0xd3, 0xd5);
#ifdef USE_BEOS_UI
/* Pre-init C64-specific parts of the menus before vicii_init()
creates a canvas window with a menubar at the top. This could
also be used by other ports, e.g. GTK+... */
if (!console_mode) {
scpu64ui_init_early();
}
#endif
if (vicii_init(VICII_STANDARD) == NULL && !video_disabled_mode) {
return -1;
}
scpu64_mem_init();
cia1_init(machine_context.cia1);
cia2_init(machine_context.cia2);
#ifndef COMMON_KBD
/* Initialize the keyboard. */
if (c64_kbd_init() < 0) {
return -1;
}
#endif
c64keyboard_init();
scpu64_monitor_init();
/* Initialize vsync and register our hook function. */
vsync_init(machine_vsync_hook);
vsync_set_machine_parameter(machine_timing.rfsh_per_sec, machine_timing.cycles_per_sec);
/* Initialize native sound chip */
sid_sound_chip_init();
/* Initialize cartridge based sound chips */
cartridge_sound_chip_init();
/* Initialize userport based sound chips */
userport_dac_sound_chip_init();
drive_sound_init();
video_sound_init();
/* Initialize sound. Notice that this does not really open the audio
device yet. */
sound_init(machine_timing.cycles_per_sec, machine_timing.cycles_per_rfsh);
/* Initialize keyboard buffer. */
kbdbuf_init(631, 198, 10, (CLOCK)(machine_timing.rfsh_per_sec * machine_timing.cycles_per_rfsh));
//.........这里部分代码省略.........
示例8: Stream
Serial::Serial(PinName tx, PinName rx, const char *name) : Stream(name) {
serial_init(&_serial, tx, rx);
_baud = 9600;
serial_irq_handler(&_serial, Serial::_irq_handler, (uint32_t)this);
}
示例9: start_raw
extern "C" int
start_raw(int argc, const char **argv)
{
stage2_args args;
clear_bss();
// call C++ constructors before doing anything else
call_ctors();
args.heap_size = HEAP_SIZE;
args.arguments = NULL;
args.platform.boot_tgz_data = NULL;
args.platform.boot_tgz_size = 0;
args.platform.fdt_data = NULL;
args.platform.fdt_size = 0;
// if we get passed a uimage, try to find the third blob only if we do not have FDT data yet
if (gUImage != NULL
&& !gFDT
&& image_multi_getimg(gUImage, 2,
(uint32*)&args.platform.fdt_data,
&args.platform.fdt_size)) {
// found a blob, assume it is FDT data, when working on a platform
// which does not have an FDT enabled U-Boot
gFDT = args.platform.fdt_data;
}
serial_init(gFDT);
console_init();
cpu_init();
if (args.platform.fdt_data) {
dprintf("Found FDT from uimage @ %p, %" B_PRIu32 " bytes\n",
args.platform.fdt_data, args.platform.fdt_size);
} else if (gFDT) {
/* Fixup args so we can pass the gFDT on to the kernel */
args.platform.fdt_data = gFDT;
args.platform.fdt_size = fdt_totalsize(gFDT);
}
// if we get passed an FDT, check /chosen for initrd
if (gFDT != NULL) {
int node = fdt_path_offset(gFDT, "/chosen");
const void *prop;
int len;
phys_addr_t initrd_start = 0, initrd_end = 0;
if (node >= 0) {
prop = fdt_getprop(gFDT, node, "linux,initrd-start", &len);
if (prop && len == 4)
initrd_start = fdt32_to_cpu(*(uint32_t *)prop);
prop = fdt_getprop(gFDT, node, "linux,initrd-end", &len);
if (prop && len == 4)
initrd_end = fdt32_to_cpu(*(uint32_t *)prop);
if (initrd_end > initrd_start) {
args.platform.boot_tgz_data = (void *)initrd_start;
args.platform.boot_tgz_size = initrd_end - initrd_start;
dprintf("Found boot tgz from FDT @ %p, %" B_PRIu32 " bytes\n",
args.platform.boot_tgz_data, args.platform.boot_tgz_size);
}
}
}
// if we get passed a uimage, try to find the second blob
if (gUImage != NULL
&& image_multi_getimg(gUImage, 1,
(uint32*)&args.platform.boot_tgz_data,
&args.platform.boot_tgz_size)) {
dprintf("Found boot tgz from uimage @ %p, %" B_PRIu32 " bytes\n",
args.platform.boot_tgz_data, args.platform.boot_tgz_size);
}
{ //DEBUG:
int i;
dprintf("argc = %d\n", argc);
for (i = 0; i < argc; i++)
dprintf("argv[%d] @%lx = '%s'\n", i, (uint32)argv[i], argv[i]);
dprintf("os: %d\n", (int)gUBootOS);
dprintf("gd @ %p\n", gUBootGlobalData);
if (gUBootGlobalData)
dprintf("gd->bd @ %p\n", gUBootGlobalData->bd);
//dprintf("fb_base %p\n", (void*)gUBootGlobalData->fb_base);
if (gUImage)
dump_uimage(gUImage);
if (gFDT)
dump_fdt(gFDT);
}
mmu_init();
// wait a bit to give the user the opportunity to press a key
// spin(750000);
// reading the keyboard doesn't seem to work in graphics mode
// (maybe a bochs problem)
// sBootOptions = check_for_boot_keys();
//if (sBootOptions & BOOT_OPTION_DEBUG_OUTPUT)
serial_enable();
main(&args);
return 0;
//.........这里部分代码省略.........
示例10: main
// MAIN
int main(int argc, char ** argv){
printf("Lancement du programme Main...\n");
// CHOIX PERIPHERIQUE POUR LE ZIGBEE
if(argc < 1){
printf("Please provide a dev name.\n");
return 0;
}
char * devname = argv[1];
printf("Lancement du programme DUMMYFPGA...\n");
int xbeeRNE = serial_init(devname,9600);
int * xbeeRNEPointer = &xbeeRNE;
// POUR POUVOIR FACILEMENT ENVOYER VERS LE COORDINATEUR
uint8_t destRequest[8];
destRequest[0] = 0x00;
destRequest[1] = 0x00;
destRequest[2] = 0x00;
destRequest[3] = 0x00;
destRequest[4] = 0x00;
destRequest[5] = 0x00;
destRequest[6] = 0x00;
destRequest[7] = 0x00;
//CREATION D'UNE LISTE DE CAPTEUR
listeCapteurs = initCaptorsList();
uint8_t question = 0x3F; // Pour pouvoir repondre a la demande '?'
uint8_t numberCaptors = 0x01; // Nombre de capteurs (A mettre a jour)
// INITIALISATION D'UN UNIQUE CAPTEUR (A FAIRE POUR TOUS LES CAPTEURS)
uint8_t id = ID_TEMPERATURE; // Type de capteur
uint8_t unitData = 0x0C; // unite (ici en degre celsius)
uint8_t dataSize = 0x02; // le nombre d'octets qui composent la donnee (ici 2)
uint8_t minTemp[2]; // Valeurs min et max et leur affectation (on suppose dataSize = 0x02)
uint8_t maxTemp[2];
minTemp[0] = 0x00; // A METTRE A JOUR EN FONCTION DES DONNEES
minTemp[1] = 0x00;
maxTemp[0] = 0x00;
maxTemp[1] = 0x40;
uint8_t fpgaName[2]; // Nom du FPGA (ici "#1")
fpgaName[0] = 0x23;
fpgaName[1] = 0x31;
addCaptor(listeCapteurs,id,dataSize,unitData,minTemp,maxTemp);
//showCaptor(listeCapteurs->premier); // Pour afficher les differents champs du capteur
// A FAIRE POUR TOUS LES AUTRES CAPTEURS
int count = 0;
int finish = 0;
while(!finish){
printf("Count Value : %d", count);
count++;
struct TrameXbee * trameRetour = getTrame(xbeeRNEPointer);
if(trameRetour){
afficherTrame(trameRetour);
// // FIN DU PROGRAMME
uint8_t idRetour = trameRetour->header.frameID;
switch(idRetour){
case ID_NI :{
// ARRIVEE D'UN NOUVEAU FPGA DANS LE RESEAU, ON VA METTRE A JOUR LA TABLE
// ICI ON NE SERA PAS DANS CE CAS LA
break;
}
case ID_TX_STATUS :{
if (trameRetour->trameData[4] == 0x00){
printf("La trame a bien ete tranmise");
}
break;
}
case ID_RX :{
uint8_t askCode = trameRetour->trameData[11];
switch(askCode){
case 0x3F :{
// REQUETE INFO CAPTEUR
printf("On a reçu une requete de demande d'infos sur les capteurs !\n");
sendInfoCaptorValueFrameWithList(xbeeRNEPointer,name,listeCapteurs);
break;
}
case 0x2A :{
// REQUETE VALEUR CAPTEUR
uint8_t capteurCode = trameRetour->trameData[12];
fprintf(stderr, "Voici le code reçu : %02x\n", capteurCode);
switch(capteurCode){
case ID_TEMPERATURE :{
printf("On a recu une requête du maitre qui veut connaitre la temperature\n");
uint8_t valeur[2];
valeur[0] = 0x00;
valeur[1] = 0x3F;
uint8_t destRequest[8];
destRequest[0] = 0x00;
destRequest[1] = 0x00;
destRequest[2] = 0x00;
destRequest[3] = 0x00;
//.........这里部分代码省略.........
示例11: main
int main(void)
{
serial_init(E_BAUD_4800);
serial_install_interrupts(E_FLAGS_SERIAL_RX_INTERRUPT);
serial_flush();
while(1) {
char str[32] = {0x00};
memset(str, 0x00, sizeof(str));
#if TEST_TYPE == TEST_SIMPLE
#warning Building Test Simple
strcpy(buffer, "123456789");
snprintf(str, sizeof(str), "CRC: %04x\n",
checkcrc((unsigned char *)buffer, strlen(buffer)));
serial_poll_send(str, strlen(str));
#elif TEST_TYPE == TEST_RECEIVE
#warning Building Test Receive
unsigned char size = 0x00;
uint16_t crc = 0x0000;
if (0 >= (size = slip_recv((unsigned char *)buffer, 128)))
continue;
memcpy(&crc, &buffer[size - 2], 2);
memset(&buffer[size - 2], 0x00, 2);
snprintf(str, sizeof(str), "RECV [%04x], CRC: %04x\r\n",
crc,
checkcrc((unsigned char *)buffer, size));
serial_poll_send(str, strlen(str));
#elif TEST_TYPE == TEST_VERIFY
#warning Building Test Verify
unsigned char size = 0x00;
if (0 >= (size = slip_recv((unsigned char *)buffer, 128)))
continue;
snprintf(str, sizeof(str), "Verification: [%s]\r\n",
slip_verify_crc16(buffer, size, size - 2) ?
"positive" : "negative");
serial_poll_send(str, strlen(str));
#elif TEST_TYPE == TEST_SEND
#warning Building Test Send
strcpy(buffer, "123456789");
slip_append_crc16((unsigned char *)buffer, strlen(buffer));
serial_poll_send(buffer, 11);
serial_poll_send("\n",1);
#else
#error Uknown test type
#endif
_delay_ms(200);
}
return 0;
}
示例12: main
int main(void)
{
// Initialize system upon power-up.
serial_init(); // Setup serial baud rate and interrupts
settings_init(); // Load Grbl settings from EEPROM
stepper_init(); // Configure stepper pins and interrupt timers
system_init(); // Configure pinout pins and pin-change interrupt
memset(&sys, 0, sizeof(sys)); // Clear all system variables
sys.abort = true; // Set abort to complete initialization
sei(); // Enable interrupts
// Check for power-up and set system alarm if homing is enabled to force homing cycle
// by setting Grbl's alarm state. Alarm locks out all g-code commands, including the
// startup scripts, but allows access to settings and internal commands. Only a homing
// cycle '$H' or kill alarm locks '$X' will disable the alarm.
// NOTE: The startup script will run after successful completion of the homing cycle, but
// not after disabling the alarm locks. Prevents motion startup blocks from crashing into
// things uncontrollably. Very bad.
#ifdef HOMING_INIT_LOCK
if (bit_istrue(settings.flags,BITFLAG_HOMING_ENABLE)) { sys.state = STATE_ALARM; }
#endif
// Force Grbl into an ALARM state upon a power-cycle or hard reset.
#ifdef FORCE_INITIALIZATION_ALARM
sys.state = STATE_ALARM;
#endif
// Grbl initialization loop upon power-up or a system abort. For the latter, all processes
// will return to this loop to be cleanly re-initialized.
for(;;) {
// TODO: Separate configure task that require interrupts to be disabled, especially upon
// a system abort and ensuring any active interrupts are cleanly reset.
// Reset Grbl primary systems.
serial_reset_read_buffer(); // Clear serial read buffer
gc_init(); // Set g-code parser to default state
spindle_init();
coolant_init();
limits_init();
jog_init(); // by cm
probe_init();
plan_reset(); // Clear block buffer and planner variables
st_reset(); // Clear stepper subsystem variables.
// Sync cleared gcode and planner positions to current system position.
plan_sync_position();
gc_sync_position();
// Reset system variables.
sys.abort = false;
sys.rt_exec_state = 0;
sys.rt_exec_alarm = 0;
sys.suspend = false;
// Start Grbl main loop. Processes program inputs and executes them.
protocol_main_loop();
}
return 0; /* Never reached */
}
示例13: main
extern "C" int main() {
turn_on_crystal_oscillator();
start_system_pll();
start_usb_pll();
set_main_clock_to_system_pll();
enable_peripheral_clocks();
serial_init();
configure_pins();
delay(1000000);
//enable_clock_output();
NVIC.enable_interrupts();
//serial_write_string("main():loop");
//serial_write_line();
// Power for FPGA
v1p2_enable(); // FPGA VCCINT
v2p5_enable(); // FPGA PLLs?
v1p8_enable(); // FPGA VCCIOs, DDR2.
v1p1_enable(); // USB internal voltage
delay(1000000);
// Power for the clock generator.
// V3P3A must be turned on *after* V1P8 to satisfy
// Si5351C requirement.
v3p3a_enable();
delay(1000000);
// I2C configuration
i2c0_init(500);
// Give Si5351C time to power up?
delay(100000);
si5351c_disable_all_outputs();
//si5351c_disable_oeb_pin_control();
si5351c_power_down_all_clocks();
si5351c_set_crystal_configuration();
si5351c_enable_xo_and_ms_fanout();
si5351c_configure_pll_sources_for_xtal();
si5351c_configure_pll1_multisynth();
si5351c_configure_multisynth(4, 1536, 0, 1, 0); // 50MHz
si5351c_configure_multisynth(5, 1536, 0, 1, 0); // 50MHz
si5351c_configure_multisynths_6_and_7();
si5351c_configure_clock_control();
si5351c_enable_clock_outputs();
clockgen_output_enable();
fe_enable();
while(true) {
//write_led_status(read_fpga_conf_done());
write_led_status(1);
delay(1000000);
write_led_status(0);
delay(1000000);
}
return 0;
}
示例14: main
int main(void)
{
uint8_t id, rec, i, cs;
color_t c;
packet_t p;
setup();
stop_motor();
sei();
for(i = 0; i < 5; i++)
{
set_led_rgb(255, 0, 255);
_delay_ms(50);
set_led_rgb(255, 255, 0);
_delay_ms(50);
}
// get the current liquid level
update_liquid_level();
for(;;)
{
cli();
g_reset = 0;
g_current_sense_detected = 0;
g_current_sense_num_cycles = 0;
setup();
serial_init();
stop_motor();
set_led_rgb(0, 0, 255);
sei();
id = address_exchange();
for(; !check_reset();)
{
rec = receive_packet(&p);
if (rec == COMM_CRC_FAIL)
continue;
if (rec == COMM_RESET)
break;
if (rec == COMM_OK && (p.dest == DEST_BROADCAST || p.dest == id))
{
// If we've detected a over current sitatuion, ignore all comamnds until reset
cli();
cs = g_current_sense_detected;
sei();
switch(p.type)
{
case PACKET_PING:
break;
case PACKET_SET_MOTOR_SPEED:
if (!cs)
set_motor_speed(p.p.uint8[0], p.p.uint8[1]);
if (p.p.uint8[0] == 0)
flush_saved_tick_count(0);
break;
case PACKET_TICK_DISPENSE:
if (!cs)
{
dispense_ticks((uint16_t)p.p.uint32, 255);
flush_saved_tick_count(0);
}
break;
case PACKET_TIME_DISPENSE:
if (!cs)
{
run_motor_timed(p.p.uint32);
flush_saved_tick_count(0);
}
break;
case PACKET_IS_DISPENSING:
is_dispensing();
break;
case PACKET_LIQUID_LEVEL:
get_liquid_level();
break;
case PACKET_UPDATE_LIQUID_LEVEL:
update_liquid_level();
break;
case PACKET_LED_OFF:
set_led_pattern(LED_PATTERN_OFF);
break;
case PACKET_LED_IDLE:
if (!cs)
set_led_pattern(LED_PATTERN_IDLE);
break;
//.........这里部分代码省略.........
示例15: load_kernel
unsigned long
load_kernel(unsigned long load_addr, int num_words, unsigned long cksum, bd_t *bp)
{
char *cp, ch;
int timer = 0, zimage_size;
unsigned long initrd_size;
/* First, capture the embedded board information. Then
* initialize the serial console port.
*/
embed_config(&bp);
#if defined(CONFIG_SERIAL_CPM_CONSOLE) || defined(CONFIG_SERIAL_8250_CONSOLE)
com_port = serial_init(0, bp);
#endif
/* Grab some space for the command line and board info. Since
* we no longer use the ELF header, but it was loaded, grab
* that space.
*/
#ifdef CONFIG_MBX
/* Because of the way the MBX loads the ELF image, we can't
* tell where we started. We read a magic variable from the NVRAM
* that gives us the intermediate buffer load address.
*/
load_addr = *(uint *)0xfa000020;
load_addr += 0x10000; /* Skip ELF header */
#endif
/* copy board data */
if (bp)
memcpy(hold_residual,bp,sizeof(bd_t));
/* Set end of memory available to us. It is always the highest
* memory address provided by the board information.
*/
end_avail = (char *)(bp->bi_memsize);
puts("\nloaded at: "); puthex(load_addr);
puts(" "); puthex((unsigned long)(load_addr + (4*num_words))); puts("\n");
if ( (unsigned long)load_addr != (unsigned long)&start ) {
puts("relocated to: "); puthex((unsigned long)&start);
puts(" ");
puthex((unsigned long)((unsigned long)&start + (4*num_words)));
puts("\n");
}
if ( bp ) {
puts("board data at: "); puthex((unsigned long)bp);
puts(" ");
puthex((unsigned long)((unsigned long)bp + sizeof(bd_t)));
puts("\nrelocated to: ");
puthex((unsigned long)hold_residual);
puts(" ");
puthex((unsigned long)((unsigned long)hold_residual + sizeof(bd_t)));
puts("\n");
}
/*
* We link ourself to an arbitrary low address. When we run, we
* relocate outself to that address. __image_being points to
* the part of the image where the zImage is. -- Tom
*/
zimage_start = (char *)(unsigned long)(&__image_begin);
zimage_size = (unsigned long)(&__image_end) -
(unsigned long)(&__image_begin);
initrd_size = (unsigned long)(&__ramdisk_end) -
(unsigned long)(&__ramdisk_begin);
/*
* The zImage and initrd will be between start and _end, so they've
* already been moved once. We're good to go now. -- Tom
*/
puts("zimage at: "); puthex((unsigned long)zimage_start);
puts(" "); puthex((unsigned long)(zimage_size+zimage_start));
puts("\n");
if ( initrd_size ) {
puts("initrd at: ");
puthex((unsigned long)(&__ramdisk_begin));
puts(" "); puthex((unsigned long)(&__ramdisk_end));puts("\n");
}
/*
* setup avail_ram - this is the first part of ram usable
* by the uncompress code. Anything after this program in RAM
* is now fair game. -- Tom
*/
avail_ram = (char *)PAGE_ALIGN((unsigned long)_end);
puts("avail ram: "); puthex((unsigned long)avail_ram); puts(" ");
puthex((unsigned long)end_avail); puts("\n");
puts("\nLinux/PPC load: ");
cp = cmd_line;
/* This is where we try and pick the right command line for booting.
* If we were given one at compile time, use it. It Is Right.
* If we weren't, see if we have a ramdisk. If so, thats root.
* When in doubt, give them the netroot (root=/dev/nfs rw) -- Tom
*/
#ifdef CONFIG_CMDLINE_BOOL
memcpy (cmd_line, compiled_string, sizeof(compiled_string));
//.........这里部分代码省略.........