K
kbbhushan
Guest
Hai,
Aku melakukan proyek menggunakan ade7753 dan atmega32.
Saya tidak mampu membangun komunikasi antara dua.
Dapatkah seseorang please help me.
Ini adalah kode spi.
int main (void)
(
/ / Menginisialisasi perpustakaan kami
/ / Inisialisasi UART (port serial)
uartInit ();
/ / Set baud rate dari UART untuk kita debug / pelaporan output
uartSetBaudRate (9600);
/ / Menginisialisasi sistem timer
timerInit ();
/ / Menginisialisasi sistem rprintf
/ / - UartSendByte gunakan sebagai output untuk semua pernyataan rprintf
/ / Ini akan menyebabkan semua fungsi perpustakaan rprintf untuk mengarahkan mereka
/ / Output ke UART
/ / - Rprintf dapat dibuat untuk output ke perangkat lain yang mengambil karakter.
/ / Anda harus menulis fungsi yang mengambil suatu unsigned char sebagai argumen
/ / Dan kemudian meneruskan ini untuk rprintfInit seperti ini: rprintfInit (YOUR_FUNCTION);
rprintfInit (uartSendByte);
/ / Menginisialisasi perpustakaan vt100
vt100Init ();
/ / Bersihkan layar terminal
vt100ClearScreen ();
SBI (DDRD, 1);
chi (DDRD, 0);
char hasil;
spi_init ();
ade7753_write_to_reg (0x13, 0x02);
hasil = ade7753_read_from_reg (0x13);
rprintf ( "Hasil adalah% d \ r \ n", (uint8_t) result);/ / Spi_tx ();
/ / Spi_rx ();/ /)
)
void ade7753_write_to_reg (char addr, char nilai) (
rprintf ( "Di ade7753_write_to_reg \ r \ n");
spi_start ();
/ / tulis alamat untuk komunikasi mendaftar terlebih dahulu
addr = (addr 0 x80);
rprintf ( "Alamat ini sedang ditulis% d \ r \ n", addr);
spi_tx (addr); / / alamat reigster untuk menulis
_delay_us (0,05);
spi_tx (nilai); / / nilai yang akan ditulis untuk mendaftarkan
spi_end ();
)
unsigned char ade7753_read_from_reg (char addr)
(
unsigned char regval;
rprintf ( "Di ade7753_read_from_reg \ r \ n");
spi_start ();
/ / menulis alamat membaca komunikasi mendaftar mendaftar untuk pertama
addr = (addr 0 x80);
rprintf ( "Ini adalah mendaftar membaca alamat% d", addr);
_delay_us (4); / / t9 = alamat 4uswait sampai setelah di-load
regval = spi_rx ();
kembali regval;
)
spi_init void (void)
(
/ * set mosi keluar; SCK keluar; SS keluar; * /
DDR_SPI = DDR_SPI | (1 <<mosi) | (1 <<SCK) | (1 <<SS);
/ * Set miso dalam * /
DDR_SPI = DDR_SPI & ~ (1 <<Miso);
/ * Aktifkan SPI; mengatur modus Master; SPI Mode = 3; f '= f/128 * /
SPCR = (1 <<SPE) | (0 <<DORD) | (1 <<MStr) | (0 <<CPOL) | (1 <<CPHA) | (0 <<SPR1) | (1 <<SPR0) ;
return;
)
void spi_tx (unsigned char data)
(
/ * Mulai transmisi * /
SPDR = data;
rprintf ( "Hal ini spi_tx data adalah% d", data);
/ * Tunggu untuk transmisi lengkap * /
while (! (SPSR & (1 <<SPIF)));
return;
)
unsigned char spi_rx (void)
(
/ * Send a dummy karakter * /
SPDR = dummy;
/ * Tunggu penerimaan lengkap * /
while (! (SPSR & (1 <<SPIF)));
/ * Kembali register data * /
rprintf ( "Hal ini spi_tx data adalah% d", SPDR);
kembali SPDR;
)
spi_start void (void)
(
/ * End, jika ada, sesi sebelumnya * /
spi_end ();
/ * Set SS rendah - memulai sesi baru * /
PORT_SPI = PORT_SPI & ~ (1 <<SS);
return;
)
spi_end void (void)
(
/ * Set SS tinggi * /
PORT_SPI = PORT_SPI | (1 <<SS);
return;
)
Aku melakukan proyek menggunakan ade7753 dan atmega32.
Saya tidak mampu membangun komunikasi antara dua.
Dapatkah seseorang please help me.
Ini adalah kode spi.
int main (void)
(
/ / Menginisialisasi perpustakaan kami
/ / Inisialisasi UART (port serial)
uartInit ();
/ / Set baud rate dari UART untuk kita debug / pelaporan output
uartSetBaudRate (9600);
/ / Menginisialisasi sistem timer
timerInit ();
/ / Menginisialisasi sistem rprintf
/ / - UartSendByte gunakan sebagai output untuk semua pernyataan rprintf
/ / Ini akan menyebabkan semua fungsi perpustakaan rprintf untuk mengarahkan mereka
/ / Output ke UART
/ / - Rprintf dapat dibuat untuk output ke perangkat lain yang mengambil karakter.
/ / Anda harus menulis fungsi yang mengambil suatu unsigned char sebagai argumen
/ / Dan kemudian meneruskan ini untuk rprintfInit seperti ini: rprintfInit (YOUR_FUNCTION);
rprintfInit (uartSendByte);
/ / Menginisialisasi perpustakaan vt100
vt100Init ();
/ / Bersihkan layar terminal
vt100ClearScreen ();
SBI (DDRD, 1);
chi (DDRD, 0);
char hasil;
spi_init ();
ade7753_write_to_reg (0x13, 0x02);
hasil = ade7753_read_from_reg (0x13);
rprintf ( "Hasil adalah% d \ r \ n", (uint8_t) result);/ / Spi_tx ();
/ / Spi_rx ();/ /)
)
void ade7753_write_to_reg (char addr, char nilai) (
rprintf ( "Di ade7753_write_to_reg \ r \ n");
spi_start ();
/ / tulis alamat untuk komunikasi mendaftar terlebih dahulu
addr = (addr 0 x80);
rprintf ( "Alamat ini sedang ditulis% d \ r \ n", addr);
spi_tx (addr); / / alamat reigster untuk menulis
_delay_us (0,05);
spi_tx (nilai); / / nilai yang akan ditulis untuk mendaftarkan
spi_end ();
)
unsigned char ade7753_read_from_reg (char addr)
(
unsigned char regval;
rprintf ( "Di ade7753_read_from_reg \ r \ n");
spi_start ();
/ / menulis alamat membaca komunikasi mendaftar mendaftar untuk pertama
addr = (addr 0 x80);
rprintf ( "Ini adalah mendaftar membaca alamat% d", addr);
_delay_us (4); / / t9 = alamat 4uswait sampai setelah di-load
regval = spi_rx ();
kembali regval;
)
spi_init void (void)
(
/ * set mosi keluar; SCK keluar; SS keluar; * /
DDR_SPI = DDR_SPI | (1 <<mosi) | (1 <<SCK) | (1 <<SS);
/ * Set miso dalam * /
DDR_SPI = DDR_SPI & ~ (1 <<Miso);
/ * Aktifkan SPI; mengatur modus Master; SPI Mode = 3; f '= f/128 * /
SPCR = (1 <<SPE) | (0 <<DORD) | (1 <<MStr) | (0 <<CPOL) | (1 <<CPHA) | (0 <<SPR1) | (1 <<SPR0) ;
return;
)
void spi_tx (unsigned char data)
(
/ * Mulai transmisi * /
SPDR = data;
rprintf ( "Hal ini spi_tx data adalah% d", data);
/ * Tunggu untuk transmisi lengkap * /
while (! (SPSR & (1 <<SPIF)));
return;
)
unsigned char spi_rx (void)
(
/ * Send a dummy karakter * /
SPDR = dummy;
/ * Tunggu penerimaan lengkap * /
while (! (SPSR & (1 <<SPIF)));
/ * Kembali register data * /
rprintf ( "Hal ini spi_tx data adalah% d", SPDR);
kembali SPDR;
)
spi_start void (void)
(
/ * End, jika ada, sesi sebelumnya * /
spi_end ();
/ * Set SS rendah - memulai sesi baru * /
PORT_SPI = PORT_SPI & ~ (1 <<SS);
return;
)
spi_end void (void)
(
/ * Set SS tinggi * /
PORT_SPI = PORT_SPI | (1 <<SS);
return;
)