DS89C430 ja 8051

D

DrWhoF

Guest
Olen yrittänyt korvata 80C51 vuonna piiri ulkoisten ohjelmien ja tietojen muistia DS89C430 mutta se ei toimi.
Kun olen yrittänyt 87C51 piiri toimii hyvin.
Mikä voisi olla syy?

DrWho

 
Vaikka käytät ei-sivun tilan yhteensopivuus perinteisten 8051 (oletusasetus on DS89C430 jälkeen reset) harkintaan on tehtävä liittyvä muisti tyyppi ja nopeus.
Koska perus-opetus toteuttamisajaksi on selkeytetty, että DS89C430, käytettävissä oleva aika siirtää tietoja ja muistista on myös vähennettävä.Tämä tarkoittaa, että sama taajuus kristall, on vähemmän aikaa käytettävissä memory access.
Toinen asia ottaa tekemistä nopeus huomioon käyttö on ohjelmisto ajoitus.Software kirjoittajat käyttävät usein oletettu jatkuvan suorittamisen nopeus jalostajana kuin reaaliajassa viittaus tuottaa viivästyksiä.Koska DS89C430 toteuttaa ohjeita paljon nopeammin kuin standardi 8051, nämä aiemmin suunniteltu ajoitus silmukoita ei enää tuota alunperin tarkoitettu tuloksia.

Lue lisää uusi drop-in-vaatimukset:

http://www.maxim-ic.com/appnotes.cfm/appnote_number/26

Koska ulkoisen muistin ajoitus ei-sivu tila on lähes sama kuin 4-kellon-per-konesyklin aikana DS87C320 lukukuittauksen ja

http://www.maxim-ic.com/appnotes.cfm/appnote_number/56

ei haittaa.

 
Nopeus ja ajoitus, kuten Silvio on selittänyt, ovat erittäin criutial ..
On kuitenkin lisää, että sinun pitää olla tietoinen, nimittäin turvatasosta (esim. turvallisuus bittiä) ..
Tutustu kuva alla selvittää mahdollisia tasolla ..

Terveisin,
IanP
Anteeksi, mutta sinun on kirjautumistunnuksen nähdäksesi tämän liitäntävaatimuksia

 
Voinko kysyä teiltä yhden kysymyksen: mikä on se syy, jonka haluat korvata 8051 kanssa DS89C430?
Vaistoni tunteet ovat, että ilman useita ohjelmistoja ja laitteistoja muutokset eivät voisi korvata yhden suorittimen muiden, vaikka Maxim väittää, että voit ..
Tämä suoritin on vain nopeasti ..(≈ 1MIPS per 1MHz tasatuntien), ja vaikka "hidas se alas" asettamalla / clearing tiettyjen bittien sen SFR (se tapa, kuinka voit kumistin tehdä näin?),
En usko,
että voit korvata "vanhoja" 8051 sen "vanhan" ympäristön kanssa DS89C4XX ja odottaa sen toimimaan??!

Terveisin,
IanP

 
Tämä yksinkertainen syy on se, että minulla on vain joitakin DS89C430 ja luulin, että ne olisivat ristiriidassa nopeammin.
Nyt, mihin toimiin pitäisi ryhtyä, jotta ne toimi?

DrWho

 
Haluaisin aloittaa korvaa kiteet:
from sanoa, 12MHz (11,059200 MHz, ..) on 2MHz tai vähemmän ..
Mutta jälleen kerran, ei se mitään järkeä?
Luultavasti kuluttaa enemmän rahaa nämä kristallia kuin sanoa, AT89S51 Flash ..

Terveisin,
IanP

 
Yritin kanssa 1.832MHz kristallin ja se ei vieläkään toimi.
Oma piiri saa tietoja sarjaportissa, asettaa bytes osaksi puskurin ja suorittamisen jälkeen tietyt laskelmat lähettää tiedot avulla 2 mikrosuoritin nastat: tiedot ja kello.
Nopein baudinopeus kanssa 11MHz kellon ja tinkimättä tavua 1200bps.
Tarvitsen 9600bps!

 
9600bps voitaisiin saavuttaa helposti 11.0592Mhz kello.

