agileRTOS (zrtos)  Version 0.8.0 (ghostbuster)
avr_software_emulator.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2024 ykat UG (haftungsbeschraenkt) - All Rights Reserved
3  *
4  * Permission for non-commercial use is hereby granted,
5  * free of charge, without warranty of any kind.
6  */
7 #ifndef ZRTOS_BOARD_AVR_SOFTWARE_EMULATOR_H
8 #define ZRTOS_BOARD_AVR_SOFTWARE_EMULATOR_H
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
13 
14 #if defined(ZRTOS_BOARD__AVR_SOFTWARE_EMULATOR) || defined(__DOXYGEN__)
15 #define ZRTOS_BOARD__FOUND
16 
17 
18 #include <avr/interrupt.h>
19 #include <avr/wdt.h>
20 
21 
22 #define ZRTOS_BOARD__TICK_PERIOD_MS 1
23 
26  // Clear registers
27  TCCR1A = 0;
28  TCCR1B = 0;
29  TCNT1 = 0;
30 
31  // 1000 Hz (16000000/((249+1)*64))
32  OCR1A = 249;
33  // CTC
34  TCCR1B |= (1 << WGM12);
35  // Prescaler 64
36  TCCR1B |= (1 << CS11) | (1 << CS10);
37  // Output Compare Match A Interrupt Enable
38  TIMSK1 |= (1 << OCIE1A);
40 }
41 
44  TIMSK1 &= ~(1 << OCIE1A);
46 }
47 
48 ISR(TIMER1_COMPA_vect,ISR_NAKED){
51  //avr/time.h system_tick();
55 }
56 
57 #define ZRTOS_BOARD__WATCH_DOG_START() \
58  wdt_enable(WDTO_8S);
59 
60 #define ZRTOS_BOARD__WATCH_DOG_STOP() \
61  wdt_disable();
62 
63 #define ZRTOS_BOARD__WATCH_DOG_RESET() \
64  wdt_reset();
65 
66 ISR(WDT_vect,ISR_NAKED){
68 }
69 
70 #endif
71 
72 
73 #ifdef __cplusplus
74 }
75 #endif
76 #endif
#define ZRTOS_ARCH__DISABLE_INTERRUPTS()
Definition: atmega2560.h:44
#define ZRTOS_ARCH__FATAL()
Definition: atmega2560.h:30
#define ZRTOS_ARCH__SAVE_CPU_STATE()
Definition: atmega2560.h:195
#define ZRTOS_ARCH__LOAD_CPU_STATE()
Definition: atmega2560.h:245
void(* zrtos_board__on_tick_naked)(void)
Definition: board.h:34
#define ZRTOS_ARCH__RETURN_FROM_INTERRUPT()
Definition: atmega2560.h:293
ISR(TIMER1_COMPA_vect, ISR_NAKED)
void zrtos_board__stop_tick_timer(void)
#define ZRTOS_ARCH__ENABLE_INTERRUPTS()
Definition: atmega2560.h:47
void(* zrtos_board__on_tick)(void)
Definition: board.h:33
void zrtos_board__start_tick_timer(void)