📄 gyrobot.c
字号:
#define ENABLE_BIT_DEFINITIONS
#include "avrx-io.h"
#include "avrx-signal.h"
#include "avrx.h"
#include "hardware.h"
#include "Gyro_eeprom.h"
#ifdef _MONITOR_
AVRX_GCC_TASK(Monitor, 16, 0); // External task (AvrX Debug monitor)
void InitSerialIO(unsigned char);
#endif
AVRX_EXTERNTASK(MotorTask); // MotorTask.c
AVRX_EXTERNTASK(LcdTask); // LcdTask.c
AVRX_EXTERNTASK(SensorTask);
AVRX_SIGINT(SIG_OVERFLOW0) // System clock
{
IntProlog();
TCNT0 = TCNT0_INIT;
AvrXTimerHandler();
Epilog();
}
/*
Main initialization and starting of AvrX tasks
*/
int main(void)
{
AvrXSetKernelStack(0);
// Initialize Hardware
outp(MCUCR_INIT, MCUCR); // See harware.h
outp(TCNT0_INIT, TCNT0);
outp(TCCR0_INIT, TCCR0);
outp(TIMSK_INIT, TIMSK);
outp(GIMSK_INIT, GIMSK);
outp(TCCR1A_INIT, TCCR1A);
outp(TCCR1B_INIT, TCCR1B);
outp(PORTA_INIT, PORTA);
outp(DDRA_INIT, DDRA);
outp(PORTB_INIT, PORTB);
outp(DDRB_INIT, DDRB);
outp(PORTC_INIT, PORTC);
outp(DDRC_INIT, DDRC);
outp(PORTD_INIT, PORTD);
outp(DDRD_INIT, DDRD);
// Initialize tasks
AvrXRunTask(TCB(MotorTask));
AvrXRunTask(TCB(LcdTask));
AvrXRunTask(TCB(SensorTask));
#ifdef _MONITOR_
InitSerialIO(UBRR_INIT);
AvrXRunTask(TCB(Monitor));
#endif
AvrXSetSemaphore(&EEPromMutex);
(void)ValidateEEPROM();
// Jump to first task
Epilog();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -