하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.
번호 | 분류 | 제목 | 글쓴이 | 조회 수 | 날짜 |
---|---|---|---|---|---|
6 | Digital 회로 설계 | RS플립플롭으로 존슨카운터 만들기 | hnp109 | 115 | 2021.12.03 |
5 | Digital 회로 설계 | Reset IC 관련 CPU 문의 드립니다.3 | Maa | 196 | 2021.06.28 |
4 | Digital 회로 설계 | 회로 질문드립니다. | -2923 | 192 | 2020.12.12 |
3 | Digital 회로 설계 | relay 질문드립니다. | -4903 | 145 | 2020.11.29 |
2 | Digital 회로 설계 | 잡은 많은 신호가 NOT게이트 통과한다면?1 | -3953 | 154 | 2020.10.21 |
1 | Digital 회로 설계 | 논리회로 카르노맵 이렇게 그려도 되나요?1 | Qwerty87 | 227 | 2020.09.22 |
처음부터 책에 나온 설명대로 uVsion 설정을 바꾸셨다면 이상이 없겠지만
안바꾸셨으면 바꾸셔야 할부분이
1. target 탭부분에
Memory Model : Large 로 바꾸시구요.. small로 하나 large로 하나 상관은없는데 대부분 large로설정하구요
그리고 밑에 off-chip code memory 부분과 off-chip xdata memory 부분을 바꾸시면 되구요
그림처럼 각 주소 할당 번지가 책에 저렇게 되어있다면 맞구요
저 같은경우에는 off-chip code memory 부분에 0x5000 0x6000이고
off-chip Xdata memory 부분에 0xB000 0x1000 으로 되어 있습니다 각 보드마다 틀릴거라 생각 듭니다
우선 memory model 설정부분 large해보시구요
그다음으로 설정해주는 부분이 C51탭부분에 interrup vectors at address부분 체크 하시고 주소 써주시는거랑
debug 탭에 오른쪽에 있는 use 체크 해주시고 맞게 하셨네요 그리고 저같은경우에는 디버킹 툴 세팅부분에
breakpoihnts,toolbox,memory display 부분 체크 되어있네요
책에 그대로 되어있는데 안된다 하시면..흠.. 그 책 CD에 있는 프로젝트 소스 옴기셔서 실행해보시는것도 좋구요
그래도 안된다면 하드웨어적인 문제로 밖에 보이지 않네요
그리고 com2로 사용하신다고 하신거 같은데 com1이네요;;
직접 해보면서 오류를 찾고 싶지만 직접 못도와드려서 죄송하네요 ;;;
하시면 될것같네요 usb같은거 말고 데스크탑 본체에 시리얼 포트가 있는 컴터로요~
만약에 하드웨어 적 문제라면.. 어느 쪽에서 문제가 있는 거예요!?
일단.. 전원부는 다 들어 와서.. 기본 세팅 화면은 다 뜨거등요..;;;;
통신부분이 안되면..;; 이긍;;
분명히 롬에 프로그램이 들어있는 상태인거 같군요..
그럼...이제 생각해 볼 문제가 좀 압축이 된거 같네요...(물론 계속 저의 상상일 뿐이라.ㅡㅡ)
어쩌든지..간에..
이렇게 한번 해보세요..우선...의심되는게 하나 있어서요..
"시작" => "프로그램" => "보조프로그램" => "통신" => "하이퍼터미널"
실행하셔서..
보레이트 9600 ..... 패리티 None 데이터비트 8bit 스탑비트 1bit 흐름제어 없음 ...
로 셋팅하시고..
보드의 리셋을 한번 눌러보세요..
혹시 어떤 문자가 나오는지....
하이퍼터미널을 들어 가니깐.. 뭐.. 텔넷 뭐.. 하라고 하던데;;
이그응.. 근데.. 궁금한게 있는데요..
지금 이 보드에서는 isp를 지원 안하니깐..
롬라이터를 꾸워야 되잖아요..
그 꿉기전에.. 시리얼포트를 이용해서..
직접 보드에서 돌아가는지 확인 해 볼려고 하는건데..
모니터로만 확인을 할 수 있고,, 시리얼 포트를 통해서 연결된
보드에서는 확인 할 수 없는 건가요!?
얼레 그 보드가 컴터상에서 만든 소스를 가지고 Put_String("hello");
이런식으로 하면 보드 LCD화면에 hello라고 뜨는걸로 알고 있거든요 그러니까 소스를 짜면 보드로 연결해서 디버깅->런하면
그렇게 되져... 보드로 확인할수 있는걸로 알고 있구요 ... 그래서 led제어 lcd제어 timer , interrupt,adc머 여러가지 보드에 있는
것을 소프트웨어 C나 어셈블리를 이용해서 소스 짜고 보드로 돌리는게 그 보드가 있는 이유 같네요
하이퍼터미널은...
시리얼 통신용 프로그램을 만들었을시에 시리얼포트 함수 구현하고 그걸 출력 해야 메뉴 선택 되고 만드신 프로그램으로
제어용으로만 사용해보았구요 아무런 소스도 안짠상태에서는 연결을 안해 봤습니다 설정을 해줘야 돼구요
보드네에 어떤연결 프로그램이 있는지 모르겠네요 바로 다이렉트로 보드랑 연결은 해보지 않아서
8051이라서 자동으로 짜여져 있는 소스는 없는것 같습니다.
연결을 하여도 연결만 되지 머 특정한 프로그램이 뜨거나 그러진 않구요
pxa255등과 같은 머 32bit 용 보드 회사에서 만들어서 그런것들에는 기본적으로 어떤프로그램이 있어서
텔넷으로 접속해서 머 설정 이런건 알겠는데 8051은 잘모르겠네요
보드에서 확인할수 있을거에요
기본 세팅 화면이라고 하시는게 제가 알기론 전원을 그냥 키면 LCD는 무슨 wait 어쩌고 기다리시요 영어 막나오고
led는 불이 한번씩 다 켜졌다가 꺼지고 세그먼트는 숫자 막 올라갔다 내려가고 머 이런거 말씀 하시는건가요?
처음에 전원 키면요 .. reset버튼 눌러도 그렇게 되지 않나요? 암튼 그냥 그건 보드 키면 이게 정상이구나 알려주는거구요
하드웨어 적인게 보드랑 컴터랑 연결이 안됬다는 말이에요~
제가 보기에는 ;;;
잘못 되어서 안잡혀 있어서 인식이 안되는거 같아서요...세팅을 제대로 하셨는지 모르겠구요
도무지 모르겠다 연결이 됬는지 그러시면 다른 친구분이나 pci로 시리얼 포트가 있으신분컴터로 가져가서 간단한 소스를 돌려보시면
만약 된다면 연결 상태 문제 인거 같네요... 계속 말이 길어지네요 ㅈㅅ ;;
제가 확인해 보니깐...미니로봇의 보드가 확실히 맞군요..
그거 모니터프로그램이 들어있는 형태의 보드 입니다.....
그리고 시리얼이 정확히 연결되 있으면..
하이퍼 터미널로..연결해놓고....(프로그램 아무것도 안넣고) 보드를 리셋하면..
연결이 제대로 되어 있다면..문자가 뜰겁니다...행복하면 님의 보드에 LCD가
잘동작되었다고 했으니...제가 보기에는 모니터 프로그램이 잘 동작하고 있는 상태입니다.
그거 보레이트 9600 으로 맞췄었는데...19200 일수도 있습니다....그보드는 벌써 써본지가 10년이 넘은거라..ㅡㅡ
정확히 기억이 나지 않지만...
우선..케일에서 작업하지 마시고..
하이퍼터미널에서.....시리얼이 잘 연결되어 있는지 확인해보세요..
그리고 윈본드꺼 칩은 완전히 8031하고 똑같습니다...그게 아마 더 싸서 그걸로 썼나봅니다.
특별히 칩에 하드웨어적인 디버거는 없구요..오리지널 보다 속도만 더 빠른 형태힙니다.
제가 보기에는 그것만 확인하시면...될것 같군요....
+------- 8051(31)monitor v2.0 miniROBOT -----+
| [www.minirobot.co.kr] |
| [H] Help |
| [M] Memory test [4000h-bfffh] |
| [C] memory Clear [4000h-bfffh] <= 0 |
| [D] Dump data,code [0000h-ffffh] |
| [L] Loading program[4000h- |
| [R] Running at 4000h(0),4100h(1) |
| [P] Port1 out |
+-----------------------------------------------+
대충 이런 비슷하게 뜰겁니다...
공부할 때는 그럭저럭 괜찮은데......나중에 개발 다 하고나서는 ....좀 않좋은 점이 있죠..
켜자마자 내가 만든 프로그램을 띄우려면...
모니터프로그램 지우고..내가 만든 프로그램을 4000번지 시작이 아닌..0번지 시작으로..다시 바꾸고..
롬에다 꿔야지요.....
그래서 이런 형태의 보드는 학습용으로는 좀 사용할 수 있지만..개발용으로는 좋지 않습니다.
어쨌든 간에.....Max232회로가 문제가 없다면....그리고 Tx, Rx부분이 정확히 연결이 되어 있다면...
분명히 보드 동작시키는데는 문제 없으실 겁니다.
만일..파워켰는데...글씨가 막 깨지면서..출력되면..
보레이트가 맞지 않는 겁니다..
만일 9600이었으면..19200 으로....바꿔보시고..테스트 해보세요.
가끔 크리스털이 11.0592에서 9600으로 맞춰져 있는 경우도 있으니까요..
그런데 크리스털이 22.1184이면 19200으로 맞춰야 제 동작이 되겠죠.
전 하이퍼 터미널을 들어가니깐.. 텔넷으로 들어 가더라구요,., 이그응.. ㅠㅠ
그리고 지금 이 보드에서는 isp를 지원 안하니깐..
롬라이터를 꾸워야 되잖아요..
그 꿉기전에.. 시리얼포트를 이용해서..
직접 보드에서 돌아가는지 확인 해 볼려고 하는건데..
모니터로만 확인을 할 수 있고,, 시리얼 포트를 통해서 연결된
보드에서는 확인 할 수 없는 건가요!?
이것도 궁금 하구요,,,
우선 USB시리얼 케이블을 연결하시면...컴포트 하나가 생길겁니다.
그리고 나서..하이퍼 터미널을 띠우면..아래 화면을 볼 수 있지요..
여기서 아무 이름이나 넣고..확인 하시면..
이런 창을 보실 수 있으실 겁니다..여기에서..컴포트 선택하시구요..
만일 컴퓨터에 컴포트가 없으면 ...TCP-IP만 있을 겁니다...
어쨌든..여기서 확인하시면..
컴포트 설정 부분이..나오는데....
속도..맞춰주시고...데이터 비트, 스탑 비트, 패리티 비트..흐름제어..등을 셋팅합니다.
보통..흐름제어는 안쓰구요.....데이터 스탑 패리티..를 8 1 None 로 많이들 사용합니다.
그러면..하이퍼 터미널이 ...시리얼통신을 하기 위한 상태가 되는거구요.
컴포트에 연결되어 있는 8051보드의 리셋을 눌러보시기 바랍니다...
문자가 아마 뜰거라고 생각됩니다. ...아마 안된다면..먼가 연결이..잘못이 있을 겁니다...
수고하세요....파이팅..
그럼.. 잘못된건 없는거 같은데;;
이그응..;; ㅋㅋ
점점 사건은 미궁 속으로....;; ㅋㅋㅋ
그 내용은...지금은 좀 힘들고..집에 들어가서 올려드리지요..
제가 보기에는.....정확하진 않지만....Keil C 용 모니터 프로그램을 미니로봇에서 제공하고 있는지도 모르겠습니다.
전 사실 미니로봇꺼 보드를 사용해봤지만...Keil하고 연동해서 사용해 보진 못해서...
확신은 못한다는..
대신에..케일하고..하이퍼터미널 같은 터미널 프로그램을 이용하여..8051을 공부하는 방법을 설명 드리려구요..
우선..책에 있는 소스를 만드시고...링커옵션이나..컴파일 옵션은..책하고 똑같이 따라서..
컴파일 하세요...
그래서 ...만들어진 Hex파일이 있을 겁니다..
우선..그 파일이름을 설명의 편의상 test.hex 라고 가정합시다..
그리고 위에 쓰여진데로 하이퍼 터미널이 연결된 상태에서...
리셋을 누르면...모니터 프로그램이 동작할 겁니다..
음...제가 보드가 없으니깐...스크린 샷을 보여드릴 수가 없군요..어쨌든..간에..
"L" 을 누르면...다운로드 대기상태가 될 겁니다..(Loading Program)
그런뒤에...하이퍼터미널의 메뉴중에 "전송" => "텍스트 파일보내기" 를 실행합니다.
그럼 파일 대화상자가 뜨는데..그곳에서..파일이름에 *.hex 를 치시고..
아까 만든 test.hex를 찾아갑니다.
test.hex 파일을 선택하셨으면.."열기" 버튼을 누르면...다운로딩이 진행됩니다.
다운로딩이 끝난뒤...이제 프로그램을 실행하시면 됩니다...
모니터 프로그램 메뉴에서 "R" 메뉴가 있을 겁니다. (Running .....)
제가 보드가 없어서 정확한 설명을 드리긴 힘들지만...아마 잘 보시면..이해하실 수 있을 거라고 생각됩니다.
건투를 빕니다..^^;
참...근데...모니터 프로그램의 메뉴가...
+------- 8051(31)monitor v2.0 miniROBOT -----+
| [www.minirobot.co.kr] |
| [H] Help |
| [M] Memory test [4000h-bfffh] |
| [C] memory Clear [4000h-bfffh] <= 0 |
| [D] Dump data,code [0000h-ffffh] |
| [L] Loading program[4000h- |
| [R] Running at 4000h(0),4100h(1) |
| [P] Port1 out |
+-----------------------------------------------+
이렇게 뜨나요? 아니면..메뉴가 약간 다른가요?
예.. 위 그림과 비슷한 문자가 출력 된거 같애요..
형태는 똑같아요..
자세한 내용은 확실히 안봐서;;;;ㅋㅋ
근데.. 했는데.. run했는데..
Start address : 0000
End address : 4076
[R] program run
[Q] retun prompt
Program Starting point select
0:4000h 1:4100h ?
이런 메세지가 뜨더라구요..
그래서.. 둘다 해봤는데.. 안돼요.. ㅠㅠ
흠...혹시 만들어진 hex파일 첨부 해주실 수 있나요?
그리고 run은 4000번지로 시키는게 맞을 겁니다...
근데 중요한건 링크할 때 시작 번지를 4000번지에 맞추셔야 해요..
만일 0번지로 맞춰져 있으면....실행이 안되는게 당연합니다.
근데 램이 위치하는 곳이 4000번지 맞나요? 그거도 좀 의문인데...GAL이 어떻게 꿔져 있냐에 따라서.
메모리 맵이 달라지니깐요...
연결에 문제가 없다면 keil 의 메모리 설정 부분이 좀 의심이 가는데요
그 보드에 off-chip code memory 와 off-chip xdata memory 부분 잘 설정 해주신건지 모르겠네요..
commidi님 말씀 처럼 램 위치하는 곳이 4000번지가 아니고 머 예를 들어 얼레는 5000번지부터 시작하는데
잘못설정 하시면 안되는걸로 알고 있습니다.. 메모리 구조 부분 Large 로 설정 바꾸시구요 맨위에 그림에서
행복하면님이 보시는 8051 마이크로프로세서 응용로봇제작 ? (세화) 이책 저도 봤었는데 흠...
그책안에서는 4000번지로 시작했는지 모르겠네요 우선 keil 부분 세팅 하는 부분이 있었는지 잘 모르겠구요
keil에서 컴파일 하고 hex파일 만들어서 하이퍼터미널로 하셨을때 어차피 keil에서 hex파일을 만든거기때문에
설정부분을 잘못하셨다면 keil에서나 하이퍼 터미널이나 똑같이 안돌아가는건 맞는거 같네요
예전에 기억에...(가물가물하지만...ㅡㅡ) 8000번지 였던거도 같은데...ㅡㅡ
어쨌든 간에 메모리 맵은...갈에 의존됩니다...혹시 GAL소스가 있으시면...그거보고 메모리 맵 확인하시면..
될 거같군요..
누군가가 작성한 keil사용법을 올려 드리겠습니다.
참고하세요 ^^;