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
|
/*
*
* RepRap, The Replicating Rapid Prototyper Project
*
* http://reprap.org/
*
* RepRap is copyright (C) 2005-6 University of Bath, the RepRap
* researchers (see the project's People webpage), and other contributors.
*
* RepRap is free; you can redistribute it and/or modify it under the
* terms of the GNU Library General Public Licence as published by the
* Free Software Foundation; either version 2 of the Licence, or (at your
* option) any later version.
*
* RepRap is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
* Licence for more details.
*
* For this purpose the words "software" and "library" in the GNU Library
* General Public Licence are taken to mean any and all computer programs
* computer files data results documents and other copyright information
* available from the RepRap project.
*
* You should have received a copy of the GNU Library General Public
* Licence along with RepRap (in reports, it will be one of the
* appendices, for example); if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA, or see
*
* http://www.gnu.org/
*
*/
#include "iobox.h"
#include "serial.h"
typedef unsigned int config;
config at 0x2007 __CONFIG = _CP_OFF &
_WDT_OFF &
_BODEN_OFF &
_PWRTE_ON &
_INTRC_OSC_NOCLKOUT &
_MCLRE_OFF &
_LVP_OFF;
byte deviceAddress = PORT;
static void isr() interrupt 0 {
serialInterruptHandler();
}
void init1()
{
OPTION_REG = BIN(11011111); // Disable TMR0 on RA4, 1:128 WDT
CMCON = 0xff; // Comparator module defaults
TRISA = BIN(11111111); // Port A all inputs
TRISB = BIN(00000110); // Port B all outputs except comms lines
PIE1 = BIN(00000000); // All peripheral interrupts initially disabled
INTCON = BIN(00000000); // Interrupts disabled
PIR1 = 0; // Clear peripheral interrupt flags
SPBRG = 12; // 12 = 19200 (actually 19230) baud @ 4MHz
TXSTA = BIN(00000100); // 8 bit high speed
RCSTA = BIN(10000000); // Enable port for 8 bit receive
RCIE = 1; // Enable receive interrupts
CREN = 1; // Start reception
TXEN = 1; // Enable transmit
PEIE = 1; // Peripheral interrupts on
GIE = 1; // Now turn on interrupts
PORTB = 0;
PORTA = 0;
}
void main() {
init1();
init2();
serial_init();
// Clear up any boot noise from the TSR
uartTransmit(0);
for(;;) {
waitForPacket();
processCommand();
releaseLock();
}
}
|