Subversion Repositories Code-Repo

Compare Revisions

Ignore whitespace Rev 113 → Rev 114

/Classwork/ECE4534 - Embedded Systems/PIC 26J11/led_driver.c
37,6 → 37,16
#endif
 
#ifdef _SPI2_V2
TRISAbits.TRISA0 = 0; // CLK
TRISAbits.TRISA1 = 0; // DAT
TRISAbits.TRISA2 = 0; // LE
TRISAbits.TRISA3 = 0; // OE
LATAbits.LATA0 = 0; // CLK
LATAbits.LATA1 = 0; // DAT
LATAbits.LATA2 = 1; // LE
LATAbits.LATA3 = 0; // OE
 
RPOR0 = 10; // CLK
RPOR1 = 9; // DATA
OpenSPI2(SPI_FOSC_4, MODE_00, SMPMID);
47,14 → 57,20
led_driver_data(0);
}
 
void led_driver_clock() {
#ifdef _SPI2_V1
void led_driver_clock() {
LATAbits.LATA1 = 0x1; // Simple clock output toggle
Nop();
LATAbits.LATA1 = 0x0;
Nop();
#endif
#ifdef _SPI2_V2
LATAbits.LATA0 = 0x1; // Simple clock output toggle
Nop();
LATAbits.LATA0 = 0x0;
Nop();
#endif
}
#endif
 
void led_driver_data(char val) {
#ifdef _SPI2_V1
69,9 → 85,7
#endif
 
#ifdef _SPI2_V2
LATAbits.LATA0 = 0x0;
WriteSPI2(val);
LATAbits.LATA0 = 0x1;
#endif
}
 
82,6 → 96,7
// Determine right character (1s digit)
tmp = data % 10;
switch (tmp) {
#ifdef _SPI2_V1
case 0:
led_last_value |= 0x0D70;
break;
112,11 → 127,45
case 9:
led_last_value |= 0x0770;
break;
#endif
#ifdef _SPI2_V2
case 0:
led_last_value |= 0x0EB0;
break;
case 1:
led_last_value |= 0x0280;
break;
case 2:
led_last_value |= 0x0670;
break;
case 3:
led_last_value |= 0x06E0;
break;
case 4:
led_last_value |= 0x0AC0;
break;
case 5:
led_last_value |= 0x0CE0;
break;
case 6:
led_last_value |= 0x0CF0;
break;
case 7:
led_last_value |= 0x0E80;
break;
case 8:
led_last_value |= 0x0EF0;
break;
case 9:
led_last_value |= 0x0EE0;
break;
#endif
}
 
// Determine left character (10s digit)
tmp = data / 10;
switch (tmp) {
#ifdef _SPI2_V1
case 0:
led_last_value |= 0xE00D;
break;
147,13 → 196,58
case 9:
led_last_value |= 0x600F;
break;
#endif
#ifdef _SPI2_V2
case 0:
led_last_value |= 0xB007;
break;
case 1:
led_last_value |= 0x1004;
break;
case 2:
led_last_value |= 0x7003;
break;
case 3:
led_last_value |= 0x7006;
break;
case 4:
led_last_value |= 0xD004;
break;
case 5:
led_last_value |= 0xE006;
break;
case 6:
led_last_value |= 0xE007;
break;
case 7:
led_last_value |= 0xB004;
break;
case 8:
led_last_value |= 0xF007;
break;
case 9:
led_last_value |= 0xF006;
break;
#endif
}
 
#ifdef _SPI2_V1
led_driver_data(led_last_value & 0x00FF);
led_driver_data((led_last_value & 0xFF00) >> 8);
#endif
#ifdef _SPI2_V2
led_driver_data((led_last_value & 0xFF00) >> 8);
led_driver_data(led_last_value & 0x00FF);
#endif
}
 
void led_driver_show_last() {
#ifdef _SPI2_V1
led_driver_data(led_last_value & 0x00FF);
led_driver_data((led_last_value & 0xFF00) >> 8);
#endif
#ifdef _SPI2_V2
led_driver_data((led_last_value & 0xFF00) >> 8);
led_driver_data(led_last_value & 0x00FF);
#endif
}