1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
/*
* Copyright (c) 2006, Benedikt Sauter <sauter@embedded-projects.net>
* All rights reserved.
*
* Short descripton of file:
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of the FH Augsburg nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef COMMON_H
#define COMMON_H
#include <inttypes.h>
#include <stdbool.h>
enum signals {PIN_NONE,PIN_IN,PIN_OUT,PIN_TRI,
PIN_AD,PIN_RX,PIN_TX,
PIN_SS,PIN_SCK,PIN_MISO,PIN_MOSI,
PIN_SCL,PIN_SDA,PIN_PWM,
PIN_UART,PIN_CAN};
#ifdef __AVR_AT90CAN128__
#define OCTOPUS_CAN
#endif
//#define OCTOPUS_RELAIS
#define DEBUG 1
#define F_CPU 16000000UL
#define STATUS_LED_PIN PB7
#define STATUS_LED_PORT PORTB
/* red status led */
#ifndef OCTOPUS_RELAIS
#define STATUS_LED_on (STATUS_LED_PORT |= (1 << STATUS_LED_PIN))
#define STATUS_LED_off (STATUS_LED_PORT &= ~(1 << STATUS_LED_PIN))
#else
#define STATUS_LED_on (1);
#define STATUS_LED_off (1);
#endif
volatile struct octopus_t
{
volatile unsigned char latency_timer;
volatile unsigned char status_led;
uint8_t ports[43];
volatile char * msg[20];
volatile int datatogl;
volatile unsigned int long_rx_cmd;
volatile unsigned int long_rx_index;
volatile unsigned int long_rx_bytes;
volatile unsigned int long_index;
volatile unsigned int long_bytes;
volatile unsigned int long_running;
} octopus;
void CommandAnswer(unsigned int length);
void CommandAnswerRest (void);
void USBCommandRX(char *buf);
void USBMessageIn(char *buf);
volatile unsigned char answer[320];
volatile unsigned char request[320];
void common_latency_timer_init(void);
void common_scheduler(void);
void common_scheduler_add(int id,void(*userFunc)(void));
void common_parser(char *buf);
void common_init(void);
void common_hwdesc(void);
#endif //COMMON_H
|