Ejemplo n.º 1
0
int main(void)
{
	uart_init(UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU));
	i2c_init();
	buck_init();
	buckAdc_init();
	sei();
	//Turn off buck converter
	DDRB |= (1<<DDB0);
	PORTB |= (1<<PORTB0);
	
	while(1)
	{
		cell_numberCount();
		cell_adcReadings();
		cell_balance();
		uart_out();
		mean_readings();
		if (PINB & (1<<PORTB1)) buck(ENABLE);
		else buck(DISABLE);
	}
	
	return 0;
}
Ejemplo n.º 2
0
rala_cell_t* cell_insert_index(cell_tree_t** ct, arrow_tree_t* at, int x, int y, index_t index, cell_type_t cell_type, void *extra_information) {
	rala_cell_t* result = NULL;
	if(*ct == NULL) {
		*ct = malloc(sizeof(cell_tree_t));
		(*ct)->index = index;
		(*ct)->data.x = x;
		(*ct)->data.y = y;
		(*ct)->data.state = cell_type;
		(*ct)->data.extra_information = extra_information;
		(*ct)->left_subtree = NULL;
		(*ct)->right_subtree = NULL;
    (*ct)->height=1;
    (*ct)->balance_factor=0;
		(*ct)->data.inputs[RALA_IO_NORTH] = arrow_lookup(at, x, y, ARROW_DIR_N);
		if((*ct)->data.inputs[RALA_IO_NORTH]) {
			(*ct)->data.inputs[RALA_IO_NORTH]->to = &((*ct)->data);
		}
		(*ct)->data.inputs[RALA_IO_SOUTH] = arrow_lookup(at, x, y, ARROW_DIR_S);
		if((*ct)->data.inputs[RALA_IO_SOUTH]) {
			(*ct)->data.inputs[RALA_IO_SOUTH]->to = &((*ct)->data);
		}
		(*ct)->data.inputs[RALA_IO_WEST] = arrow_lookup(at, x, y, ARROW_DIR_W);
		if((*ct)->data.inputs[RALA_IO_WEST]) {
			(*ct)->data.inputs[RALA_IO_WEST]->to = &((*ct)->data);
		}
		(*ct)->data.inputs[RALA_IO_EAST] = arrow_lookup(at, x, y, ARROW_DIR_E);
		if((*ct)->data.inputs[RALA_IO_EAST]) {
			(*ct)->data.inputs[RALA_IO_EAST]->to = &((*ct)->data);
		}

		(*ct)->data.outputs[RALA_IO_NORTH] = arrow_lookup(at, x, y+1, ARROW_DIR_S);
		if((*ct)->data.outputs[RALA_IO_NORTH]) {
			(*ct)->data.outputs[RALA_IO_NORTH]->from = &((*ct)->data);
		}
		(*ct)->data.outputs[RALA_IO_SOUTH] = arrow_lookup(at, x, y-1, ARROW_DIR_N);
		if((*ct)->data.outputs[RALA_IO_SOUTH]) {
			(*ct)->data.outputs[RALA_IO_SOUTH]->from = &((*ct)->data);
		}
		(*ct)->data.outputs[RALA_IO_WEST] = arrow_lookup(at, x-1, y, ARROW_DIR_E);
		if((*ct)->data.outputs[RALA_IO_WEST]) {
			(*ct)->data.outputs[RALA_IO_WEST]->from = &((*ct)->data);
		}
		(*ct)->data.outputs[RALA_IO_EAST] = arrow_lookup(at, x+1, y, ARROW_DIR_W);
		if((*ct)->data.outputs[RALA_IO_EAST]) {
			(*ct)->data.outputs[RALA_IO_EAST]->from = &((*ct)->data);
		}
		result = &((*ct)->data);
	} else if ((*ct)->index == index) {
		(*ct)->data.state = cell_type;
		(*ct)->data.extra_information = extra_information;
		return &((*ct)->data);
	} else if ((*ct)->index < index) {
		result = cell_insert_index(&((*ct)->right_subtree), at, x, y, index, cell_type, extra_information);
    cell_update_height(*ct);
    cell_balance(ct);
	} else if ((*ct)->index > index) {
		result = cell_insert_index(&((*ct)->left_subtree), at, x, y, index, cell_type, extra_information);
    cell_update_height(*ct);
    cell_balance(ct);
	}
	return result;
}