From 35d19270a62063f85b842d5df2981e8a88b21bd9 Mon Sep 17 00:00:00 2001 From: RossTheRoss Date: Sun, 9 Feb 2020 11:30:30 -0600 Subject: redo? --- Lab_2B.X/lab2b_c.c | 85 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 44 insertions(+), 41 deletions(-) (limited to 'Lab_2B.X/lab2b_c.c') diff --git a/Lab_2B.X/lab2b_c.c b/Lab_2B.X/lab2b_c.c index 21fdcba..7992b5b 100644 --- a/Lab_2B.X/lab2b_c.c +++ b/Lab_2B.X/lab2b_c.c @@ -36,73 +36,76 @@ int main(void) { } void writeColor(int r, int g, int b) { + int i = 0; LATA = 0x0000; wait_100us(); - - for (int i = 0; i < 8; i++){ + while (i < 8) { if (r & 1) { write_1(); } else { write_0(); } r >> 1; + ++i; } - for (int j = 0; j < 8; j++){ + while (i > 0) { if (g & 1) { write_1(); } else { write_0(); } - g >> 1; + g >> 1; + --i; } - for (int k = 0; k < 8; k++){ + while (i < 8){ if (b & 1) { write_1(); } else { write_0(); } b >> 1; + ++i; } } void loop(void) { while (1) { - LATA = 0x0000; - wait_100us(); +// LATA = 0x0000; +// wait_100us(); +// +// //RED +// write_1(); +// write_1(); +// write_1(); +// write_1(); +// +// write_1(); +// write_1(); +// write_1(); +// write_1(); +// +// //GREEN +// write_1(); +// write_0(); +// write_0(); +// write_1(); +// +// write_1(); +// write_0(); +// write_1(); +// write_1(); +// +// //BLUE +// write_0(); +// write_0(); +// write_0(); +// write_0(); +// +// write_0(); +// write_0(); +// write_0(); +// write_0(); - //RED - write_1(); - write_1(); - write_1(); - write_1(); - - write_1(); - write_1(); - write_1(); - write_1(); - - //GREEN - write_1(); - write_0(); - write_0(); - write_1(); - - write_1(); - write_0(); - write_1(); - write_1(); - - //BLUE - write_0(); - write_0(); - write_0(); - write_0(); - - write_0(); - write_0(); - write_0(); - write_0(); - - //writeColor(255, 155, 0); + writeColor(255, 155, 0); } } \ No newline at end of file -- cgit v1.2.3 From 98004bbcbed1ea89463d00dcf11a47ede5c43ef8 Mon Sep 17 00:00:00 2001 From: RossTheRoss Date: Sun, 9 Feb 2020 11:30:30 -0600 Subject: add some c o m m e n t s --- Lab_2B.X/lab2b_c.c | 88 +++++++++++++++++++++++++++++------------------------- 1 file changed, 47 insertions(+), 41 deletions(-) (limited to 'Lab_2B.X/lab2b_c.c') diff --git a/Lab_2B.X/lab2b_c.c b/Lab_2B.X/lab2b_c.c index 21fdcba..bf917a3 100644 --- a/Lab_2B.X/lab2b_c.c +++ b/Lab_2B.X/lab2b_c.c @@ -36,73 +36,79 @@ int main(void) { } void writeColor(int r, int g, int b) { + int i = 0; LATA = 0x0000; wait_100us(); - - for (int i = 0; i < 8; i++){ + //RED + while (i < 8) { if (r & 1) { write_1(); } else { write_0(); } r >> 1; + ++i; } - for (int j = 0; j < 8; j++){ + //GREEN + while (i > 0) { if (g & 1) { write_1(); } else { write_0(); } - g >> 1; + g >> 1; + --i; } - for (int k = 0; k < 8; k++){ + //BLUE + while (i < 8){ if (b & 1) { write_1(); } else { write_0(); } b >> 1; + ++i; } } void loop(void) { while (1) { - LATA = 0x0000; - wait_100us(); +// LATA = 0x0000; +// wait_100us(); +// +// //RED +// write_1(); +// write_1(); +// write_1(); +// write_1(); +// +// write_1(); +// write_1(); +// write_1(); +// write_1(); +// +// //GREEN +// write_1(); +// write_0(); +// write_0(); +// write_1(); +// +// write_1(); +// write_0(); +// write_1(); +// write_1(); +// +// //BLUE +// write_0(); +// write_0(); +// write_0(); +// write_0(); +// +// write_0(); +// write_0(); +// write_0(); +// write_0(); - //RED - write_1(); - write_1(); - write_1(); - write_1(); - - write_1(); - write_1(); - write_1(); - write_1(); - - //GREEN - write_1(); - write_0(); - write_0(); - write_1(); - - write_1(); - write_0(); - write_1(); - write_1(); - - //BLUE - write_0(); - write_0(); - write_0(); - write_0(); - - write_0(); - write_0(); - write_0(); - write_0(); - - //writeColor(255, 155, 0); + writeColor(255, 155, 0); } } \ No newline at end of file -- cgit v1.2.3 From 8d15625be9753e9898f44fa9a9a131191f48fece Mon Sep 17 00:00:00 2001 From: RossTheRoss Date: Sun, 9 Feb 2020 11:38:35 -0600 Subject: HELP --- Lab_2B.X/lab2b_c.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'Lab_2B.X/lab2b_c.c') diff --git a/Lab_2B.X/lab2b_c.c b/Lab_2B.X/lab2b_c.c index 7992b5b..893c812 100644 --- a/Lab_2B.X/lab2b_c.c +++ b/Lab_2B.X/lab2b_c.c @@ -39,6 +39,7 @@ void writeColor(int r, int g, int b) { int i = 0; LATA = 0x0000; wait_100us(); + //RED while (i < 8) { if (r & 1) { write_1(); @@ -48,6 +49,7 @@ void writeColor(int r, int g, int b) { r >> 1; ++i; } + //GREEN while (i > 0) { if (g & 1) { write_1(); @@ -57,6 +59,7 @@ void writeColor(int r, int g, int b) { g >> 1; --i; } + //BLUE while (i < 8){ if (b & 1) { write_1(); @@ -108,4 +111,4 @@ void loop(void) { writeColor(255, 155, 0); } -} \ No newline at end of file +} -- cgit v1.2.3 From 02d5204a1ae23b759888ba55c0458d1471281eae Mon Sep 17 00:00:00 2001 From: RossTheRoss Date: Sun, 9 Feb 2020 12:38:01 -0600 Subject: ? --- Lab_2B.X/lab2b_asm.s | 14 +++++++------- Lab_2B.X/lab2b_c.c | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) (limited to 'Lab_2B.X/lab2b_c.c') diff --git a/Lab_2B.X/lab2b_asm.s b/Lab_2B.X/lab2b_asm.s index 3c3e19e..675987e 100644 --- a/Lab_2B.X/lab2b_asm.s +++ b/Lab_2B.X/lab2b_asm.s @@ -21,19 +21,19 @@ _wait_1ms: _write_0: ;2 cycles for function call inc LATA ;1 - repeat #3 ;1 for load - nop ;3+1=4 nop + repeat #2 ;1 for load + nop ;2+1=3 nop clr LATA ;1 - repeat #6 ;1 for load - nop ;1+6=7 nop + repeat #7 ;1 for load + nop ;1+7=8 nop return ;3 return _write_1: ;2 cycle call inc LATA ;1 - repeat #10;1 load - nop ;1+10=11 nop + repeat #8 ;1 load + nop ;1+9=10 nop clr LATA ;1 - nop ;1 + nop ;1 return ;3 return \ No newline at end of file diff --git a/Lab_2B.X/lab2b_c.c b/Lab_2B.X/lab2b_c.c index 893c812..4976231 100644 --- a/Lab_2B.X/lab2b_c.c +++ b/Lab_2B.X/lab2b_c.c @@ -25,7 +25,7 @@ void setup(void) { TRISB = 0x0000; wait_100us(); } -void writeColor(int r, int g, int b); +void writeColor(short r, short g, short b); void loop(void); int main(void) { @@ -35,8 +35,8 @@ int main(void) { return 0; } -void writeColor(int r, int g, int b) { - int i = 0; +void writeColor(short r, short g, short b) { + short i = 0; LATA = 0x0000; wait_100us(); //RED @@ -46,7 +46,7 @@ void writeColor(int r, int g, int b) { } else { write_0(); } - r >> 1; + r >>= 1; ++i; } //GREEN @@ -56,7 +56,7 @@ void writeColor(int r, int g, int b) { } else { write_0(); } - g >> 1; + g >>= 1; --i; } //BLUE @@ -66,7 +66,7 @@ void writeColor(int r, int g, int b) { } else { write_0(); } - b >> 1; + b >>= 1; ++i; } } @@ -108,7 +108,7 @@ void loop(void) { // write_0(); // write_0(); // write_0(); - +// writeColor(255, 155, 0); } } -- cgit v1.2.3 From f40feb65a7098dc2851463c0612f899885cb2f49 Mon Sep 17 00:00:00 2001 From: RossTheRoss Date: Sun, 9 Feb 2020 12:51:58 -0600 Subject: Fix some dumb stuff --- Lab_2B.X/lab2b_c.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Lab_2B.X/lab2b_c.c') diff --git a/Lab_2B.X/lab2b_c.c b/Lab_2B.X/lab2b_c.c index d2dd8e4..4c63087 100644 --- a/Lab_2B.X/lab2b_c.c +++ b/Lab_2B.X/lab2b_c.c @@ -109,6 +109,6 @@ void loop(void) { // write_0(); // write_0(); // write_0(); - writeColor(255, 155, 0); + writeColor(255, 155, 000); } } -- cgit v1.2.3 From 9c15ec86ca3366929eddc7dac9aa83a3a4b05780 Mon Sep 17 00:00:00 2001 From: RossTheRoss Date: Wed, 12 Feb 2020 10:33:16 -0600 Subject: Do lab 2b --- Lab_2B.X/lab2b_c.c | 141 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 101 insertions(+), 40 deletions(-) (limited to 'Lab_2B.X/lab2b_c.c') diff --git a/Lab_2B.X/lab2b_c.c b/Lab_2B.X/lab2b_c.c index 4c63087..ae32849 100644 --- a/Lab_2B.X/lab2b_c.c +++ b/Lab_2B.X/lab2b_c.c @@ -1,5 +1,6 @@ #include "xc.h" #include "lab2b_header.h" +#include "stdint.h" // CW1: FLASH CONFIGURATION WORD 1 (see PIC24 Family Reference Manual 24.1) #pragma config ICS = PGx1 // Comm Channel Select (Emulator EMUC1/EMUD1 pins are shared with PGC1/PGD1) #pragma config FWDTEN = OFF // Watchdog Timer Enable (Watchdog Timer is disabled) @@ -15,8 +16,18 @@ #pragma config FCKSM = CSECME // Clock Switching and Monitor (Clock switching is enabled, // Fail-Safe Clock Monitor is enabled) #pragma config FNOSC = FRCPLL // Oscillator Select (Fast RC Oscillator with PLL module (FRCPLL)) -#define PERIOD 5 +#define PERIOD 120 +//DEFINTIONS +void writeColor(int r, int g, int b); +void loop(void); +void delay(int delay_in_ms); +uint32_t packColor(unsigned char Red, unsigned char Grn, unsigned char Blu); +unsigned char getR(uint32_t RGBval); +unsigned char getG(uint32_t RGBval); +unsigned char getB(uint32_t RGBval); +void writePacCol(uint32_t PackedColor); +uint32_t Wheel(unsigned char WheelPos); void setup(void) { CLKDIVbits.RCDIV = 0; //Set RCDIV=1:1 (default 2:1) 32MHz or FCY/2=16M @@ -25,8 +36,6 @@ void setup(void) { TRISB = 0x0000; wait_100us(); } -void writeColor(short r, short g, short b); -void loop(void); int main(void) { setup(); @@ -35,43 +44,6 @@ int main(void) { return 0; } -void writeColor(short r, short g, short b) { - short i = 0; - LATA = 0x0000; - wait_100us(); - //RED - while (i < 8) { - if (r & 1) { - write_1(); - } else { - write_0(); - } - - r >>= 1; - ++i; - } - //GREEN - while (i > 0) { - if (g & 1) { - write_1(); - } else { - write_0(); - } - g >>= 1; - --i; - } - //BLUE - while (i < 8){ - if (b & 1) { - write_1(); - } else { - write_0(); - } - b >>= 1; - ++i; - } -} - void loop(void) { while (1) { // LATA = 0x0000; @@ -109,6 +81,95 @@ void loop(void) { // write_0(); // write_0(); // write_0(); +/* writeColor(255, 155, 000); +*/ + int byteFrameNumber = 0; + while (byteFrameNumber <= 255) { +// // COLOR GRADIENT +// writeColor(byteFrameNumber, 0 , 255 - byteFrameNumber); + //COLOR WHEEL + writePacCol(Wheel(byteFrameNumber)); + delay(PERIOD); + byteFrameNumber++; + } } } + +void writeColor(int r, int g, int b) { + short i = 0; + LATA = 0x0000; + wait_100us(); + //RED + while (i < 8) { + if (r & 1) { + write_1(); + } else { + write_0(); + } + + r >>= 1; + ++i; + } + //GREEN + while (i > 0) { + if (g & 1) { + write_1(); + } else { + write_0(); + } + g >>= 1; + --i; + } + //BLUE + while (i < 8){ + if (b & 1) { + write_1(); + } else { + write_0(); + } + b >>= 1; + ++i; + } +} + +void delay(int delay_in_ms) { + int i = 0; + while (i < delay_in_ms) { + wait_1ms(); + i++; + } +} + +uint32_t packColor(unsigned char Red, unsigned char Grn, unsigned char Blu) { + return ((long) Red << 16) | ((long) Grn << 8) | ((long) Blu); +} + +unsigned char getR(uint32_t RGBval) { + return (unsigned char) (RGBval >> 16); +} +unsigned char getG(uint32_t RGBval) { + return (unsigned char) (RGBval >> 8 ); +} +unsigned char getB(uint32_t RGBval) { + return (unsigned char) (RGBval >> 0 ); +} + +void writePacCol(uint32_t PackedColor) { + writeColor(getR(PackedColor), getG(PackedColor), getB(PackedColor)); +} + +uint32_t Wheel(unsigned char WheelPos) { +// Input a value 0 to 255 to get a color value. +// The colours are a transition r - g - b - back to r. + WheelPos = 255 - WheelPos; + if(WheelPos < 85) { + return packColor(255 - WheelPos * 3, 0, WheelPos * 3); + } + if(WheelPos < 170) { + WheelPos -= 85; + return packColor(0, WheelPos * 3, 255 - WheelPos * 3); + } + WheelPos -= 170; + return packColor(WheelPos * 3, 255 - WheelPos * 3, 0); +} \ No newline at end of file -- cgit v1.2.3