Reading Problema CS5460A

K

Kumar_373

Guest
Salut
I sînt doing un proiect pe contor de energie Folosind CS5460A conectata la 89S52 microcontroler.

Detials Connection
cs5460a 89S52
pin5 (sclk) P1.1
pin6 (ODD) P3.5
pin23 (SDI) P1.2
pin7 (CS) GND

I sînt folosire 20MHz de cristal pentru microcontroler şi 4.Mhz pentru cs5460a I sînt nu capabil de a citi de la CS5460a.

a putea orice spune-mi ce ar putea fi problema.Cum citesc de date.

Cu respect
Kumar

 
Pot exista mai multe motive posibile de ce nu a putut stabili comunicarea între 89S52 şi CS5460 ..
Presupunând că conexiunea hardware-ul CS5460 este corectă şi CS5460 este alimentat în mod corespunzător, a face tu folos dreptul de scriere / citire de sincronizare?
Aţi început cu initializare serial port?
(a se vedea P18 de: http://www.alsa-project.org/ ~ james/datasheets/www.cirrus.com/en/pubs/proDatasheet/cs5460.pdf)

Cu respect,
IanP

 
Dragi Ianp

Următoarele de rutină pentru citească şi să scrie pentru a cs5460a

write_to_register void (comanda char, char scăzut, char mijlocul anului, char mare)
(
transfer_byte (comanda);
transfer_byte (ridicat);
transfer_byte (MID);
transfer_byte (scăzut);

)

read_register void (comanda char)
(
transfer_byte (comanda);
high_byte = receive_byte (); / * Primire Bytes * /
mid_byte = receive_byte ();
low_byte = receive_byte ();

)NUME TRANSFER_BYTE

? PR? _transfer_byte? TRANSFER_BYTE segmentul de cod de
_transfer_byte PUBLICE

RSEG? PR? _transfer_byte? TRANSFER_BYTE
_transfer_byte:
UTILIZAREA 0
MOV A, R7; Mutare octet urmează să fie transmise ACC
MOV R1, # 08; conta setează la 8 pentru a transmite byte
CLR P1.1; SCLK Clear (P1.3 vechi de date)

buclă:; Trimite Byte
RLC A; Rotire acumulatori, trimite MSB 1st
MOV P1.2, C; Transmit MSB prima prin biţi C
SETB P1.1; SCLK set (P1.3 vechi de date)
CLR P1.1; SCLK Clear
DJNZ R1, Loop; octet Decrement, bucla se repetă în cazul în care nu zero
SETB P1.2; SDI pentru a nu putea suporta o atunci când nu transmite (P1.3 vechi de date)
RET; subrutina de iesireEND; END OF _transfer_byte

NUME RECEIVE_BYTE

? PR? _receive_byte? RECEIVE_BYTE segmentul de cod de
_receive_byte PUBLICERSEG? PR? _receive_byte? RECEIVE_BYTE
_receive_byte:
UTILIZAREA 0
MOV R1, # 08; conta setează la 8 pentru a primi byte
SETB P1.1; Set SDI atunci când nu sunt în uz

LOOP:; Primiţi octet
MOV C, P3.5; Mutare de biţi pentru a transporta (P1.2 vechi de date)
RLC A; roti o în curs de pregătire pentru bit următoare
SETB P1.1; SCLK set (P1.3 vechi de date)
CLR P1.1; SCLK Clear
DJNZ R1, LOOP; octet Decrement, bucla se repetă în cazul în care nu zero

MOV R7, A; Byte care urmează să fie returnate este plasat într-R7
RET; subrutina de iesire; END OF _receive_byte

SFÂRŞIT

Am initializated portul serial folosind sync1 (0xFF) şi sync0 (oxfe), dar încă nu am reuşit să citim pot spune-mi ce ar putea fi problema.

Mulţumesc

IanP a scris:

Pot exista mai multe motive posibile de ce nu a putut stabili comunicarea între 89S52 şi CS5460 ..

Presupunând că conexiunea hardware-ul CS5460 este corectă şi CS5460 este alimentat în mod corespunzător, a face tu folos dreptul de scriere / citire de sincronizare?

Aţi început cu initializare serial port?

(a se vedea P18 de: h ** p: / / www.alsa-project.org/ ...tasheet/cs5460.pdf [/ url])Cu respect, IanP
 

Welcome to EDABoard.com

Sponsor

Back
Top