/************************************************************************/ /* */ /* File: blink.c */ /* Description: the "hello world" for armen OS */ /* Version: 1.0 */ /* Author: Otto Mattik */ /* */ /* (C)Copyright Otto Mattik 2021. */ /* */ /* This file is distributed under the CeCILL-V2.1 licence. */ /* For more details, please visit the website cecill.info */ /* */ /************************************************************************/ #include "armen.h" #ifndef ARDUINO #error "no or unaivalable mcu defined" #endif /* * schematic: * +---+ * P12 >----|220|----+ * +---+ | * --- * LED2 \ / * ----- * | * --- * GND */ #if defined(__AVR_ATmega2560__) #define PIN_LED1 GPIO15 /* mega P13 (onboard led) */ #define PIN_LED2 GPIO14 /* mega P12 */ #else #define PIN_LED1 GPIO5 /* uno P13 (onboard led) */ #define PIN_LED2 GPIO4 /* uno P12 */ #endif #ifdef DEBUG extern void uart_printf( uint8_t, char*, ... ); #endif /* * 1st thread */ void* led1( void* param ) { for( ;; ) { sleep( 1000 ); gpio_pin_set( PIN_LED1, 1 - gpio_pin_get( PIN_LED1 ) ); } } /* * 2nd thread */ void* led2( void* param ) { for( ;; ) { sleep( 1400 ); gpio_pin_set( PIN_LED2, 1 - gpio_pin_get( PIN_LED2 ) ); } } /* * initialization */ void setup( void ) { #ifdef DEBUG uart_open( 0, B115200 ); #endif gpio_pin_mode( PIN_LED1, GPIO_OUTPUT, GPIO_LOW ); gpio_pin_mode( PIN_LED2, GPIO_OUTPUT, GPIO_LOW ); } /* * program entry point */ void main( void ) { armen_start( ); setup( ); /* run 2nd thread */ thread_create( led2, (void*)0 ); /* run 1st thread */ led1( (void*)0 ); }