return dest;\r
}\r
\r
+void num_to_bytes(uint64_t n, size_t len, byte_t* dest)\r
+{\r
+ while (len--) {\r
+ dest[len] = (byte_t) n;\r
+ n >>= 8;\r
+ }\r
+}\r
+\r
+uint64_t bytes_to_num(byte_t* src, size_t len)\r
+{\r
+ uint64_t num = 0;\r
+ while (len--)\r
+ {\r
+ num = (num << 8) | (*src);\r
+ src++;\r
+ }\r
+ return num;\r
+}\r
\r
void LEDsoff()\r
{\r
return BUTTON_NO_CLICK;\r
\r
// Borrow a PWM unit for my real-time clock\r
- PWM_ENABLE = PWM_CHANNEL(0);\r
+ AT91C_BASE_PWMC->PWMC_ENA = PWM_CHANNEL(0);\r
// 48 MHz / 1024 gives 46.875 kHz\r
- PWM_CH_MODE(0) = PWM_CH_MODE_PRESCALER(10);\r
- PWM_CH_DUTY_CYCLE(0) = 0;\r
- PWM_CH_PERIOD(0) = 0xffff;\r
+ AT91C_BASE_PWMC_CH0->PWMC_CMR = PWM_CH_MODE_PRESCALER(10);\r
+ AT91C_BASE_PWMC_CH0->PWMC_CDTYR = 0;\r
+ AT91C_BASE_PWMC_CH0->PWMC_CPRDR = 0xffff;\r
\r
- WORD start = (WORD)PWM_CH_COUNTER(0);\r
+ WORD start = AT91C_BASE_PWMC_CH0->PWMC_CCNTR;\r
\r
int letoff = 0;\r
for(;;)\r
{\r
- WORD now = (WORD)PWM_CH_COUNTER(0);\r
+ WORD now = AT91C_BASE_PWMC_CH0->PWMC_CCNTR;\r
\r
// We haven't let off the button yet\r
if (!letoff)\r
letoff = 1;\r
\r
// reset our timer for 500ms\r
- start = (WORD)PWM_CH_COUNTER(0);\r
+ start = AT91C_BASE_PWMC_CH0->PWMC_CCNTR;\r
ticks = (48000 * (500)) >> 10;\r
}\r
\r
return BUTTON_NO_CLICK;\r
\r
// Borrow a PWM unit for my real-time clock\r
- PWM_ENABLE = PWM_CHANNEL(0);\r
+ AT91C_BASE_PWMC->PWMC_ENA = PWM_CHANNEL(0);\r
// 48 MHz / 1024 gives 46.875 kHz\r
- PWM_CH_MODE(0) = PWM_CH_MODE_PRESCALER(10);\r
- PWM_CH_DUTY_CYCLE(0) = 0;\r
- PWM_CH_PERIOD(0) = 0xffff;\r
+ AT91C_BASE_PWMC_CH0->PWMC_CMR = PWM_CH_MODE_PRESCALER(10);\r
+ AT91C_BASE_PWMC_CH0->PWMC_CDTYR = 0;\r
+ AT91C_BASE_PWMC_CH0->PWMC_CPRDR = 0xffff;\r
\r
- WORD start = (WORD)PWM_CH_COUNTER(0);\r
+ WORD start = AT91C_BASE_PWMC_CH0->PWMC_CCNTR;\r
\r
for(;;)\r
{\r
- WORD now = (WORD)PWM_CH_COUNTER(0);\r
+ WORD now = AT91C_BASE_PWMC_CH0->PWMC_CCNTR;\r
\r
// As soon as our button let go, we didn't hold long enough\r
if (!BUTTON_PRESS())\r
int ticks = (48*us) >> 10;\r
\r
// Borrow a PWM unit for my real-time clock\r
- PWM_ENABLE = PWM_CHANNEL(0);\r
+ AT91C_BASE_PWMC->PWMC_ENA = PWM_CHANNEL(0);\r
// 48 MHz / 1024 gives 46.875 kHz\r
- PWM_CH_MODE(0) = PWM_CH_MODE_PRESCALER(10);\r
- PWM_CH_DUTY_CYCLE(0) = 0;\r
- PWM_CH_PERIOD(0) = 0xffff;\r
+ AT91C_BASE_PWMC_CH0->PWMC_CMR = PWM_CH_MODE_PRESCALER(10);\r
+ AT91C_BASE_PWMC_CH0->PWMC_CDTYR = 0;\r
+ AT91C_BASE_PWMC_CH0->PWMC_CPRDR = 0xffff;\r
\r
- WORD start = (WORD)PWM_CH_COUNTER(0);\r
+ WORD start = AT91C_BASE_PWMC_CH0->PWMC_CCNTR;\r
\r
for(;;) {\r
- WORD now = (WORD)PWM_CH_COUNTER(0);\r
+ WORD now = AT91C_BASE_PWMC_CH0->PWMC_CCNTR;\r
if (now == (WORD)(start + ticks))\r
return;\r
\r
/* Similar to FpgaGatherVersion this formats stored version information\r
* into a string representation. It takes a pointer to the struct version_information,\r
* verifies the magic properties, then stores a formatted string, prefixed by\r
- * prefix in dst.
+ * prefix in dst.\r
*/\r
void FormatVersionInformation(char *dst, int len, const char *prefix, void *version_information)\r
{\r