Olet ollut pienentää baudinopeus on 1200bps vuoksi menettänyt tavuja?
Tai koska mikro puskurin saa täytetään nopeasti ja et ole pystynyt input data rate?
Sitten pysäkit voit käyttää handshake RTS-CTS ja pitää 9600bps?
Tai hanki isompi sarja-puskuriin.

Jos suorittamaan joitain laskeminen ennen lähettämistä tietojen avulla 2 nastat (tiedot ja kellonkotelot) on tehtävä nopeasti ja sitten odottaa toimittamaan tietojen mukaan pienempi kellon ajan.
Sitten mitä voitto suorittamaan nopeasti laskelmia?

En ole liikenteen poliisi katsomassa bytes kävelevän sarjaportin johdot on vakionopeudella 1200bps (seuraamus nopeus) ja suuttua jos runnning klo 9600bps vuonna puhkeamista.

The IanP neuvoja käyttää 1.832Mhz kristall oli säilyttääkseen nykyisen laitteiston ja ohjelmiston (lähes) kokoonpanon ja saada hyötyjä siirtymässä DS89C430 vain flash-muistin näkökulmasta.

Olen melko varma, että voit saavuttaa 9600bps ilman vaihtaa DS89C430 mutta litttle muutoksia nykyisiin ohjelmisto rutiineja.

Siirtymässä DS89C430 ja käyttää valittavissa korkean speeed kello on ajastimet voivat vaikuttaa baudinopeus sukupolven varten sarjaporttia.
Tiedän, olet lukenut tämän: http://www.maxim-ic.com/appnotes.cfm/appnote_number/600

Mutta joitakin muutoksia on tehtävä ohjelmisto.
Ja en todellakaan usko, että se worths pyrkimys ja päänsärky, kunnes kaikki tarvittava ohjelmisto muutoksia on täyttynyt vanhassa projektissa.

Katso 9600bps baudinopeus saapuvan charater on saanut vuonna 1041 meille.
Kunnes SCON.0 ollaan voit suorittaa 960 osoitteessa 11,0592 MHz XTAL kellon ja standardi 8051.No, suurin koska ei kaikki ohjeet toteutetaan yhden konesyklin aikana.Mutta voit ottaa keskimäärin 700 ohjausta, jotka ovat aivan erän.

Jos nyt saa 1200bps sitten on kauhea kiire aikana 7680-opetus (enintään).
Hope käytät keskeyttää eikä äänestyspaikkoja varten SCON.0 ja SCON.1

 
Kun 1.832MHz kristalli (I guess oikea taajuus olisi 1,8432 MHz), mitä todellisuudessa sinulla on?
Tarkoitan jälkeen nollata, mitä tapahtuu seuraavaksi?

Terveisin,
IanP

 
Olet oikeassa siinä on 1,8432 MHz.
I am using terminaalin ohjelmistoja valvoa sitä, mitä on menossa ja tulossa ulos oman piirin ja standardi 87C51/89C51 jälkeen kunkin merkkijono ASCII bytes minun piiri lähettää 1 byte niin ACK.
Kun DS89C450 on mitään lähettämisestä ja outoja palkokasveille joka 30ms näkyvät RST nastainen ja näyttää siltä, että mikro on käynnissä loputon silmukka.
Jälkeen nollata sen pitäisi lähettää 20 tavua tunnistus, mutta en näe mitään minun seurata näytön niin oletan, että mikään ei ole lähetetty.
Kun korvata DS89C450 takaisin 87C51 se lähettää IDentifier tavua ja se ei voi synkronoida sarjaportti koska 1,8432 MHz kristalli, mutta ainakin se lähettää bytes ulos.Jos minä korvata kristalli on
11059 MHz kaikki toimii OK.
Miksi DS89C450 ei toimi?

 
DrWhoF wrote:Kun DS89C450 on mitään lähettämisestä ja outoja palkokasveille joka 30ms näkyvät RST nastainen ja näyttää siltä, että mikro on käynnissä loputon silmukka.

 
Code:ORG 0000HMOV TMOD, # 20h

