blob: 04e27a6197633af40686e6068f1d6d86d62e1787 (
plain) (
blame)
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
|
#include <xc.h>
#include "t6963c_specific.h"
#include "t6963c/t6963c.h"
void init_clock(void) {
// CPDIV 1:1; RCDIV FRC/2; DOZE 1:8; G1CLKSEL disabled; DOZEN disabled; ROI disabled;
CLKDIV = 0x3100;
// GCLKDIV 1;
CLKDIV2 = 0x0000;
}
void init_pins(void) {
LATB = 0x00;
TRISB = 0xFFFF;
LATC = 0x00;
TRISC = 0xF000;
LATD = 0x00;
TRISD = 0x0AFF;
LATE = 0x00;
TRISE = 0xFF;
LATF = 0x00;
TRISF = 0xBB;
LATG = 0x00;
TRISG = 0x038C;
/****************************************************************************
* Setting the Analog/Digital Configuration SFR
***************************************************************************/
ANSB = 0x3F;
ANSC = 0x6000;
ANSD = 0xC0;
ANSF = 0x01;
ANSG = 0x00;
/****************************************************************************
* Set the PPS
***************************************************************************/
__builtin_write_OSCCONL(OSCCON & 0xbf); // unlock PPS
RPOR1bits.RP2R = 0x03; // RD8->UART1:U1TX
RPINR18bits.U1RXR = 0x04; // RD9->UART1:U1RX
RPOR1bits.RP3R = 0x04; // RD10->UART1:U1RTS
RPINR18bits.U1CTSR = 0x0C; // RD11->UART1:U1CTS
RPOR10bits.RP21R = 0x07; // RG6->SPI1:SDO1
RPINR20bits.SDI1R = 0x1A; // RG7->SPI1:SDI1
RPOR9bits.RP19R = 0x08; // RG8->SPI1:SCK1OUT
RPOR13bits.RP27R = 0x09; // RG9->SPI1:SS1OUT
__builtin_write_OSCCONL(OSCCON | 0x40); // lock PPS
}
void init_lcd(void) {
t6963c_init();
t6963c_clear();
}
void init_uart(void) {
// STSEL 1; IREN disabled; PDSEL 8N; UARTEN enabled; RTSMD disabled; RXINV disabled; USIDL disabled; WAKE disabled; ABAUD disabled; LPBACK disabled; BRGH enabled; UEN TX_RX;
U1MODE = 0x8008;
// OERR NO_ERROR_cleared; UTXISEL0 TX_ONE_CHAR; URXISEL RX_ONE_CHAR; UTXBRK COMPLETED; UTXEN disabled; ADDEN disabled; UTXINV disabled;
U1STA = 0x0000;
// U1TXREG 0x0000;
U1TXREG = 0x0000;
// U1RXREG 0x0000;
U1RXREG = 0x0000;
// Baud Rate = 115200; BRG 34;
U1BRG = 0x0022;
}
void init(void) {
init_clock();
init_pins();
init_lcd();
}
|