int main(void) { // turn on the serial port for debugging or for other USART reasons. xSerialPort = xSerialPortInitMinimal( USART0, 115200, 1, 1); // serial port: WantedBaud, TxQueueLength, RxQueueLength (8n1) avrSerialxPrint_P(&xSerialPort, PSTR("\r\n\n\nHello World!\r\n")); // Ok, so we're alive... xTaskCreate( TaskBlinkRedLED , (const signed portCHAR *)"RedLED" // Main Arduino Mega 2560, Freetronics EtherMega (Red) LED Blink , 256 // Tested 9 free @ 208 , NULL , 3 , NULL ); // */ xTaskCreate( TaskBlinkGreenLED , (const signed portCHAR *)"GreenLED" // Main Arduino Uno 328p (Green) LED Blink , 256 // Tested 9 free @ 208 , NULL , 3 , NULL ); // */ avrSerialxPrintf_P(&xSerialPort, PSTR("Free Heap Size: %u\r\n"), xPortGetFreeHeapSize() ); // needs heap_1 or heap_2 for this function to succeed. vTaskStartScheduler(); avrSerialxPrint_P(&xSerialPort, PSTR("\r\n\n\nGoodbye... no space for idle task!\r\n")); // Doh, so we're dead... }
int main(void) { // turn on the serial port for setting or querying the time . xSerialPort = xSerialPortInitMinimal( USART0, 115200, portSERIAL_BUFFER_TX, portSERIAL_BUFFER_RX); // serial port: WantedBaud, TxQueueLength, RxQueueLength (8n1) // Memory shortages mean that we have to minimise the number of // threads, hence there are no longer multiple threads using a resource. // Still, semaphores are useful to stop a thread proceeding, where it should be stopped because it is using a resource. if( xADCSemaphore == NULL ) // Check to see if the ADC semaphore has not been created. { xADCSemaphore = xSemaphoreCreateBinary(); // binary semaphore for ADC - Don't sample temperature when hands are moving (voltage droop). if( ( xADCSemaphore ) != NULL ) xSemaphoreGive( ( xADCSemaphore ) ); // make the ADC available } // initialise I2C master interface, need to do this once only. // If there are two I2C processes, then do it during the system initiation. I2C_Master_Initialise((ARDUINO<<I2C_ADR_BITS) | (pdTRUE<<I2C_GEN_BIT)); avrSerialxPrint_P(&xSerialPort, PSTR("\r\nHello World!\r\n")); // Ok, so we're alive... xTaskCreate( TaskWriteLCD , (const portCHAR *)"WriteLCD" , 192 , NULL , 2 , NULL ); // */ xTaskCreate( TaskWriteRTCRetrograde , (const portCHAR *)"WriteRTCRetrograde" , 120 , NULL , 1 , &xTaskWriteRTCRetrograde ); // */ xTaskCreate( TaskMonitor , (const portCHAR *)"SerialMonitor" , 256 , NULL , 3 , NULL ); // */ avrSerialPrintf_P(PSTR("\r\nFree Heap Size: %u\r\n"), xPortGetFreeHeapSize() ); // needs heap_1, heap_2 or heap_4 for this function to succeed. vTaskStartScheduler(); avrSerialPrint_P(PSTR("\r\n\nGoodbye... no space for idle task!\r\n")); // Doh, so we're dead... #if defined (portHD44780_LCD) lcd_Locate (0, 1); lcd_Print_P(PSTR("DEAD BEEF!")); #endif }