MOV SCON, # 52h

MOV PCON, # 80h

MOV TH1, # 0FAh

MOV TCON, # 40h; SETB TR1MOV 50H, # 'H'

MOV 51h, # "E"

MOV 52h, # "L"

MOV 53h, # "L"

MOV 54h, # 'O'

MOV 55h, # 10; LF

MOV 56h, # 13; CR;-------------------------------------------------

; Main Program

;-------------------------------------------------Ser_Loop:

LCALL send_stringNot_Continue:

MOV B, # 0FFh

DJNZ B, $

LCALL ser_in

CJNE A, # "c", Not_ContinueSJMP Ser_Loop;-------------------------------------------------send_string:

MOV R0, # 07h; Loop counter ..

MOV R1, # 50HS_Loop:

MOV A, @ R1

LCALL Ser_Out

INC R1

MOV B, # 0FFh

DJNZ B, $

CPL P1.0

DJNZ R0, S_Loop

RETSer_Out:

JNB TI, $

CLR TI

MOV SBUF, A

RET;-------------------------------------------------ser_in:

JNB RI, $

CLR RI

MOV A, SBUF

RET; ------------------------------------------------- --END; ------------------------------------------------- --END
 
Irrotin RST nastainen ja käytetään koodisi.
Se lähettää HELLO kaiken uudelleen.
RST nastainen on pulssien joka 30ms.

 
Sarja pulssijoukon annetun RST nastainen johtuu niiden Watchdog Timer ..
Jos haluat poistaa Watchdog Timer palauttaa sinun on selkeä EWT verran WDCON rekisteriin ..
Koska se on erikoinen toiminto bit, pääsyä ei ole suora, että useimmat bittien Special-Function Registers (SFR).
Ajastettu pääsy edellyttää ohjelmiston kirjoittaa kaksi erityistä arvot kuin ajastamaton-pääsy rekisteriin kahden peräkkäisen opetus jaksoissa.Arvot AAH, sitten 55h, on kirjoitettava peräkkäisen ohjeet TA rekisteriin SFR sijainti C7h.Jos kirjoittaa suoritetaan oikein, kirjoittaa pääsyn avautuu kolmen muisti jaksoissa.Aikana tämä ikkuna, ohjelmisto voi muuttaa suojatun bit.Koodit avata ajastamaton pääsyn ikkuna ovat:
MOV TA, # 0AAh
MOV TA, # 55h
Joten, muutettu koodi tulostaa HELLO ja odota, että keskeiset "c" (ja kääntämällä ON / OFF-nastainen P1.3) on alle (Q = 11,0952 MHz, 9600bps) ..Terveisin,
IanP
Code:$ NOPAGING

$ MOD252WDCON DATA 0D8h

TA DATA 0C7hORG 0000HMOV TA, # 0AAh

MOV TA, # 55h

CLR WDCON.1; Disable EWTMOV B, # 0FFh

DJNZ B, $MOV TMOD, # 20h

MOV SCON, # 52h

MOV PCON, # 80h

MOV TH1, # 0FAh

MOV TCON, # 40h; SETB TR1MOV 50H, # 'H'

MOV 51h, # "E"

MOV 52h, # "L"

MOV 53h, # "L"

MOV 54h, # 'O'

MOV 55h, # 10; LF

MOV 56h, # 13; CR;-------------------------------------------------

; Main Program

;-------------------------------------------------Main_Loop:

LCALL Send_StringNot_Continue:

MOV B, # 0FFh

DJNZ B, $

LCALL Ser_in

CJNE A, # "c", Not_Continue

SJMP Main_Loop;-------------------------------------------------

; Merkistötuki lähetti subroutine

