Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięPoroblem z 80c31 i emulacja at89c2051.... Pomocy!!!
Moderatorzy:Jacek Bogusz, Moderatorzy
Witajcie, mam spory problem.... Zrobilem sobie uklad Emulator at89c2051 na podstawie schematu z PRAKTYCZNEGO ELEKTRONIKA 10/99, troche go zmodifikowalem ( w zalaczniku jest schemat ), chodzi oto ze czesc ukladu dziala poprwawnie. Procesorek At89c2051 wysyla do pamieci program i veryfikuje go dla 80c31 i to dziala mi dobrze ale juz po wgraniu i po resecie 80c31 ukald nie rusza, tz wgrywam program testowy ze ma zmieniac cyklicznie porty P1 i P3 ale nic po resecie cisza . sprawdzalem z trzema innymi prockami i nic to samo. Zmienialame kwarce i tez nic. Ale testowalem piny nie podlaczone A13..15 ukaldu 80c31 i tam pojawia się sygnal tak jakby procek nie pobieral z pamieci nic tylko tak jak by ciagle pracowal w kolko czyli jakby odyczytywal 'NOP' i krecil się od adresu 0000 do FFFF. Nawet zmienialem pamiec na inna i tez dalem szybszy 74HCT574 i tez nic, co moze byc nie tak. troche mnie to denerwuje ze to nie dziala.... Moze musze dac rezystory podciagajace pod port 'P0' , no nie wiem... chce to zrobic bo mnie denerwuje ze mi to nie wychodzi i ile czasu stracilem na ten uklad...
Dodam ze 80c31 ma nowy ze sklepu.... Wiec poradzcie mi co jest nie tak ...
ps. Dokladnie uzylem :
- TS80c31x2
- ms62256l-70 (ram) dalem wiesza ona dziala dobrze (bo testowalem)
- 74hct574
- at89c2051
no i nic , probowalem dawac inne ramy i nie dziala, 80c31 nie startuje z wgranym programem do ramu.... co moze byc tego przyczyna, probowalem tez zmieniac uklad do resetowania i nic ... jest taki sam obiaw jak opisalem wczesniej.... probowalem tez z innymi prockami 80c31 i tez nic nie pomoglo jaki blad popelnilem.... wszystko sprawdzalem dwa razy i polaczenia sa tak samo jak na schemacie.....
Dodam ze 80c31 ma nowy ze sklepu.... Wiec poradzcie mi co jest nie tak ...
ps. Dokladnie uzylem :
- TS80c31x2
- ms62256l-70 (ram) dalem wiesza ona dziala dobrze (bo testowalem)
- 74hct574
- at89c2051
no i nic , probowalem dawac inne ramy i nie dziala, 80c31 nie startuje z wgranym programem do ramu.... co moze byc tego przyczyna, probowalem tez zmieniac uklad do resetowania i nic ... jest taki sam obiaw jak opisalem wczesniej.... probowalem tez z innymi prockami 80c31 i tez nic nie pomoglo jaki blad popelnilem.... wszystko sprawdzalem dwa razy i polaczenia sa tak samo jak na schemacie.....
Pierwsze sugestia to taka, że jako zatrzask szyny adresowaj A0..A7 stosuje się układ 74HCT573 (nie 574). Różnica polega na tym, że 573 jest zatrzaskiem (rejesterm z wpisem poziomem) a 574 jest rejestrem (rejesterm z wpisem zboczem). W aplikacji wymagany jest zatrzask.
Z pewnością sygnał EA masz przyłączony do masy (bo musi być tam logiczne zero). W takiej sytuacji do 'testów życia' dobrze jest obserwować sygnal ALE oraz ewentualnie PSEN.
Z pewnością sygnał EA masz przyłączony do masy (bo musi być tam logiczne zero). W takiej sytuacji do 'testów życia' dobrze jest obserwować sygnal ALE oraz ewentualnie PSEN.
Dobrze by było, jak byś podrzucił mi schemat (najlepiej w bitmapie) na
an177@poczta.fm
an177@poczta.fm
witam
Używam takiego emulatora z procesorem 89c51 .
Chodzi bez zarzutu,ale przy urucomieniu były małe problemy.
1. nie wszystkie kwarce chciały się wzbudzićz układem
2. win95 poprawnie obsługuje com dla tego emulatora ,natomiast win98 inaczej obsługuje com i emulator nie będzie działać poprawnie. (należy napisać własny program do przesłania lub skożystać z bascoma)
3. zwracaj uwagę na diody sygnalizacyjne ,czasami gdy komputer jest mocno obciążony pracą ,a w tym czasie następuje przesłanie programu do emulatora ,emulator wykaże błąd.
PZD
ZYFER
Używam takiego emulatora z procesorem 89c51 .
Chodzi bez zarzutu,ale przy urucomieniu były małe problemy.
1. nie wszystkie kwarce chciały się wzbudzićz układem
2. win95 poprawnie obsługuje com dla tego emulatora ,natomiast win98 inaczej obsługuje com i emulator nie będzie działać poprawnie. (należy napisać własny program do przesłania lub skożystać z bascoma)
3. zwracaj uwagę na diody sygnalizacyjne ,czasami gdy komputer jest mocno obciążony pracą ,a w tym czasie następuje przesłanie programu do emulatora ,emulator wykaże błąd.
PZD
ZYFER
schemat chyba dodalem w pierwszym liscie... wysylam ci na email bo nie moge go dolaczyc na forum, nie wiem czemu, ok....
wczesniej w ukladzie zastosowalem 74ls373 i tez nie dzialalo ....
aha... wina PC tu nic nie zmienia bo narazie program testowy wysylam z flasha At89c2051.... podam wam kod programu.....
;---------------------------------------------------------------
;Projekt : AT-89_SIMULATOR
;Version : v1.00
; Quarz : 24.000 MHz
; Assembler: ASEM51
; Datum : xx.xx.2004
;---------------------------------------------------------------
$MOD51
;
;---------------------------------------------------------------
ver equ 50h
; Begin_program
;---------------------------------------------------------------
org 00h
ljmp start
org 03h
reti
org 0bh
reti
org 13h
reti
org 1bh
reti
org 23h
reti
org 2bh
reti
; Funktions
;***************************************************************
$INCLUDE (UART_2.a51)
;***************************************************************
; Reset_program
;---------------------------------------------------------------
start:
mov r0,#7fh
clr a
m0: mov @r0,a
djnz r0,m0
mov sp,#60h
;***************************************************************
; Main_program
;---------------------------------------------------------------
main:
; call SERIAL_INIT
INC r5
inc r6
setb p3.1
;========================================
setb p3.2
setb p3.5
setb p3.7
setb p3.4
;-----------------------------------
;call FILL
mov dptr,#0000h
mov r0,#0
mov r7,#65h
bak:
mov a,r0
call UPLOAD
mov ver,a
call MEMORY_OUT ; zapis do ramu
call MEMORY_IN ;odczyt z ramu
inc dptr
cjne a,ver,err ;veryfikacja....
inc r0
djnz r7, bak
;-----------------------------------
ok:
call RST
;=====================================
; call SERIAL_IN
ende:
jmp ende
err:
call RST
rrr:
djnz r6,rrr ;error, miga dioda
djnz r5,rrr
mov r5,#120
xrl p3,#00000010b
jmp rrr
RST:
clr p3.3
mov p1,#0ffh ; reset
call tims
call tims
setb p3.3
call tims
setb p3.7
setb p3.5
setb p3.2
clr p3.1
clr p3.4
call tims
ret
;===================================
; WRITE TO MEMORY
;-----------------------------------
MEMORY_IN:
mov p1,dph ; addr hi
clr p3.3
call tims
setb p3.3
nop
nop
nop
mov p1,dpl ; addr lo
setb p3.7
call tims
clr p3.7
nop
nop
nop
mov p1,#255
mov a,#255
clr p3.2
call tims
call tims
mov a,p1 ; get data
setb p3.2
call tims
ret
MEMORY_OUT:
mov p1,dph ; addr hi
clr p3.3
call tims
setb p3.3
nop
nop
nop
mov p1,dpl ; addr lo
setb p3.7
call tims
clr p3.7
nop
nop
nop
setb p3.2
nop
nop
clr p3.5
mov p1,a ; data
call tims
call tims
setb p3.5
call tims
ret
tims:
mov r4,#25
djnz r4,$
ret
FILL:
mov dptr,#0000h
mmm:
mov a,#00
call MEMORY_OUT
inc dptr
mov a,dph
cjne a,#20h,mmm
ret
;-----------------------------------
org 0200h
UPLOAD:
inc a
movc a,@a+pc
ret
db 002h,000h,02Eh,032h,000h,000h,000h,000h,000h,000h,000h,032h,000h,000h,000h,000h,000h,000h,000h
db 032h,000h,000h,000h,000h,000h,000h,000h,032h,000h,000h,000h,000h,000h,000h,000h,032h,000h,000h
db 000h,000h,000h,000h,000h,032h,022h,032h,0E4h,0F5h,0A8h,0F5h,0B8h,075h,0D0h,000h,011h,02Dh,011h
db 02Dh,0F4h,0F5h,080h,0F5h,090h,0F5h,0A0h,0F5h,0B0h,075h,081h,030h,074h,001h,0FEh,0FDh,0DDh,0FEh
db 0DEh,0FCh,07Eh,0F0h,063h,090h,0FFh,063h,0B0h,03Fh,080h,0F2h,0FFh
END
wczesniej w ukladzie zastosowalem 74ls373 i tez nie dzialalo ....
aha... wina PC tu nic nie zmienia bo narazie program testowy wysylam z flasha At89c2051.... podam wam kod programu.....
;---------------------------------------------------------------
;Projekt : AT-89_SIMULATOR
;Version : v1.00
; Quarz : 24.000 MHz
; Assembler: ASEM51
; Datum : xx.xx.2004
;---------------------------------------------------------------
$MOD51
;
;---------------------------------------------------------------
ver equ 50h
; Begin_program
;---------------------------------------------------------------
org 00h
ljmp start
org 03h
reti
org 0bh
reti
org 13h
reti
org 1bh
reti
org 23h
reti
org 2bh
reti
; Funktions
;***************************************************************
$INCLUDE (UART_2.a51)
;***************************************************************
; Reset_program
;---------------------------------------------------------------
start:
mov r0,#7fh
clr a
m0: mov @r0,a
djnz r0,m0
mov sp,#60h
;***************************************************************
; Main_program
;---------------------------------------------------------------
main:
; call SERIAL_INIT
INC r5
inc r6
setb p3.1
;========================================
setb p3.2
setb p3.5
setb p3.7
setb p3.4
;-----------------------------------
;call FILL
mov dptr,#0000h
mov r0,#0
mov r7,#65h
bak:
mov a,r0
call UPLOAD
mov ver,a
call MEMORY_OUT ; zapis do ramu
call MEMORY_IN ;odczyt z ramu
inc dptr
cjne a,ver,err ;veryfikacja....
inc r0
djnz r7, bak
;-----------------------------------
ok:
call RST
;=====================================
; call SERIAL_IN
ende:
jmp ende
err:
call RST
rrr:
djnz r6,rrr ;error, miga dioda
djnz r5,rrr
mov r5,#120
xrl p3,#00000010b
jmp rrr
RST:
clr p3.3
mov p1,#0ffh ; reset
call tims
call tims
setb p3.3
call tims
setb p3.7
setb p3.5
setb p3.2
clr p3.1
clr p3.4
call tims
ret
;===================================
; WRITE TO MEMORY
;-----------------------------------
MEMORY_IN:
mov p1,dph ; addr hi
clr p3.3
call tims
setb p3.3
nop
nop
nop
mov p1,dpl ; addr lo
setb p3.7
call tims
clr p3.7
nop
nop
nop
mov p1,#255
mov a,#255
clr p3.2
call tims
call tims
mov a,p1 ; get data
setb p3.2
call tims
ret
MEMORY_OUT:
mov p1,dph ; addr hi
clr p3.3
call tims
setb p3.3
nop
nop
nop
mov p1,dpl ; addr lo
setb p3.7
call tims
clr p3.7
nop
nop
nop
setb p3.2
nop
nop
clr p3.5
mov p1,a ; data
call tims
call tims
setb p3.5
call tims
ret
tims:
mov r4,#25
djnz r4,$
ret
FILL:
mov dptr,#0000h
mmm:
mov a,#00
call MEMORY_OUT
inc dptr
mov a,dph
cjne a,#20h,mmm
ret
;-----------------------------------
org 0200h
UPLOAD:
inc a
movc a,@a+pc
ret
db 002h,000h,02Eh,032h,000h,000h,000h,000h,000h,000h,000h,032h,000h,000h,000h,000h,000h,000h,000h
db 032h,000h,000h,000h,000h,000h,000h,000h,032h,000h,000h,000h,000h,000h,000h,000h,032h,000h,000h
db 000h,000h,000h,000h,000h,032h,022h,032h,0E4h,0F5h,0A8h,0F5h,0B8h,075h,0D0h,000h,011h,02Dh,011h
db 02Dh,0F4h,0F5h,080h,0F5h,090h,0F5h,0A0h,0F5h,0B0h,075h,081h,030h,074h,001h,0FEh,0FDh,0DDh,0FEh
db 0DEh,0FCh,07Eh,0F0h,063h,090h,0FFh,063h,0B0h,03Fh,080h,0F2h,0FFh
END
dzieki za analize kodu, ale to nie wina softu, bo on dziala dobrze... sam go pisalem, a ten kod binarny co uploadudej do 80c31 to prosty program z zerowaniem ramu od 0-7f i zmiana cyklicznie portow p3 i p1 co pare sekund... aby sprawdzic czy chodzi procaek, veryfikacja jest ok, bo jak by cos bylo nie tak z ramem to by mi sygnalizowalo miganiem diody... to chyba ze program sie wgrywa od innego adresu nie od 0000, przeciez zapisuje pod 0000, wiec powinnien sie uruchomic tylko sa takie objawy jak w pierwszym liscie.... na pinach a12-a15 zmienia sie cyklicznie jakby krecil sie w kolko od adresu 0000-ffff i nie mogl odczytac danych tylko jakby laecial na samym NOP... moze jest blad w schemacie....
Po wielkiej przerwie udalo mi sie uruchomic ten symulator AT2051 wg, mojej przerobki.... NO i DZIALA !!!!!!! HURAAAAAA.....
Chyba to byla moja wina bo caly uklad zrobilem narazie na plytce uniwersalnej i laczylem kabelkami i chyba zrobilem blad w polaczeniach i
widocznie program sie wgrywal pod inny adress i 80c31 nie mogl sie uruchomic... no i musialem tez dac HCT 373 bo na LS'ach nie chodzil bo za wolne.... teraz moge sobie emulowac nawet programy na 24MHz...
I napisalem sobie do tego program w delphi i downloaduje sobie hex'a do AT2051 i potem uruchamiam... ale jestem zadowolony...
Super..... pozdrawiam .... Nara...
Chyba to byla moja wina bo caly uklad zrobilem narazie na plytce uniwersalnej i laczylem kabelkami i chyba zrobilem blad w polaczeniach i
widocznie program sie wgrywal pod inny adress i 80c31 nie mogl sie uruchomic... no i musialem tez dac HCT 373 bo na LS'ach nie chodzil bo za wolne.... teraz moge sobie emulowac nawet programy na 24MHz...
I napisalem sobie do tego program w delphi i downloaduje sobie hex'a do AT2051 i potem uruchamiam... ale jestem zadowolony...
Super..... pozdrawiam .... Nara...
Witam, po przerwie,,,,
znow mam dylemat.... symulator dziala ok... ale jak daje wiekszy kwarc to nie uruchmia sie program ale wgrywa sie ok... jak ten sam program daje na np.12Mhz to chodzi dobrze ale przy 24Mhz juz nie... czy to wina procka czy pamieci SRAM... bo procek pisze ze moze pracowac do 40Mhz,,, 87c51 taki mam....
znow mam dylemat.... symulator dziala ok... ale jak daje wiekszy kwarc to nie uruchmia sie program ale wgrywa sie ok... jak ten sam program daje na np.12Mhz to chodzi dobrze ale przy 24Mhz juz nie... czy to wina procka czy pamieci SRAM... bo procek pisze ze moze pracowac do 40Mhz,,, 87c51 taki mam....
Nie sądzę, aby przyczyną była pamięć SRAM. 24 MHz dla typowego mikrokontrolera, gdzie częstotliwość zegara systemowego jest dzielona przez 12, raczej oznacza, że pamięć więcej leniuchuje niż pracuje. Typowo w procesorach z rodziny C51 max częstotlowość pracy zegara wynosi 12 MHz. Niektóre modele (jak przykładowo ATMEL czy DALLAS) mają możliwość pracy z zegarem o większej częstltliwości. Podany symbol mikrokontrolera raczej informuje, że jest to mikrokontroler z pamięcią EPROM na program i nic więcej. Należy sięgnąć do oryginalnej dokumentacji tego procesora (model procesora + producent tego procesora) i sprawdzić, czy dopuszczalna jest dla niego praca z takim zegarem.
przy kwarcu 12Mhz chodzi OK, ale przy 24Mhz juz nie moge uruchomic programu... ale raz mi sie udalo moze to winna kondensatorow... bo na kilku ukladach ma 33p, 30p moze to tez ma jakis zwiazek... a procesorek to wkladalem rozne 80c31x2 ale ten cos spalilem go bo dalem za duze napiecie i stabilizator siadl hehe... pozniej dalem 87c51winbound czy jakos ta firma sie nazywa.... no i dalem tez 80c51....
Kto jest online
Użytkownicy przeglądający to forum: Google [Bot] i 23 gości