29 lines
600 B
C
29 lines
600 B
C
|
|
#include "utils.h"
|
||
|
|
|
||
|
|
// this just burns cycles.
|
||
|
|
// the volatile is important, it means that the cpu can't optimize any
|
||
|
|
// read/writes for the value
|
||
|
|
static inline void spin_loop(volatile uint16_t counts) {
|
||
|
|
while (counts)
|
||
|
|
counts--;
|
||
|
|
}
|
||
|
|
|
||
|
|
void delay_ms(uint16_t ms) {
|
||
|
|
while (ms) {
|
||
|
|
// this value was taken using a delay of 500ms, and just recording the led
|
||
|
|
// blinking. it seems to be high enough such that each loop of delay_loop
|
||
|
|
// takes 1ms :D
|
||
|
|
spin_loop((F_CPU) / 5000);
|
||
|
|
ms--;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void ft_bzero(void* data, uint16_t size) {
|
||
|
|
char* d = data;
|
||
|
|
while (size) {
|
||
|
|
*d = 0;
|
||
|
|
d++;
|
||
|
|
size--;
|
||
|
|
}
|
||
|
|
}
|