#include #include #include #define __ASSERT_USE_STDERR #include #include "uart.h" #define BLINK_DELAY_MS 100 int main (void) { /* set pin 3 of PORTA for output*/ DDRA |= _BV(DDA3); /* Init error console as stderr in UART3 and print user code info */ uart3_init(); stderr = &uart3_out; fprintf(stderr, "Version: %s built on: %s %s\n", GIT_DESCR, __DATE__, __TIME__); fprintf(stderr, "avr-libc version: %s\n", __AVR_LIBC_VERSION_STRING__); /*End UART3 init and info print */ /* Test assert - REMOVE IN FUTURE LABS */ char *array; uint32_t i = 1; extern int __heap_start, *__brkval; int v; array = malloc( i * sizeof(char)); assert(array); /* End test assert */ while (1) { /* set pin 3 high to turn led on */ PORTA |= _BV(PORTA3); _delay_ms(BLINK_DELAY_MS); /* Test assert - REMOVE IN FUTURE LABS */ /* Increase memory allocated for array by 100 chars * until we have eaten it all and print space between Stack and Heap. * Thats how assert works in run-time */ array = realloc( array, (i++ * 100) * sizeof(char)); fprintf(stderr, "%d ", (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval)); assert(array); /* End test assert */ /* set pin 3 low to turn led off */ PORTA &= ~_BV(PORTA3); _delay_ms(BLINK_DELAY_MS); } }