dneska mi přišel obvod max6921, ale nedaří se mi na něm nic zobrazit. Už do toho koukám docela dlouho a možná tu chybu už jenom přehlížím. Proto bych vás chtěl poprosit, jestli byste mi na ten můj jednoduchý kód nekoukli. Dík moc
knihovna SPI.H
Kód: Vybrať všetko
void InitSPI(void);
void WriteByteSPI(unsigned char byte);
unsigned char ReadByteSPI(void);
#define DD_SS PB4 //LOAD
#define DD_MOSI PB5 //DATA
#define DD_MISO PB6
#define DD_SCK PB7 //SCK
#define SPI_DDR DDRB
#define SPI_PORT PORTB
#define DESELECT() PORTB &= ~(1 << PB4) /* CS = L */
#define SELECT() PORTB |= (1 << PB4) /* CS = H */
Kód: Vybrať všetko
#include <avr/io.h>
#include "spi.h"
void InitSPI(void){
SPI_PORT |= (1<<DD_SS) | (1<<DD_MISO);
SPI_DDR &= ~ (1<<DD_MISO);
SPI_DDR |= (1<<DD_MOSI) | (1<<DD_SCK) | (1<<DD_SS);
//nastaveni registra SPI (SPCR), CPHA a CPOL v log 0
SPCR |= (1<<SPE) | (1<<MSTR) | (1<<SPR1);
SPCR &= ~ (1<<DORD);
}
void WriteByteSPI(unsigned char byte){
SPDR = byte; //Nahraje bajt do datoveho registru
while(!(SPSR & (1<<SPIF))); // Kontroluje ukonceni prenosu
}
unsigned char ReadByteSPI(void)
{
SPDR = 0xFF; //Nahraje bajt do datoveho registru
while(!(SPSR & (1<<SPIF))); //Kontroluje ukonceni prenosu
return SPDR; // navratova hodnota - prijata data
}
Kód: Vybrať všetko
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include "spi.h"
int main (void){
InitSPI(); //inicializace SPI
while(1){
SELECT(); //Pin LOAD do 1
WriteByteSPI(0x18); //Mrizka
WriteByteSPI(0x5C); //cislo
DESELECT(); //Pin LOAD do 0
PORTB |= (1 << PB3); //Pin BLANK do 1
_delay_ms(100); //prodleva 100ms
}
return 0;
}
Kód: Vybrať všetko
WriteByteSPI(0x18); //Mrizka
WriteByteSPI(0x5C); //cislo