mirror of
https://github.com/SemvdH/OBD2-car-display.git
synced 2025-12-15 04:01:04 +00:00
Add start of TC and design for init image
This commit is contained in:
@@ -71,79 +71,36 @@ void on_init_enter()
|
|||||||
void on_init_run()
|
void on_init_run()
|
||||||
{
|
{
|
||||||
Serial.println("Running!");
|
Serial.println("Running!");
|
||||||
if (!flag)
|
|
||||||
{
|
|
||||||
flag = 1;
|
|
||||||
main_color = ~main_color;
|
|
||||||
// display.clrScr();
|
|
||||||
if (main_color)
|
|
||||||
{
|
|
||||||
display.setColor(VGA_RED);
|
|
||||||
display.fillCircle(10,20,100);
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
display.setColor(VGA_TEAL);
|
|
||||||
display.fillCircle(30,50,131);
|
|
||||||
}
|
|
||||||
display.setColor(VGA_AQUA);
|
|
||||||
display.setBackColor(0,0,0);
|
|
||||||
text_temp[0] = init_text[init_text_i];
|
|
||||||
display.print(text_temp, init_text_x, LCD_H / 2);
|
|
||||||
init_text_x += display.getFontXsize();
|
|
||||||
init_text_i++;
|
|
||||||
if (init_text_i > 14)
|
|
||||||
{
|
|
||||||
init_text_i = 0;
|
|
||||||
display.clrScr();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void on_init_exit()
|
void on_init_exit()
|
||||||
{
|
{
|
||||||
Serial.println("Exiting init state!");
|
Serial.println("Exiting init state!");
|
||||||
flag = 0;
|
|
||||||
main_color = 0;
|
|
||||||
display.clrScr();
|
display.clrScr();
|
||||||
}
|
}
|
||||||
|
|
||||||
void on_main_enter()
|
void on_main_enter()
|
||||||
{
|
{
|
||||||
obd2_timer_reset();
|
obd2_RTT_reset();
|
||||||
Serial.println("Entering main loop");
|
Serial.println("Entering main loop");
|
||||||
obd2_timer_set_period(800);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void on_main_run()
|
void on_main_run()
|
||||||
{
|
{
|
||||||
if (!flag)
|
|
||||||
{
|
|
||||||
led_state = ~led_state;
|
|
||||||
digitalWrite(LED_BUILTIN, led_state);
|
|
||||||
flag = 1;
|
|
||||||
main_color = ~main_color;
|
|
||||||
if (main_color)
|
|
||||||
display.setColor(255, 0, 166);
|
|
||||||
else
|
|
||||||
display.setColor(78, 181, 72);
|
|
||||||
display.fillRect(LCD_W / 2 - 200, LCD_H / 2 - 100, LCD_W / 2 + 200, LCD_H / 2 + 100);
|
|
||||||
display.setColor(0, 247, 255);
|
|
||||||
display.print("OBD2 display yeet", CENTER, LCD_H / 2);
|
|
||||||
#if (DEBUG == 1)
|
|
||||||
Serial.println("switching led");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RTT_Handler()
|
void RTT_Handler()
|
||||||
{
|
{
|
||||||
flag = 0;
|
flag = 0;
|
||||||
obd2_timer_reset();
|
obd2_RTT_reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/* TODO change for TRNG (section 42 of datasheet)*/
|
||||||
randomSeed(analogRead(0));
|
randomSeed(analogRead(0));
|
||||||
|
|
||||||
#if (DEBUG == 1)
|
#if (DEBUG == 1)
|
||||||
@@ -162,7 +119,7 @@ void setup()
|
|||||||
|
|
||||||
pinMode(LED_BUILTIN, OUTPUT);
|
pinMode(LED_BUILTIN, OUTPUT);
|
||||||
|
|
||||||
obd2_timer_init();
|
obd2_RTT_init();
|
||||||
statemachine_register_state(&init_state, STATE_INIT);
|
statemachine_register_state(&init_state, STATE_INIT);
|
||||||
statemachine_register_state(&main_state, STATE_CAR_INFO);
|
statemachine_register_state(&main_state, STATE_CAR_INFO);
|
||||||
statemachine_init();
|
statemachine_init();
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
#include "sam3xa/include/sam3x8e.h"
|
|
||||||
#include "sam3xa/include/component/component_rtt.h"
|
|
||||||
// #include "sam3xa/include/component/component_rtt.h"
|
|
||||||
// #include "sam3xa/include/sam3x8e.h"
|
|
||||||
#include "obd2_timer.h"
|
#include "obd2_timer.h"
|
||||||
|
|
||||||
void obd2_timer_init(void)
|
void obd2_RTT_init(void)
|
||||||
{
|
{
|
||||||
/* enable the timer: reset the RTT
|
/* enable the timer: reset the RTT
|
||||||
RTT->RTT_MR = RTT_MR_RTTRST;
|
RTT->RTT_MR = RTT_MR_RTTRST;
|
||||||
@@ -12,16 +8,16 @@ void obd2_timer_init(void)
|
|||||||
RTT->RTT_AR = 0;
|
RTT->RTT_AR = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void obd2_timer_enable()
|
void obd2_RTT_enable()
|
||||||
{
|
{
|
||||||
/* enable the alarm interrupt*/
|
/* enable the alarm interrupt and set the prescaler to the processor frequency to generate an interrupt every second*/
|
||||||
RTT->RTT_MR |= RTT_MR_ALMIEN;
|
RTT->RTT_MR |= RTT_MR_ALMIEN | RTT_MR_RTPRES(CLOCK_FREQ);
|
||||||
|
|
||||||
/* enable the interrupt*/
|
/* enable the interrupt*/
|
||||||
NVIC_EnableIRQ(RTT_IRQn);
|
NVIC_EnableIRQ(RTT_IRQn);
|
||||||
}
|
}
|
||||||
|
|
||||||
void obd2_timer_reset()
|
void obd2_RTT_reset()
|
||||||
{
|
{
|
||||||
/* To prevent several executions of the interrupt handler,
|
/* To prevent several executions of the interrupt handler,
|
||||||
the interrupt must be disabled in the interrupt handler
|
the interrupt must be disabled in the interrupt handler
|
||||||
@@ -41,8 +37,14 @@ void obd2_timer_reset()
|
|||||||
RTT->RTT_MR |= RTT_MR_RTTRST;
|
RTT->RTT_MR |= RTT_MR_RTTRST;
|
||||||
}
|
}
|
||||||
|
|
||||||
void obd2_timer_set_period(__UINT32_TYPE__ period)
|
void obd2_RTT_set_period(__UINT32_TYPE__ period)
|
||||||
{
|
{
|
||||||
/* set the prescaler value equal to the clock speed divided by how many milliseconds*/
|
/* set the prescaler value equal to the clock speed divided by how many milliseconds*/
|
||||||
RTT->RTT_MR |= RTT_MR_RTPRES(CLOCK_FREQ / (1000/period));
|
RTT->RTT_MR |= RTT_MR_RTPRES(CLOCK_FREQ / (1000/period));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void obd2_TC_init()
|
||||||
|
{
|
||||||
|
/* enable the timer/counter 0*/
|
||||||
|
TC0->TC_CHANNEL[0].TC_CCR |= TC_CCR_CLKEN;
|
||||||
|
}
|
||||||
|
|||||||
@@ -10,10 +10,12 @@ extern "C"
|
|||||||
|
|
||||||
#define CLOCK_FREQ 32768
|
#define CLOCK_FREQ 32768
|
||||||
|
|
||||||
void obd2_timer_init();
|
void obd2_RTT_init();
|
||||||
void obd2_timer_reset();
|
void obd2_RTT_reset();
|
||||||
void obd2_timer_enable();
|
void obd2_RTT_enable();
|
||||||
void obd2_timer_set_period(__UINT32_TYPE__ period);
|
void obd2_RTT_set_period(__UINT32_TYPE__ period);
|
||||||
|
|
||||||
|
void obd2_TC_init();
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
img/design_init_display.png
Normal file
BIN
img/design_init_display.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 75 KiB |
@@ -21,3 +21,10 @@
|
|||||||
- [Product link](https://www.tinytronics.nl/shop/en/displays/tft/3.5-inch-tft-display-320*480-pixels-mega-compatible-ili9486)
|
- [Product link](https://www.tinytronics.nl/shop/en/displays/tft/3.5-inch-tft-display-320*480-pixels-mega-compatible-ili9486)
|
||||||
- [UTFT library](http://www.rinkydinkelectronics.com/library.php?id=51)
|
- [UTFT library](http://www.rinkydinkelectronics.com/library.php?id=51)
|
||||||
- [SdFat library](https://github.com/greiman/SdFat)
|
- [SdFat library](https://github.com/greiman/SdFat)
|
||||||
|
|
||||||
|
|
||||||
|
## Design
|
||||||
|
|
||||||
|
### INIT display
|
||||||
|

|
||||||
|
red = animation, yellow is order of appearance
|
||||||
Reference in New Issue
Block a user