@ -11,12 +11,114 @@ void max7219_testDisplay(
max7219_t * display ,
uint8_t logic )
{
if ( logic ) {
spiWriteReg ( display - > spiCH , 0x0F , 0x01 ) ;
} else {
spiWriteReg ( display - > spiCH , 0x0F , 0x00 ) ;
spiWriteReg ( display - > spiCH , 0x0F , ( logic ) ? 0x01 : 0x00 ) ;
}
void max7219_shutdownDiaply (
max7219_t * display ,
uint8_t logic )
{
spiWriteReg ( display - > spiCH , 0x0C , ( logic ) ? 0x00 : 0x01 ) ;
}
void max7219_setDecodeMode (
max7219_t * display ,
max7219_decodeMode_t dmode )
{
spiWriteReg ( display - > spiCH , 0x09 , ( uint8_t ) dmode ) ;
}
void max7219_setIntensity (
max7219_t * display ,
uint8_t intensity )
{
spiWriteReg ( display - > spiCH , 0x0A , intensity & 0x0F ) ;
}
void max7219_setScanLimit (
max7219_t * display ,
max7219_scanLimit_t slimit )
{
spiWriteReg ( display - > spiCH , 0x0B , ( ( uint8_t ) slimit ) & 0x0F ) ;
}
void max7219_setAllLEDsOff (
max7219_t * display )
{
uint8_t i ;
for ( i = 0 ; i < 9 ; i + + ) {
spiWriteReg ( display - > spiCH , i , 0x00 ) ;
}
}
void max7219_ledMatrixSetLED (
max7219_t * display ,
uint8_t row ,
uint8_t col )
{
uint8_t val = 0xAE ;
row = ( row & 0x07 ) + 1 ;
col = 1 < < ( col & 0x07 ) ;
spiWriteReg ( display - > spiCH , row , col ) ;
}
void max7219_rawWrite (
max7219_t * display ,
uint8_t reg ,
uint8_t data )
{
spiWriteReg ( display - > spiCH , reg , data ) ;
}
void max7219_printLedMatrix (
max7219_t * display ,
uint8_t matrix [ ] )
{
uint8_t i = 0 ;
for ( i = 0 ; i < 8 ; i + + ) {
spiWriteReg ( display - > spiCH , i + 1 , matrix [ i ] ) ;
}
}
void max7219_ledMatrixUnsetLED (
max7219_t * display ,
uint8_t row ,
uint8_t col )
{
row = ( row & 0x07 ) + 1 ;
col = 1 < < ( col & 0x07 ) ;
// TODO: find out how to turn off LED
spiWriteReg ( display - > spiCH , row , col + 1 ) ;
}
#if 0
// daysichained matrix
typedef struct {
spi_ch_t * spiCH ;
uint8_t nDevices ;
} max7219_dm_t ;
void max7219_dm_write (
max7219_dm_t * matrix ,
uint8_t * * data )
{
uint8_t i = 0 ;
uint8_t j = 0 ;
// TODO: Test it out
for ( i = 0 ; i < 8 ; i + + ) {
pinWrite ( matrix - > spiCH - > pin , 0 ) ;
for ( j = 0 ; j < matrix - > nDevices ; j + + ) {
spiTrx8BitPolling ( matrix - > spiCH - > spi , i + 1 ) ; // reg
spiTrx8BitPolling ( matrix - > spiCH - > spi , data [ j ] [ i ] ) ;
}
pinWrite ( matrix - > spiCH - > pin , 1 ) ;
}
}
# endif