Rev 133 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#include <avr/io.h>#include <avr/wdt.h>#include <avr/interrupt.h>#include <string.h>#include <util/delay.h>#include <stdlib.h>#include "avrutil.h"uint32_t millis(void) {return systime;}inline uint8_t map_8(uint8_t x, uint8_t in_min, uint8_t in_max, uint8_t out_min, uint8_t out_max) {return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;}inline void delay_ms(uint16_t count) {while(count--)_delay_ms(1);}void pulsePin(uint8_t port, uint8_t pin, uint16_t count) {sbi(port, pin);delay_ms(count);cbi(port, pin);}void systemLed(uint8_t state) {if (state)sbi(PORTA, PA0);elsecbi(PORTA, PA0);}char* tick_addr;void sysclockInit(void) {TIMSK0 = (1<<TOIE0); // Eable timer overflow for Timer0TCCR0B = (1 << CS00) ; // /1 prescalerTCNT0 = 0x00; // Set Timer0 to 0}void swap_u8(uint8_t* a, uint8_t* b) {uint8_t t = *b;*b = *a;*a = t;}void swap_u16(uint16_t* a, uint16_t* b) {uint16_t t = *b;*b = *a;*a = t;}/** Convert from a uint32 to BCD* Use like:* uint8_t[10] values; itobcd(ui32num, values);* values will be an array with BCD digits* returned value will be how many digits used*/uint8_t itobcd(uint32_t val, uint8_t *result) {char BCD_text[10]; // max 10 digits on uint32uint8_t i = 0;itoa(val, BCD_text, 10);while(BCD_text[i]) {result[i] = BCD_text[i]-'0';i++;}return i;}