Ejemplo n.º 1
0
int main(void)
{
	init();

	if(!(PIN_BAUDRATE & RESET_SLAVE_ID)) reset_slave_id();
		

	registers[7]=eeprom_read_word((uint16_t*)ADDR_SLAVE_ID_MODBUS_EEP);
		
	if(registers[7]==0xFFFF)
	{
		registers[7]=0x0001;
		eeprom_update_word((uint16_t*)ADDR_SLAVE_ID_MODBUS_EEP, registers[7]);
	}

	slave_add=eeprom_read_byte((uint8_t*)ADDR_SLAVE_ID_MODBUS_EEP);

	usart0_mod_init(select_baud_rate());

	sei();						//Enable Interrupt.

	while(1)
	{
		wdt_reset();

		if(convert_delay==1)
		{
			DS18B20_Temperature(Temperature);

			registers[8]=Temperature[0];
			registers[9]=(Temperature[1]<<8)|(Temperature[2]);
			registers[10]=Temperature[3];

		}

		
		if(convert_delay==0)
		{
			if(DS18B20_Start_Converts())
			{
				for(uint8_t i=8; i<11; i++)
				registers[i]=0xFFFF;

				convert_delay=1;
			}
				else
				{
					convert_delay = TIME_UPDATE;
				}	
		}


		convert_delay--;

		//Условие отвечающие за обработку MODBUS протокола.
		if(usart0_rx_len()!=back_len0)	
		{
			back_len0=usart0_rx_len();
			TCNT1=0x0000; 
			TCCR1B=(1<<CS12)|(0<<CS11)|(0<<CS10);
		}


	}

}
Ejemplo n.º 2
0
void setID(uint16_t val){
  eeprom_update_word(0x00, val); //update current ID in EEPROM
}
Ejemplo n.º 3
0
void write_highscores(void){
	eeprom_update_word(&save_sig, SIG);
	eeprom_write_block((void*)&high_scores, (void*)&ee_high_scores, BYTES);
}
Ejemplo n.º 4
0
void save_score(void){
	eeprom_update_word(&ee_score, score);
}
Ejemplo n.º 5
0
void Storage_SetInstructionCount(uint16_t instructionCount)
{
	eeprom_update_word(&StorageConfig_InstructionCount, instructionCount);
}
Ejemplo n.º 6
0
void set_motor_speed(uint16_t speed)
{
	pwm_ng_set(&pwm, speed);
	eeprom_update_word(&eep_motor_speed, speed);
}