LIN_master  0.1
Arduino LIN master emulation with preemptive background operation
dual_LIN.ino
Go to the documentation of this file.
1 
10 // include files
11 #include "LIN_master1.h"
12 #include "LIN_master2.h"
13 #include "Tasks.h"
14 
15 // pin to demonstrate background operation
16 #define PIN_TOGGLE 30
17 
18 // task scheduler periods [ms]
19 #define LIN1_PERIOD 20
20 #define LIN2_PERIOD 20
21 
22 
23 void setup(void)
24 {
25  // show background operation
26  pinMode(PIN_TOGGLE, OUTPUT);
27 
28  // for debug
29  Serial.begin(115200); while(!Serial);
30 
31  // initialize LIN master (background operation)
32  LIN_master1.begin(19200, LIN_V2, true);
33  LIN_master2.begin(9600, LIN_V1, true);
34 
35  // init task scheduler (also required for LIN master emulation!)
36  Tasks_Init();
37  Tasks_Add((Task) sendMasterRequest1, LIN1_PERIOD, 0);
38  Tasks_Add((Task) sendMasterRequest2, LIN2_PERIOD, LIN1_PERIOD/2);
39  Tasks_Start();
40 
41 } // setup()
42 
43 
44 
45 void loop(void)
46 {
47  // toggle pin to show background operation
48  digitalWrite(PIN_TOGGLE, !digitalRead(PIN_TOGGLE));
49 
50 } // loop()
51 
52 
53 
54 // send master request via Serial1
55 void sendMasterRequest1(void)
56 {
57  // assemble frame data
58  static uint8_t count=0;
59  uint8_t id = 0x05;
60  uint8_t lenData = 8;
61  uint8_t data[8];
62  memset(data, count++, lenData);
63 
64  // send master request
65  LIN_master1.sendMasterRequest(id, lenData, data);
66 
67 } // sendMasterRequest1()
68 
69 
70 
71 // send master request via Serial2
72 void sendMasterRequest2(void)
73 {
74  // assemble frame data
75  static uint8_t count=127;
76  uint8_t id = 0x11;
77  uint8_t lenData = 8;
78  uint8_t data[8];
79  memset(data, count++, lenData);
80 
81  // send master request
82  LIN_master2.sendMasterRequest(id, lenData, data);
83 
84 } // sendMasterRequest2()
void begin(uint16_t Baudrate, LIN_version_t Version, bool Background)
setup UART and LIN framework
Definition: LIN_master.cpp:24
LIN master emulation library for Serial2.
LIN master emulation library for Serial1.
LIN protocol version 2.
Definition: LIN_master.h:51
LIN_error_t sendMasterRequest(uint8_t id, uint8_t numData, uint8_t *data)
send a master request frame
Definition: LIN_master.cpp:146
LIN_Master_1 LIN_master1
instance of LIN master via Serial1
Definition: LIN_master1.cpp:17
LIN_Master_2 LIN_master2
instance of LIN master via Serial2
Definition: LIN_master2.cpp:17
LIN protocol version 1.
Definition: LIN_master.h:50