;-------------------------------------------------Send_String:

MOV R0, # 07h; Loop counter ..

MOV R1, # 50HS_Loop:

MOV A, @ R1

LCALL Ser_Out

INC R1

MOV B, # 0FFh

DJNZ B, $

CPL P1.3

DJNZ R0, S_Loop

RETSer_Out:

JNB TI, $

CLR TI

MOV SBUF, A

RET;-------------------------------------------------

; Merkistötuki vastaanottaa subroutine

;-------------------------------------------------Ser_in:

JNB RI, $

CLR RI

MOV A, SBUF

RET; ------------------------------------------------- --END
 
Oletuksena virta-ja reset tilasta EWT määräytyy Vaihtoehto valvontavaliokunnan Rekisteröidy bit 3 (OCR.3) sijaitsee viidentenä flash-muisti estää.

Asettamalla tämän bittinen (OCR.3) 1 poistaa vahtikoira reset toiminto teho-, ja selvitys tämän bittinen 0 mahdollistaa vahtikoira reset-toiminnon automaattisesti.

Niin kauan kuin tämä lohko (in brand new DS89C430 chip) on oletusarvoisesti arvo FFH ja jos vahtikoira on lähde palauttaa sitten joko DrWhoF tai joku muu teki tämän:
Anteeksi, mutta sinun on kirjautumistunnuksen nähdäksesi tämän liitäntävaatimuksia

 
Testasin että koodi ulkoisten (EPROM) ja sisäisten (FLASH) vaihtoehtoja ja se toimi hyvin.
Ilman CLR EWT DS89C450 on nollattu ja lähettää HELLO on silmukka.
Kun suorittaa R komento tämä on mitä olen:
R <0D> <0A>
LB: 00 OCR: F7 ACON: 1F CKCON: 01 P0: FF P1: FF P2: FF P3: FF FCNTL: B1 <0D> <0A>
Miten voin poistaa OCR rekisteristä FF?
Minulla ei ole rinnakkain ohjelmoija ja-järjestelmän ohjelmointi ei hyväksy
W OCR FF

 
Ainoa ratkaisu on käyttää In-Application-ohjelmointi.

Käytä edellä koodi pyyhittävän OCR rekisteristä FFH.

Code:WDCON DATA 0D8h

TA DATA 0C7h

FCNTL DATA 0D5hORG 0000HMOV B, # 0FFh

READ_FCNTL:; Varmista, että FBUSY bit on 1

MOV A, FCNTL; ilmoittamaan flash MMU on passiivisessa tilassa.

JB ACC.7, ERASE_OCR

DJNZ B, READ_FCNTL

MOV A, # 01

AJMP ERROR; aikakatkaisuERASE_OCR:; Kirjoita 0Ch että FCNTL rekisteri

MOV TA, # 0AAh käyttäen ajastamaton pääsy järjestyksessä.

MOV TA, # 55h

MOV FCNTL, # 0ChMOV B, # FFH

PROG_START:; Varmista, että FBUSY bit on 0

MOV A, FCNTL; ilmoittamaan ohjelmointi on alkanut.

JNB ACC.7, WAIT_ERASE

DJNZ B, PROG_START

MOV A, # 02

AJMP ERRORMOV B, $ FF; Odota FBUSY bittinen palata 1

MOV R0, $ FF; ilmoittamaan lopussa ohjelma-toiminnasta.

WAIT_ERASE:

MOV A, FCNTL

JB ACC.7, PROG_ERROR

DJNZ B, WAIT_ERASE

DJNZ R0, WAIT_ERASE

MOV A, # 03

AJMP ERRORPROG_ERROR:; Varmista Ferr on 0

MOV A, FCNTL; ilmoittamaan ei programming error.

JNB ACC.6, READY

MOV A, # 04VIRHE:

MOV P1, A; testin kanssa DVM P1 nastat asema

AJMP $READY:

MOV P1, # FF

AJMP $

 

Welcome to EDABoard.com

Sponsor

Back
Top