====== Files ====== The main source file should be called like the device type and the directory name, prefixed with "shc", e.g. "shc_yourdevice.c|h". ====== Main Function ====== Use these typical functions to initialize your device in the main function: Create a delay to avoid problems with E2P access when a programmer resets the device in short intervals (which mine did...):\\ ''_delay_ms(1000);'' Initialize the util functions (e.g. the LED output):\\ ''util_init();'' Check if the EEPROM matches the device type (and blink forever if it doesn't):\\ ''check_eeprom_compatibility(DEVICETYPE_BASE_STATION);'' Set, increase and write packet counter:\\ ''packetcounter = eeprom_read_UIntValue32(EEPROM_PACKETCOUNTER_BYTE, EEPROM_PACKETCOUNTER_BIT, EEPROM_PACKETCOUNTER_LENGTH_BITS, EEPROM_PACKETCOUNTER_MINVAL, EEPROM_PACKETCOUNTER_MAXVAL) + PACKET_COUNTER_WRITE_CYCLE;\\ eeprom_write_UIntValue(EEPROM_PACKETCOUNTER_BYTE, EEPROM_PACKETCOUNTER_BIT, EEPROM_PACKETCOUNTER_LENGTH_BITS, packetcounter);'' Read AES key:\\ ''aes_key_count = eeprom_read_UIntValue8(EEPROM_AESKEYCOUNT_BYTE, EEPROM_AESKEYCOUNT_BIT, EEPROM_AESKEYCOUNT_LENGTH_BITS, EEPROM_AESKEYCOUNT_MINVAL, EEPROM_AESKEYCOUNT_MAXVAL); '' Read device ID:\\ ''deviceID = eeprom_read_UIntValue16(EEPROM_DEVICEID_BYTE, EEPROM_DEVICEID_BIT, EEPROM_DEVICEID_LENGTH_BITS, EEPROM_DEVICEID_MINVAL, EEPROM_DEVICEID_MAXVAL); '' Init UART and print out software info:\\ ''uart_init();\\ UART_PUTS(...'' Blink three times to show everything is ok (or don't if it's not):\\ ''led_blink(500, 500, 3);'' Init the RFM12:\\ ''rfm12_init(); sei();'' Start your endless loop:\\ ''while (42)\\ {\\ /* do something */\\ }''