Witam!!!
Znalazęm u siebie w domu układ vs1001k. Chciałem sprawdzić czy jest sprawny i się troszkę nim pobawić. Zrobiłem sobię płytkę według kawałka schematu Yampp'a
i napisałem prościutki program do sin testu
Po złożeniu wszystkiego do kupy i wgraniu programu do procka w słuchawkach słyszę tylko bzyczenie. Gdy podepne słuchawki bezpośrednio do wyjść vs'a w słuchawkach jest cisza. Druga sprawa to taka, że program w czasie symulacji w AVR Studio wysyła po SPI pierwsą wartość 0x53, a gdy wrzuca do rejestru SPDR wartość kolejną 0xef. Wtedy zeruje się SPIF i SPSR i program wisi, bo SPI jest zajętę. Co jest tutaj nie tak??
Znalazęm u siebie w domu układ vs1001k. Chciałem sprawdzić czy jest sprawny i się troszkę nim pobawić. Zrobiłem sobię płytkę według kawałka schematu Yampp'a
i napisałem prościutki program do sin testu#include <avr/io.h>
#include <util/delay.h>
#define DD_MOSI PINB3
#define DD_SCK PINB5
#define SPI_DDR PORTB
char vs_data = 0;
int cs = 0;
void SPI_Init(int cs);
void SPI_Send(char vs_data);
char SPI_Read(char vs_data);
int main(void)
{
DDRD = 0x01;
PORTD = 0x01;
PORTD = 0x00;
vs_data = 0x53;
//SPI_Init(0);
SPI_Send(vs_data);
vs_data = 0xef;
//SPI_Init(0);
SPI_Send(vs_data);
vs_data = 0x6e;
//SPI_Init(0);
SPI_Send(vs_data);
vs_data = 0x95;
//SPI_Init(0);
SPI_Send(vs_data);
vs_data = 0x00;
//SPI_Init(0);
SPI_Send(vs_data);
vs_data = 0x00;
//SPI_Init(0);
SPI_Send(vs_data);
vs_data = 0x00;
//SPI_Init(0);
SPI_Send(vs_data);
vs_data = 0x00;
//SPI_Init(0);
SPI_Send(vs_data);
/*_delay_ms(2000);
vs_data = 0x45;
SPI_Init(0);
SPI_Send(vs_data);
vs_data = 0x78;
SPI_Init(0);
SPI_Send(vs_data);
vs_data = 0x69;
SPI_Init(0);
SPI_Send(vs_data);
vs_data = 0x74;
SPI_Init(0);
SPI_Send(vs_data);
vs_data = 0x00;
SPI_Init(0);
SPI_Send(vs_data);
vs_data = 0x00;
SPI_Init(0);
SPI_Send(vs_data);
*/
return 0;
}
void SPI_Init(int cs)
{
//Set MOSI and SCK output, all others input
SPI_DDR = (1<<DD_MOSI)|(1<<DD_SCK);
//Enable SPI, Master, set clock rate fck/16
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
//Wybór urządzenia odbierającego dane
PORTD = (0<<cs);
}
void SPI_Send(char vs_data)
{
/* Start transmission */
SPDR = vs_data;
/* Wait for transmission complete */
while(!(SPSR & (1<<SPIF)));
PORTD = (1<<cs);
}
char SPI_Read(char vs_data)
{
/* Start transmission */
SPDR = vs_data;
/* Wait for transmission complete */
while(!(SPSR & (1<<SPIF)));
return SPDR;
}Po złożeniu wszystkiego do kupy i wgraniu programu do procka w słuchawkach słyszę tylko bzyczenie. Gdy podepne słuchawki bezpośrednio do wyjść vs'a w słuchawkach jest cisza. Druga sprawa to taka, że program w czasie symulacji w AVR Studio wysyła po SPI pierwsą wartość 0x53, a gdy wrzuca do rejestru SPDR wartość kolejną 0xef. Wtedy zeruje się SPIF i SPSR i program wisi, bo SPI jest zajętę. Co jest tutaj nie tak??