Membaca Soal CS5460A

K

Kumar_373

Guest
Hai
Aku melakukan sebuah proyek tentang meteran Energi CS5460A Menggunakan dihubungkan dengan mikrokontroler 89S52.

Sambungan detials
cs5460a 89S52
pin5 (sclk) P1.1
pin6 (SDO) P3.5
pin23 (SDI) P1.2
pin7 (CS) GND

Saya menggunakan kristal 20Mhz untuk mikrokontroler dan 4.Mhz untuk cs5460a saya tidak dapat membaca dari CS5460a.

apapun dapat katakan padaku apa yang bisa menjadi masalah.bagaimana saya membaca data.

Salam
Kumar

 
Tidak dapat banyak kemungkinan alasan mengapa Anda tidak bisa membangun komunikasi antara 89S52 dan CS5460 ..
Dengan asumsi bahwa koneksi perangkat keras CS5460 benar dan benar powered CS5460, apakah Anda menggunakan hak menulis / membaca waktu?
Apakah Anda mulai dengan inisialisasi port serial?
(lihat P18 dari: http://www.alsa-project.org/ ~ james/datasheets/www.cirrus.com/en/pubs/proDatasheet/cs5460.pdf)

Salam,
IanP

 
Dear Ianp

Berikut rutin untuk membaca dan menulis ke cs5460a

void write_to_register (char perintah, char rendah, char pertengahan, char tinggi)
(
transfer_byte (perintah);
transfer_byte (tinggi);
transfer_byte (pertengahan);
transfer_byte (rendah);

)

void read_register (char command)
(
transfer_byte (perintah);
high_byte = receive_byte (); / * Menerima Bytes * /
mid_byte = receive_byte ();
low_byte = receive_byte ();

)NAMA TRANSFER_BYTE

? PR? _transfer_byte? TRANSFER_BYTE SEGMEN KODE
UMUM _transfer_byte

RSEG? PR? _transfer_byte? TRANSFER_BYTE
_transfer_byte:
MENGGUNAKAN 0
MOV A, R7; Pindah byte untuk diteruskan ke ACC
MOV R1, # 08; Set menghitung sampai 8 untuk mengirimkan byte
CLR P1.1; Clear SCLK (P1.3 data lama)

loop:; Kirim Byte
RLC A; Putar Accumulator, kirim MSB-1
MOV P1.2, C; Transmit MSB bit pertama melalui C
SETB P1.1; Set SCLK (P1.3 data lama)
CLR P1.1; Hapus SCLK
DJNZ R1, loop; pengurangan byte, ulangi loop jika tidak nol
SETB P1.2; Reset SDI pada satu saat tidak transmisi (P1.3 data lama)
RET; Keluar subroutineEND; END OF _transfer_byte

NAMA RECEIVE_BYTE

? PR? _receive_byte? RECEIVE_BYTE SEGMEN KODE
UMUM _receive_byteRSEG? PR? _receive_byte? RECEIVE_BYTE
_receive_byte:
MENGGUNAKAN 0
MOV R1, # 08; Set menghitung sampai 8 untuk menerima byte
SETB P1.1; Mengatur SDI jika tidak digunakan

LOOP:; Menerima byte
MOV C, P3.5; Pindah sedikit untuk membawa (P1.2 data lama)
RLC A; Putar A dalam persiapan untuk bit berikutnya
SETB P1.1; Set SCLK (P1.3 data lama)
CLR P1.1; Hapus SCLK
DJNZ R1, LOOP; pengurangan byte, ulangi loop jika tidak nol

MOV R7, A; Byte dikembalikan ditempatkan di R7
RET; Keluar subroutine; END OF _receive_byte

END

Saya telah initializated port serial menggunakan sync1 (0xff) dan sync0 (oxfe) tapi masih i am tidak dapat membaca dapat memberitahu saya apa yang bisa menjadi masalah.

Terima kasih

IanP wrote:

Tidak dapat banyak kemungkinan alasan mengapa Anda tidak bisa membangun komunikasi antara 89S52 dan CS5460 ..

Dengan asumsi bahwa koneksi perangkat keras CS5460 benar dan benar powered CS5460, apakah Anda menggunakan hak menulis / membaca waktu?

Apakah Anda mulai dengan inisialisasi port serial?

(lihat P18 dari: h ** p: / / www.alsa-project.org/ ...proDatasheet/cs5460.pdf [/ url])Salam, IanP
 

Welcome to EDABoard.com

Sponsor

Back
Top