K
kbbhushan
Guest
Hoi,
Ik ben bezig met een project met behulp van ade7753 en atmega32.
Ik ben niet in staat te stellen de communicatie tussen de twee.
Can someone please help me.
Dit is SPI code.
int main (void)
(
/ / Initialiseer onze bibliotheken
/ / Initialiseer de UART (seriële poort)
uartInit ();
/ / Stel de baudrate van de UART voor onze debug / rapportage-uitgang
uartSetBaudRate (9600);
/ / Initialiseer de timer systeem
timerInit ();
/ / Initialiseer rprintf systeem
/ / - Gebruik uartSendByte als output voor alle rprintf verklaringen
/ / Dit zal leiden alle rprintf bibliotheek functies aan hun
/ / Output naar de UART
/ / - Rprintf kan worden gemaakt van de output naar een apparaat die tekens.
/ / U moet schrijven een functie die een unsigned char als argument
/ / En vervolgens deze te rprintfInit als volgt uit: rprintfInit (YOUR_FUNCTION);
rprintfInit (uartSendByte);
/ / Initialiseer vt100 bibliotheek
vt100Init ();
/ / Heldere scherm van de terminal
vt100ClearScreen ();
sbi (DDRD, 1);
CBI (DDRD, 0);
char resultaat;
spi_init ();
ade7753_write_to_reg (0x13, 0x02);
result = ade7753_read_from_reg (0x13);
rprintf ( "Resultaat is% d \ r \ n", (uint8_t) resultaat);/ / Spi_tx ();
/ / Spi_rx ();/ /)
)
void ade7753_write_to_reg (char addr, char waarde) (
rprintf ( "In ade7753_write_to_reg \ r \ n");
spi_start ();
/ / schrijf-adres aan de Commissie eerst inschrijven
addr = (addr 0 x80);
rprintf ( "Dit adres is geschreven% d \ r \ n", addr);
spi_tx (addr); / /-adres van de reigster te schrijven
_delay_us (0,05);
spi_tx (waarde); / / waarde te worden geschreven te registreren
spi_end ();
)
unsigned char ade7753_read_from_reg (char addr)
(
unsigned char regval;
rprintf ( "In ade7753_read_from_reg \ r \ n");
spi_start ();
/ / schrijf het adres van de aflezing register communicatie eerst inschrijven
addr = (addr 0 x80);
rprintf ( "Dit is de lezing inschrijven adres% d", addr);
_delay_us (4); / / t9 = 4uswait tot na adres is geladen
regval = spi_rx ();
terugkeer regval;
)
void spi_init (void)
(
/ * set MOSI out; SCK out; SS out; * /
DDR_SPI = DDR_SPI | (1 <<MOSI) | (1 <<SCK) | (1 <<SS);
/ * Stel MISO in * /
DDR_SPI = DDR_SPI & ~ (1 <<MISO);
/ * Enable SPI; ingesteld Master modus; SPI mode = 3; f '= f/128 * /
SPCR = (1 <<SPE) | (0 <<DORD) | (1 <<MSTR) | (0 <<CPOL) | (1 <<CPHA) | (0 <<SPR1) | (1 <<SPR0) ;
terugkeer;
)
void spi_tx (unsigned char data)
(
/ * Start verzending * /
SPDR = gegevens;
rprintf ( "Dit is in spi_tx gegevens is% d", data);
/ * Wacht voor transmissie volledige * /
while (! (SPSR & (1 <<SPIF)));
terugkeer;
)
unsigned char spi_rx (void)
(
/ * Stuur een dummy karakter * /
SPDR = DUMMY;
/ * Wacht voor ontvangst compleet * /
while (! (SPSR & (1 <<SPIF)));
/ * Return gegevens registreren * /
rprintf ( "Dit is in spi_tx gegevens% d", SPDR);
terugkeer SPDR;
)
void spi_start (void)
(
/ * Einde eventuele vorige sessie * /
spi_end ();
/ * Set SS laag - start een nieuwe sessie * /
PORT_SPI = PORT_SPI & ~ (1 <<SS);
terugkeer;
)
void spi_end (void)
(
/ * Stel hoge SS * /
PORT_SPI = PORT_SPI | (1 <<SS);
terugkeer;
)
Ik ben bezig met een project met behulp van ade7753 en atmega32.
Ik ben niet in staat te stellen de communicatie tussen de twee.
Can someone please help me.
Dit is SPI code.
int main (void)
(
/ / Initialiseer onze bibliotheken
/ / Initialiseer de UART (seriële poort)
uartInit ();
/ / Stel de baudrate van de UART voor onze debug / rapportage-uitgang
uartSetBaudRate (9600);
/ / Initialiseer de timer systeem
timerInit ();
/ / Initialiseer rprintf systeem
/ / - Gebruik uartSendByte als output voor alle rprintf verklaringen
/ / Dit zal leiden alle rprintf bibliotheek functies aan hun
/ / Output naar de UART
/ / - Rprintf kan worden gemaakt van de output naar een apparaat die tekens.
/ / U moet schrijven een functie die een unsigned char als argument
/ / En vervolgens deze te rprintfInit als volgt uit: rprintfInit (YOUR_FUNCTION);
rprintfInit (uartSendByte);
/ / Initialiseer vt100 bibliotheek
vt100Init ();
/ / Heldere scherm van de terminal
vt100ClearScreen ();
sbi (DDRD, 1);
CBI (DDRD, 0);
char resultaat;
spi_init ();
ade7753_write_to_reg (0x13, 0x02);
result = ade7753_read_from_reg (0x13);
rprintf ( "Resultaat is% d \ r \ n", (uint8_t) resultaat);/ / Spi_tx ();
/ / Spi_rx ();/ /)
)
void ade7753_write_to_reg (char addr, char waarde) (
rprintf ( "In ade7753_write_to_reg \ r \ n");
spi_start ();
/ / schrijf-adres aan de Commissie eerst inschrijven
addr = (addr 0 x80);
rprintf ( "Dit adres is geschreven% d \ r \ n", addr);
spi_tx (addr); / /-adres van de reigster te schrijven
_delay_us (0,05);
spi_tx (waarde); / / waarde te worden geschreven te registreren
spi_end ();
)
unsigned char ade7753_read_from_reg (char addr)
(
unsigned char regval;
rprintf ( "In ade7753_read_from_reg \ r \ n");
spi_start ();
/ / schrijf het adres van de aflezing register communicatie eerst inschrijven
addr = (addr 0 x80);
rprintf ( "Dit is de lezing inschrijven adres% d", addr);
_delay_us (4); / / t9 = 4uswait tot na adres is geladen
regval = spi_rx ();
terugkeer regval;
)
void spi_init (void)
(
/ * set MOSI out; SCK out; SS out; * /
DDR_SPI = DDR_SPI | (1 <<MOSI) | (1 <<SCK) | (1 <<SS);
/ * Stel MISO in * /
DDR_SPI = DDR_SPI & ~ (1 <<MISO);
/ * Enable SPI; ingesteld Master modus; SPI mode = 3; f '= f/128 * /
SPCR = (1 <<SPE) | (0 <<DORD) | (1 <<MSTR) | (0 <<CPOL) | (1 <<CPHA) | (0 <<SPR1) | (1 <<SPR0) ;
terugkeer;
)
void spi_tx (unsigned char data)
(
/ * Start verzending * /
SPDR = gegevens;
rprintf ( "Dit is in spi_tx gegevens is% d", data);
/ * Wacht voor transmissie volledige * /
while (! (SPSR & (1 <<SPIF)));
terugkeer;
)
unsigned char spi_rx (void)
(
/ * Stuur een dummy karakter * /
SPDR = DUMMY;
/ * Wacht voor ontvangst compleet * /
while (! (SPSR & (1 <<SPIF)));
/ * Return gegevens registreren * /
rprintf ( "Dit is in spi_tx gegevens% d", SPDR);
terugkeer SPDR;
)
void spi_start (void)
(
/ * Einde eventuele vorige sessie * /
spi_end ();
/ * Set SS laag - start een nieuwe sessie * /
PORT_SPI = PORT_SPI & ~ (1 <<SS);
terugkeer;
)
void spi_end (void)
(
/ * Stel hoge SS * /
PORT_SPI = PORT_SPI | (1 <<SS);
terugkeer;
)