summaryrefslogtreecommitdiff
path: root/firmware/main.c
diff options
context:
space:
mode:
authorCamil Staps2016-08-22 22:21:37 +0200
committerCamil Staps2016-08-22 22:21:37 +0200
commitde5e94a6b1a8f95aa6b10e0c8ee26b79b0772ebc (patch)
tree9c9ba025b7a3cbbb7be1b860f164702e17af0aa7 /firmware/main.c
Initial commit; t6963c + blink an led
Diffstat (limited to 'firmware/main.c')
-rw-r--r--firmware/main.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/firmware/main.c b/firmware/main.c
new file mode 100644
index 0000000..d85cfe1
--- /dev/null
+++ b/firmware/main.c
@@ -0,0 +1,52 @@
+#include <xc.h>
+#include "t6963c_specific.h"
+#include "t6963c/t6963c.h"
+
+// CONFIG1
+#pragma config WPCFG = WPCFGDIS // Write Protect Configuration Page Select->Last page (at the top of program memory) and Flash Configuration Words are not write-protected
+#pragma config WPDIS = WPDIS // Segment Write Protection Disable->Segmented code protection is disabled
+#pragma config WPFP = WPFP255 // Write Protection Flash Page Segment Boundary->Highest Page (same as page 170)
+#pragma config SOSCSEL = EC // Secondary Oscillator Power Mode Select->External clock (SCLKI) or Digital I/O mode(
+#pragma config ALTPMP = ALPMPDIS // Alternate PMP Pin Mapping->EPMP pins are in default location mode
+#pragma config WPEND = WPENDMEM // Segment Write Protection End Page Select->Protected code segment upper boundary is at the last page of program memory; the lower boundary is the code page specified by WPFP
+#pragma config WUTSEL = LEG // Voltage Regulator Wake-up Time Select->Default regulator start-up time is used
+
+// CONFIG2
+#pragma config POSCMOD = NONE // Primary Oscillator Select->Primary oscillator is disabled
+#pragma config FCKSM = CSDCMD // Clock Switching and Fail-Safe Clock Monitor->Clock switching and Fail-Safe Clock Monitor are disabled
+#pragma config OSCIOFNC = ON // OSCO Pin Configuration->OSCO/CLKO/RC15 functions as port I/O (RC15)
+#pragma config PLL96MHZ = ON // 96MHz PLL Startup Select->96 MHz PLL is enabled automatically on start-up
+#pragma config PLLDIV = NODIV // 96 MHz PLL Prescaler Select->Oscillator input is used directly (4 MHz input)
+#pragma config IOL1WAY = ON // IOLOCK One-Way Set Enable->The IOLOCK bit (OSCCON<6>) can be set once, provided the unlock sequence has been completed. Once set, the Peripheral Pin Select registers cannot be written to a second time.
+#pragma config FNOSC = FRCPLL // Initial Oscillator Select->Fast RC Oscillator with Postscaler and PLL module (FRCPLL)
+#pragma config IESO = ON // Internal External Switchover->IESO mode (Two-Speed Start-up) is enabled
+
+// CONFIG1
+#pragma config WDTPS = PS32768 // Watchdog Timer Postscaler->1:32,768
+#pragma config GCP = OFF // General Segment Code Protect->Code protection is disabled
+#pragma config FWDTEN = OFF // Watchdog Timer->Watchdog Timer is disabled
+#pragma config ICS = PGx1 // Emulator Pin Placement Select bits->Emulator functions are shared with PGEC1/PGED1
+#pragma config WINDIS = OFF // Windowed WDT->Standard Watchdog Timer enabled,(Windowed-mode is disabled)
+#pragma config JTAGEN = OFF // JTAG Port Enable->JTAG port is disabled
+#pragma config FWPSA = PR128 // WDT Prescaler->Prescaler ratio of 1:128
+#pragma config GWRP = OFF // General Segment Write Protect->Writes to program memory are allowed
+
+void init(void) {
+ // CPDIV 1:1; RCDIV FRC/2; DOZE 1:8; G1CLKSEL disabled; DOZEN disabled; ROI disabled;
+ CLKDIV = 0x3100;
+ // GCLKDIV 1;
+ CLKDIV2 = 0x0000;
+
+ t6963c_init();
+}
+
+int main(void) {
+ TRISBbits.TRISB0 = 0;
+ while (1) {
+ delay_ns(1000);
+ LATBbits.LATB0 = 0;
+ delay_ns(100);
+ LATBbits.LATB0 = 1;
+ }
+ return 0;
+}