int main(void) { CLKPR = 0x80; CLKPR = 0x00; init_ports(); init_timer1(); init_timer2(); init_analog(); TWAR = 1 << 1; TWCR = 0x45; TWCR = (1 << TWEN) | (1 << TWIE) | (1 << TWEA); sei(); state = WAIT_ZCROSS; //state = TEST; while (1) { _delay_ms(10000); } clr_led(); cli(); boot_main(); }
/** Initialize the analog subsystem. Initialize the ADC and start hardware scan for all sensors. */ void analog_init() { if (NUM_TEMP_SENSORS) { // At least one channel in use. init_dma(); init_analog(); } }
int main() { DLN_RESULT result; DlnConnect("localhost", DLN_DEFAULT_SERVER_PORT); // Check device count uint32_t device_count; result = DlnGetDeviceCount(&device_count); if (!DLN_SUCCEEDED(result)) { std::cout << "Failed to get DLN device count" << std::endl; return -1; } if (device_count != 1) { std::cout << "There should be one and only one DLN device connected. There are " << device_count << std::endl; return -1; } // Try to open our device HDLN handle; result = DlnOpenDevice(0, &handle); if (!DLN_SUCCEEDED(result)) { std::cout << "Failed to open DLN device" << std::endl; return -1; } // Print out some info about our DLN device DLN_VERSION version; uint32_t sn, id; DlnGetVersion(handle, &version); DlnGetDeviceSn(handle, &sn); DlnGetDeviceId(handle, &id); std::cout << "Opened DLN device: " << sn << "\t" << id << std::endl; // Initialize all the things init_i2c(handle); init_analog(handle); // Instantiate the rover controller RoverControl rover(handle); while (true) { rover.update(); } cleanup_analog(handle); DlnCloseHandle(handle); DlnDisconnectAll(); return 0; }
int main(void) { lcd.clear(); lcd.invertDisplay(true); lcd.clearMarkers(); lcd.setContrast(16); //init analog if needed init_analog(); srand(adc_read(0)); while(1) { //collapseExplosion(1); //collapseExplosion(0); //lcd.drawRect(10,10,10,10); //lcd.drawLine(0,0,100,48); //lcd.drawCircle(20,20,5); } return 0; }
void pin_init(void) { // Make sure all the LCD pins are recognized as digital TRIS_RS = 0; TRIS_EN = 0; TRIS_D0 = 0; TRIS_D1 = 0; TRIS_D2 = 0; TRIS_D3 = 0; TRIS_D4 = 0; TRIS_D5 = 0; TRIS_D6 = 0; TRIS_D7 = 0; ANSELA = 0; // PORTA pins digital ANSELB = 0; // PORTB pins digital CM1CON = 0; CM2CON = 0; CM3CON = 0; DDPCONbits.JTAGEN = 0; //int count=0; TRISA=0x00; TRISB=0x00; PORTA=0x00; PORTB=0x00; // keypad setup ANSELBbits.ANSB13 = 1; // set RB3 (AN5) to analog TRISBbits.TRISB13 = 1; // set RB3 as an input init_analog(); AD1CON1SET = 0x8000; // Enable ADC }
int main(void) { char out_buf[20+1]; measured_val[0]=0; measured_val[1]=0; init_dac(); lcd_init(LCD_DISP_ON); init_kbd(); set_val[0]=15;set_val[1]=50; // 150mA and 5V if (eeprom_read_byte((uint8_t *)0x0) == 19){ // ok magic number matches accept values set_val[1]=eeprom_read_word((uint16_t *)0x04); set_val[0]=eeprom_read_word((uint16_t *)0x02); } // I2C also called TWI i2c_init(3,1,0); sei(); i2c_send_data("on"); init_analog(); while (1) { // current measured_val[0]=adc_i_to_disp(getanalogresult(0)); set_val_adcUnits[0]=disp_i_to_adc(set_val[0]); set_target_adc_val(0,set_val_adcUnits[0]); // voltage measured_val[1]=adc_u_to_disp(getanalogresult(1),measured_val[0]); set_val_adcUnits[1]=disp_u_to_adc(set_val[1])+disp_i_to_u_adc_offset(measured_val[0]); set_target_adc_val(1,set_val_adcUnits[1]); // voltage lcd_clrscr(); int_to_ascii(measured_val[1],out_buf,1,1); lcd_puts(out_buf); lcd_puts("V "); int_to_ascii(set_val[1],out_buf,1,1); lcd_putc('['); lcd_puts(out_buf); lcd_putc(']'); if (!is_current_limit()){ // put a marker to show which value is currenlty limiting lcd_puts("<-"); } // current lcd_gotoxy(0,1); int_to_ascii(measured_val[0],out_buf,2,0); lcd_puts(out_buf); lcd_puts("A "); int_to_ascii(set_val[0],out_buf,2,0); lcd_putc('['); lcd_puts(out_buf); lcd_putc(']'); if (is_current_limit()){ // put a marker to show which value is currenlty limiting lcd_puts("<-"); } //dbg //int_to_ascii(is_dacval(),out_buf,0,0); //lcd_puts(out_buf); check_i2c_interface(); // the buttons must be responsive but they must not // scroll too fast if pressed permanently if (check_buttons()==0){ // no buttons pressed delay_ms(100); bpress=0; check_i2c_interface(); check_buttons(); delay_ms(150); }else{ // button press if (bpress > 11){ // somebody pressed permanetly the button=>scroll fast delay_ms(10); check_i2c_interface(); delay_ms(40); }else{ bpress++; delay_ms(100); check_i2c_interface(); delay_ms(150); } } } return(0); }
int main(void) { lcd.clearMarkers(); //init analog if needed init_analog(); srand(adc_read(0)); //pin 0 on portb output. //led stays on if iterations between fields are the same (same number of cells) DDRB |= _BV(PB0); //clear the buffer. clearArray(buffer); //if house define insert that. #ifdef PATTERN insert_pattern(field, Glider, 0,0); #endif //else random field. #ifdef RANDOM createRandomField(field); #endif //set contrast. lcd.setContrast(17); //make sure to start at location 0,0 lcd.setCursor(0,0); //position is field size, I refresh the screen Backwards. position = fieldSize; while(position--) { //display field with current position showField(field, fieldSize-position); //here the rules of the game of life are checked. //if a position has a cell (1), //then look how many around, //if 2 or 3 around it lives, else it dies. //if(field[position]) //{ // if(totalAround(field, position)==surviveAbility) // { // buffer[position]=1; // } // else if(totalAround(field, position)==surviveAbility+1) // { // buffer[position]=1; // } // else // { // buffer[position]=0; // } //} //else //{ //but if a position in the field is empty //and it has 3 around, that position becomes alife. // if(totalAround(field, position)==reproductiveNumber) // { // buffer[position] = 1; // } // else // { // buffer[position] = 0; // } //} //position keeps position in the field array, //and at the same time drawing location on //screen. if(position == 0) { //insert changes into the field. copy_buffer(buffer, field); //reset position to 0 position = fieldSize; //set frame rate with a blocking delay.. delay(adc_read(1)); //check wether we are in a steady state or just still evolving. currentState = checkField(field); //set contrast with pot meter on analog pin 1 (not 0) lcd.setContrast(32/2); //change field if field the same a while, or iterations goes above a certain number which meens it's probaly in a loop //check if button is pressed and create a new field. if(changeCount == holdingNumber || (iterations > 1000) || (PINB & (1<<PB2))) { //reset changeCount changeCount = 0; //reset iteration count. iterations = 0; //create a random playing field. #ifdef PATTERN insert_pattern(field, Glider, 0,0); #endif //createRandomField(field); //put a pattern we created onto the field. //insert_field(stable, field); } //if the field states stay the same. else if(currentState == previousState) { PORTB |= (1<<PB0); changeCount++; } //if the field states are different. else { PORTB &= ~(1<<PB0); previousState = currentState; //that is why setting it to zero. iterations++; //changeCount shouldn't change if the inbetween states happen te be the same. changeCount = 0; } //set location and nicely print something. lcd.setCursor(0,5); writeFormated(iterations,changeCount,"Game of Life:"); } } return 0; }
//Initialize and enables all the peripherals void init_peripherals(void) { //Motor control variables & peripherals: init_motor(); //Init Control: init_ctrl_data_structure(); //Timebases: init_tb_timers(); //UART 2 - RS-485 init_rs485(); //Analog, expansion port: init_analog(); //Clutch: init_clutch(); //Enable Global Interrupts CyGlobalIntEnable; //I2C1 (internal, potentiometers, Safety-CoP & IMU) init_i2c1(); //Peripherals that depend on I2C: #ifdef USE_I2C_INT //MPU-6500 IMU: #ifdef USE_IMU init_imu(); CyDelay(25); init_imu(); CyDelay(25); init_imu(); CyDelay(25); #endif //USE_IMU //Strain amplifier: #ifdef USE_STRAIN init_strain(); #endif //USE_STRAIN #endif //USE_I2C_INT //I2C2 (external) #ifdef USE_I2C_EXT //Enable pull-ups: I2C_OPT_PU_Write(1); //I2C2 peripheral: init_i2c2(); //Set RGB LED - Starts Green i2c_write_minm_rgb(SET_RGB, 0, 255, 0); #endif //USE_I2C_EXT //Magnetic encoder: init_as5047(); // First DieTemp reading is always inaccurate -- throw out the first one #ifdef USE_DIETEMP DieTemp_1_GetTemp(&temp); #endif //USB CDC #ifdef USE_USB init_usb(); #endif //USE_USB }