MAX7221 no siempre se enciende

1

Tengo un MAX7221 SPI 7-seg. Controlador LED vinculado a un microcontrolador AVR168P.

A veces, cuando se enciende, todo funciona como se espera. Otras veces la pantalla se pone en blanco y permanece en blanco. Otras veces, la pantalla ilumina todos los dígitos y permanece así "pegada".

¿Alguien me puede dar alguna sugerencia sobre lo que podría intentar solucionar esto?

(Elpull-upde10KenCSestáfueradeltablero,máscercadelaunidaddeusuario)

Mi código:

.MACRO spiDeselect
    SBI PORTB, pinCS3
    SBI PORTB, pinCS2
    SBI PORTB, pinCS1
.ENDMACRO

.MACRO spiSelect2
    SBI PORTB, pinCS3
    SBI PORTB, pinCS1
    CBI PORTB, pinCS2
.ENDMACRO

.MACRO spiOut ; value in portReg
    OUT SPDR0, portReg
spiOutWait:
    IN portReg, SPSR0 ; Can't use SBIS for port > 31
    ANDI portReg, (1 << SPIF0)
    BREQ spiOutWait
.ENDMACRO

.MACRO setupSpi
    ; Prevent SlaveSelect acting as an input
    ; or it'll force SPI into slave mode
    LDI portReg, (1 << pinSS) | (1 << pinCS1) | (1 << pinCS2) | (1 << pinCS3) | (1 << pinBlink)
    OUT DDRB, portReg
    SBI PORTB, pinSS
    SBI PORTB, pinBlink
    LDI portReg, (1 << SPE0) | ( 1 << MSTR0 ) ;| spiDivide128
    OUT SPCR0, portReg
    ; Setup SCK and MOSI pins AFTER enabling SPI, to avoid
    ; accidentally clocking in a single bit
    SBI DDRB, pinMOSI
    SBI DDRB, pinSCK
    spiDeselect
.ENDMACRO

.MACRO max7221SetRegister
    spiSelect2
    MOV portReg, regReg ; MAX7221 register to set
    spiOut
    MOV portReg, valReg ; value to set
    spiOut
    spiDeselect
.ENDMACRO

.EQU Max7221RegisterDecodeMode=0x09
.EQU Max7221RegisterIntensity=0x0A
.EQU Max7221RegisterScanLimit=0x0B

.MACRO setupMax7221
    LDI valReg, 0
    LDI regReg, Max7221RegisterDecodeMode
    max7221SetRegister
    LDI valReg, 0x2
    LDI regReg, Max7221RegisterIntensity
    max7221SetRegister
    LDI regReg, Max7221RegisterScanLimit
    LDI valReg, 7 ; display 8 digits
    max7221SetRegister
    LDI regReg, Max7221RegisterShutdown
    LDI valReg, 1 ; shutdown mode = 0
    max7221SetRegister
.ENDMACRO

progStart:
    CLI
    setupStackAndReg
    setupSpi
    setupMax7221
................

Gracias.

    
pregunta Andy Preston

0 respuestas

Lea otras preguntas en las etiquetas