'공부/8051'에 해당되는 글 18건
- 2014.09.01 :: ABOV 디버거의 Keil plug-in
- 2014.06.19 :: ABOV 8051 On-Chip Debugger
- 2014.06.19 :: ABOV MC9x Code Generator
- 2012.11.15 :: 8051 레지스터 자료
- 2012.11.12 :: [ADUC831] ADUC831 간단 매뉴얼 6
- 2012.11.12 :: [ADUC831] ADUC831 간단 매뉴얼 5
- 2012.11.12 :: [ADUC831] ADUC831 간단 매뉴얼 4
- 2012.11.12 :: [ADUC831] ADUC831 간단 매뉴얼 3
ABOV 8051 계열의 MCU 들에 사용 하던 OCD-I/II 의 프로그램이 업그레이드 되었다.
가격대비 성능이 좋은 ABOV MCU의 유일한 단점이었던 디버깅의 불편함이
이번 업그레이드로 대폭 사라졌다.
그동안 가장 문제가 배열이나 구조체 디버거가 안되어서 트릭을 써서 확인해야 했고
자체 지원하는 디버거 프로그램이 무거워서 가끔 PC가 버벅거리는 문제도 있었다.
이번에 업그레이드 되면서 Keil plug-in 을 지원하는데
이로 인해 이런 문제가 한번에 해결되었다. KEIL 컴파일러에서 바로 하면 된다.
http://www.abov.co.kr/en/index.php?Depth1=5&Depth2=2&Depth3=2
Description
On-chip debugger program is for 8-bit MCUs what has a OCD1 and OCD2 block inside. This is a debugging software and support ABOV's M8051 series MCUs.
In order to use this software, OCD1/2 interface H/W is required. OCD2 uses two channel to download user's code, reads and modifies the internal memory and SFR(Special Function Register). So it can work even the MCU is attached on the target system. Besides, it can be run at MCU's maximum speed in OCD mode.
Features
- Supported M8051 core products.
- MCU emulation control via 2-pin OCD interface. Two pins interface OCD clock and data.
- Compact size and Cost effective emulator.
- Emulation and debugging on the target system directly.
- OCD2 used as an ISP (In System Programming) and real-time emulation.
- OCD1 is used to debug 'MC93/95/96' products and OCD2 is used to debug 'MC97', MC93F5516, OCD1 supporting products.
- Setup file includes KEIL plug-in debugger library. Please see details in OCD User guide.
Downloads
'공부 > 8051' 카테고리의 다른 글
ABOV 디버거의 Keil plug-in (0) | 2014.09.01 |
---|---|
ABOV 8051 On-Chip Debugger (0) | 2014.06.19 |
ABOV MC9x Code Generator (0) | 2014.06.19 |
8051 레지스터 자료 (0) | 2012.11.15 |
[ADUC831] ADUC831 간단 매뉴얼 6 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 5 (0) | 2012.11.12 |
Abov에서 만들어진 8051은 On-chip 디버거가 가능하다.
OCD1과 OCD2라는 전동 디버거 장비와 전용 프로그램을 사용 하면 된다.
On-Chip Debugger
Description On-chip debugger program is for 8-bit MCUs what has a OCD1 and OCD2 block inside. This is a debugging software and support ABOV's M8051 series MCUs. Features
Downloads
|
소스레벨 디버깅과 변수의 값을 확인/수정 등을 할 수 있다.
OCD2의 경우 동작중에 실시간 변수값 확인도 가능 하다.
상당히 저가인 MCU 가격을 생각하면 참 쓸만한 기능이다.
하지만 배열 변수의 경우 읽을 수 없는 단점이 있다.
'공부 > 8051' 카테고리의 다른 글
ABOV 디버거의 Keil plug-in (0) | 2014.09.01 |
---|---|
ABOV 8051 On-Chip Debugger (0) | 2014.06.19 |
ABOV MC9x Code Generator (0) | 2014.06.19 |
8051 레지스터 자료 (0) | 2012.11.15 |
[ADUC831] ADUC831 간단 매뉴얼 6 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 5 (0) | 2012.11.12 |
댓글을 달아 주세요
국내 IC 제어 업체 인 ABOV 에서 자사 8051 MCU 중 일부에 대한 Code Generator 를 공급한다.
ABOV 8051 MCU별로 레지스터 및 인터럽트 번지등이 약간씩 달라서 사용할 때 찾아 봐야 할것이 많은데
약간 부족하긴 해도 나름 쓸만 하다.
http://www.abov.co.kr/en/index.php?Depth1=5&Depth2=1&Depth3=1
VPE (MC9x Code Generator)
Description VPE (Visual Programming Environment) is a code generation program for ABOV's M8051 series microcontrollers. VPE help user to generate C-based frame source program and offers very easy and comfortable user interface. The device which is supported by VPE will be expanded and updated continuously. Features
Downloads
Related Products MC95FG208, MC95FG308, MC96F6332, MC96F6432, MC96F6632, MC96F6832, MC96F7416A, MC96F7616A, MC96F7616T, MC96F7816, MC96F8208S, MC96F8216, MC96F8316, MC97F1316, MC97F1216, MC97F1215, MC97F1204, MC97F1104, MC97F2464, MC97F2664, MC96F6408A, MC96F6508A, MC96FC664A, MC96FC864A, MC96F4548, MC96FM204, MC96FM214, MC95FG0128, MC95FG8128, MC95FG6128, MC96FB504, MC96F7864, MC96F7664 |
인스톨 하면 사용 하고자 하는 MCU와 프로젝트 명을 입력 하고 New project 를 선택 해서 신규 생성하던가
기존에 만들어진 프로젝트를 읽어 들이는 Load a project 를 선택 하면 된다.
소스 파일과 (디렉토리별) Device의 pin map 그리고 각종기능을 설정하는 창으로 되어 있으며
자신이 사용하고자 하는 기능을 설정 한 후 저장 버튼 처럼 생긴 버튼을 누르면 해당 프로잭트 소스가
생성 된다.
아쉬운 점은 코드 생성시 예제 소스 처럼 레지스터를 bit 형태로 표시해 주지 않고 상수 값으로 넣는 것
Define 에 대한 주석을 달아주는 기능이 들어 갔으면 한다.
그래도 이 정도 라도 만들어준 ABOV에 박수를 보낸다.
'공부 > 8051' 카테고리의 다른 글
ABOV 디버거의 Keil plug-in (0) | 2014.09.01 |
---|---|
ABOV 8051 On-Chip Debugger (0) | 2014.06.19 |
ABOV MC9x Code Generator (0) | 2014.06.19 |
8051 레지스터 자료 (0) | 2012.11.15 |
[ADUC831] ADUC831 간단 매뉴얼 6 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 5 (0) | 2012.11.12 |
댓글을 달아 주세요
8051 레지스터 자료 입니다.
어디서 받았는지 기억이 없습니다.
이 자료 만드신분에게 감사 드립니다.
'공부 > 8051' 카테고리의 다른 글
ABOV 8051 On-Chip Debugger (0) | 2014.06.19 |
---|---|
ABOV MC9x Code Generator (0) | 2014.06.19 |
8051 레지스터 자료 (0) | 2012.11.15 |
[ADUC831] ADUC831 간단 매뉴얼 6 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 5 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 4 (0) | 2012.11.12 |
댓글을 달아 주세요
SPI의 사용
1 SPI의 기본사항
DATA를 시리얼 형태로 통신하는 방법은 많이 있다. 그 중 주변소자와 통신하는데 사용하는 대표적인 방식으로는 I2C,SPI 등을 말할 수 있으며 이번 장은 그 중 ADUC831에서 SPI MASTER 기능은 어떻게 사용하는지 설명 하려 한다.
2 SPI의 관련 레지스터
ADUC831 SPICON define | ||
BIT7 | ISPI | 1:SPI 인터럽트 동작조건 SPIDAT가 전송이 완료되면 발생된다. 사용자의 프로그램에 의해 지워야 한다. |
BIT6 | WCOL | 1:SPI 전송을 위해 SPIDAT에 쓸 때 잘못되면 발생된다. 사용자의 프로그램에 의해 지워야 한다. |
BIT5 | SPE | 1: SPI 사용 enable 설정 |
BIT4 | SPIM | SPI master/slave 모드 설정 1: master mode , 0:slave mode |
BIT3 | CPOL | Clock 이 발생하지 않을 때 핀의 상태를 나타낸다. 1: high 상태로 유지 , 0: low 상태로 유지 |
BIT2 | CPHA | DATA가 어떤 클럭에 동기 되는지 설정한다. 1: SCLOCK leading edge에 동기 2: SCLOCK trailing edge에 동기 |
BIT1 | SPR1 | SPI bit 유지 시간을 설정 한다.(SPR1 SPR0 Selected Bit Rate) 00: fCORE/2, 01: fCORE/4, 10: fCORE/8, 11: fCORE/16 |
BIT0 | SPR0 |
3 SPI의 사용을 위한 CHIP 선정
SPI Master 활용예를 설명 들이겠습니다. 이를 위해 선정한 CHIP은 AD5232로 2개의 저항을 가지고 있는 Digital Potentiometer 입니다. 내부에 EEPROM(EEMEM)을 가지고 있으며 이와 연결된 가변저항 조정 레지스터(RDAC)가 있으며 , 기타 콘트롤 부분이 있습니다. 자세한 사항은 관련 매뉴얼을 참고해주시면 감사하겠습니다.
EEMEM 은 비활성 메모리이기 때문에 이곳에 값을 저장해 두면 파워온 시 자동으로 RDAC를 조정하여 저항을 조절하게 됩니다. 그러므로 초기값 설정을 원한다면 EEMEM 을 사용하면 됩니다. RDAC의 값의 조정에 따라 아래의 그래프와 같이 저항성분이 변하게 되어 있습니다.
SPI 통신 파형은 두 가지 방식을 다 지원 합니다. 그러므로 좀더 사용이 편리합니다.
기본회로는 아래와 같습니다. 정확한 회로 해석은 ADUC831과 AD5232 매뉴얼을 참고해 주시기 바랍니다.
위 회로는 A-GND , B-GND 의 두 가지 저항값을 조절하는 회로이다. P1.0은 Chip select 용이며 SCLOCK와 MOSI는 ADUC831의 원래 기능을 활용합니다.
4 AD5232 제어 명령
AD5232 COMMAND define | |||
상위 8BIT | 하위 8BIT (DATA) | 내용 | |
상위 4BIT (COMMAND) | 하위 4BIT (ADDRESS) | ||
0000 | xxxx | xxxxxxxx | NOP |
0001 | 000'A0' | xxxxxxxx | EEMEM(A0)의값->RDAC(A0), 실행 후 nop 실행, power up후 실행 |
0010 | 000'A0' | xxxxxxxx | RDAC(A0)의값->EEMEM(A0) |
0011 | <<ADDR>> | D7 - D0 | DATA의값->EEMEM(ADDR) |
0100 | 000'A0' | xxxxxxxx | RDAC(A0)의값을6db감소,ZERO에서 멈춤 |
0101 | xxxx | xxxxxxxx | 모든RDAC의값을6db감소,ZERO에서 멈춤 |
0110 | 000'A0' | xxxxxxxx | RDAC(A0)의값을'1'감소,ZERO에서 멈춤 |
1000 | 0000 | xxxxxxxx | 기존의 EEMEM값을 RDAC에 다시 넣기(RESET) |
1001 | <<ADDR>> | xxxxxxxx | EEMEM<<ADDR> 의 값을 0으로 설정 |
1010 | 000'A0' | xxxxxxxx | RDAC(A0)의값을0으로 설정 |
1011 | 000'A0' | D7 - D0 | DATA의 값->RDAC(A0) |
1100 | 000'A0' | xxxxxxxx | RDAC(A0)의 값을6db추가 |
1101 | xxxx | xxxxxxxx | 모든RDAC의 값을6db추가 |
1110 | 000'A0' | xxxxxxxx | RDAC(A0)의 값을'1'추가 |
1111 | xxxx | xxxxxxxx | 모든RDAC의 값을'1'추가 |
참고사항 | <<ADDR>> 는 아래와 같다. 0000:RDAC1의EEMEM,0001:RDAC2의EEMEM,0010:USER1의EEMEM..... 1111:USER14의EEMEM
ZERO값은 50옴 저항 값을 가진다. |
개인적으로 실험해본 결과 위의 명령 중 가장 적절하게 사용하는 방법은 DATA의 값->RDAC(A0) 을 하는 것이며, 만약 EEMEM에 저장하고자 한다면, DATA의 값->RDAC(A0) 을 한후에 RDAC(A0)의값->EEMEM(A0) 을 하는 것을 추천합니다.
다음 부분에서 실제로 사용한 예를 보여 드리겠습니다.
5 SPI를 사용한 AD5232 제어 SOURCE
Source SPI를 초기화 한다. |
void
openSPI() |
Source AD5232의 RDAC조절하여 저항값을 조정한다. |
void
ad5232_ch_rdac_set(unsigned
char sele, unsigned
char ch, unsigned
char dat) |
Source AD5232의 RDAC의 값을 EEMEM에 저장한다. |
void
ad5232_rdac_eemem_mov(unsigned
char sele, unsigned
char ch) |
'공부 > 8051' 카테고리의 다른 글
ABOV MC9x Code Generator (0) | 2014.06.19 |
---|---|
8051 레지스터 자료 (0) | 2012.11.15 |
[ADUC831] ADUC831 간단 매뉴얼 6 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 5 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 4 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 3 (0) | 2012.11.12 |
댓글을 달아 주세요
ADC의 사용
1 ADC의 기본사항
ADUC831은 ADUC812에 비해 ADC기능이 추가 수정되었다. 예를 들어 ADC의 오차를 잡아 주기 위한 Calibration, ADC on/off, 내 외부 레퍼런스의 사용자에 의한 선정 등등.. 그럼 관련 레지스터를 다시 설명 아래에서 다시 설명 드리겠습니다.
2 ADC의 관련 레지스터
ADUC831 ADCCON1 define | ||
BIT7 | MDI | 1:ADC 동작 , 0: ADC 동작정지 |
BIT6 | EXT_REF | 1:External REF , 0: Internal REF |
BIT5 | CK1 | converting clock divider ratio (CK1,CK0 값에따라 adc clk = mclk/x 설정) x값은-> 00 : 16 ,01 : 2 ,10 : 4 , 11 : 8 |
BIT4 | CK0 | |
BIT3 | AQ1 | ADC clk 몇변만에값을추출할것인가? (AQ1,AQ0) 00: 1 ,01: 2 ,10: 3 ,11: 4 |
BIT2 | AQ0 | |
BIT1 | TC2 | 동작 시작울 timer2의 오버플로우 발생으로 한다 |
BIT0 | EXC | 동작 시작을 외부 convst pin이 low 되면 한다 |
ADUC831 ADCCON2 define | ||
BIT7 | ADCI | adc 인터럽트발생 bit |
BIT6 | DMA | DMA 동작설정 |
BIT5 | CCONV | continuous conversion 로설정(연속적동작) |
BIT4 | SCONV | single conversion으로 설정 |
BIT3 | CS3 | 컨버팅체널설정 0000: ch1 ,0001: ch2 ,0010: ch3 ,0011: ch4 ,0100: ch5 , 0101: ch6 ,0110: ch7 ,0111: ch8 ,1000: 온도 , 1001: DAC1 , 1010: DAC2 ,1011: AGND, 1100: Vref ,1111: DMA STOP |
BIT2 | CS2 | |
BIT1 | CS1 | |
BIT0 | CS0 |
:
ADUC831 ADCCON3 define | ||
BIT7 | BUSY | The ADC Busy Status Bit( 1 = busy) |
BIT6 | GNCLD | Gain Calibration Disable Bit ( 1 = Disable) |
BIT5 | AVGS1 | Averages Selection(평균값 설정) 00 : 15 , 01 : 1, 10 : 31 ,11 : 63 |
BIT4 | AVGS0 | |
BIT3 | CS3 | 사용안함 |
BIT2 | CS2 | 사용안함 |
BIT1 | TYPICAL | Calibration Type Select 1 :Gain Calibration(full-scale) , 0: Offset Calibration (zero-scale) |
BIT0 | CSCALS0 | Start Calibration Cycle( 1 시작 종료시 자동clear) |
3 ADC의 관련 SOURCE
Source ADC오차를 잡아 주기 위해 Calibration 을 실행한다. |
|
Source ADC초기화를 실행한다. |
RCAP2H = TH2 ; // - in sfr |
Source ADC값 처리한다.. |
xdata unsigned
int ADC_BUFF[3]; void
adc_int() interrupt
6
switch(ch_chk) ADCCON2 = ch_chk; //체널변경 } |
4 ADC의 관련 기타사항
회로 구성 시 주의 해야 할 사항이 있습니다. 노이즈 제거를 위해 다음 그림과 같이 구성하는 것을 추천하며 OPAMP를 연결하기 어렵다면 저항과 케페시터는 꼭 사용하는 것을 추천합니다.
레퍼런스 내부 선택 회로
'공부 > 8051' 카테고리의 다른 글
8051 레지스터 자료 (0) | 2012.11.15 |
---|---|
[ADUC831] ADUC831 간단 매뉴얼 6 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 5 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 4 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 3 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 2 (0) | 2012.11.12 |
댓글을 달아 주세요
내부 XRAM과 스텍 포인트 이동
내부 XRAM 사용
ADUC831은 8052의 기본 RAM 공간외에 외부 메모리처럼 사용 가능한 XRAM이라는 것을 가지고 있다 이를 사용하기 위해서는 레지스터를 설정해 주어야 한다. 레지스터는 CFG831로 이중 BIT0를 설정하여 사용할 수 있다.
주의할것응 CFG831은 비트단위 설정이 안 된다.
Source 사용예 |
CFG831 |= 0x01; |
스텍 포인터의 이동
ADUC831은 스택은 8052의 기본 RAM 공간에서만 사용 하는 것과는 달리 XRAM도 스택영역으로 사용이 가능하다. 그 외 기능은 ADUC812와 같이 데이터 메모리 공간을 0xFFFFFF 까지 확장할 수 있습니다. 2개의 DPTR의 사용은 ADUC831을 지원하는 컴파일러에서 설정하여 사용하시면 됩니다. 또한 주의할 것은 CFG831은 비트단위 설정이 안 된다는 것입니다. 그 외에 CFG831 은 매뉴얼을 참고해 주세요
Source 사용예 |
CFG831 |= 0x10; |
'공부 > 8051' 카테고리의 다른 글
[ADUC831] ADUC831 간단 매뉴얼 6 (0) | 2012.11.12 |
---|---|
[ADUC831] ADUC831 간단 매뉴얼 5 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 4 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 3 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 2 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 1 (0) | 2012.11.12 |
댓글을 달아 주세요
EEPROM
1 EEPROM 기본사항
ADUC831은 Flash/EE data memory 라고 하는 EEPROM을 4Kbyte를 가지고 있습니다. 그 처리방법은 ADUC812와 같습니다. 자세한 내용은 매뉴얼을 참고해 주시기 바랍니다. 본 문서에서는 www.keil.com 에서 제공하고 있는 관련 소스를 소개해 드리고 싶습니다. 사용하기에 편리하게 되어 있습니다.
2 EEPROM 사용(SOURCE)
Define |
#define ADI_EE_READ_PAGE 1
char
flash_erase_all (void); |
Source #1 플레쉬 전체영역 삭제 |
char
flash_erase_all (void) |
Source #2 플레쉬 전체 사이즈 확인 |
unsigned
long
flash_size (void) |
Source #3 플레쉬 에서 DATA 읽기 |
unsigned
long
flash_read ( void
*buffer, unsigned
long len, unsigned
long address) /* Buffer to fill, Bytes to ,FLASH address to read from */
|
Source #4 플레쉬 에서 DATA 쓰기 |
unsigned
long
flash_write ( const
void
*buffer, unsigned
long len, unsigned
long address)/*Buffer to save,Buffer length,FLASH address to write to */ |
Source #5 사용예 |
unsigned char buf;
//내부flash 메모리에저장 Comm0.RxBuff[1]에 들어있는 값을 Flash/EEPROM 번지로 하고 // buf의 값을 저장한다. 1로 설정되어 1byte 저장된다.
buf = Comm0.RxBuff[1] - 0x20; flash_write(&buf, 1, (unsigned long)Comm0.RxBuff[1]);
//일정범위(system_set 사이즈) 만큼 DATA를 읽어 온다. flash_read (&system_set, sizeof(system_set), 0);
//일정주소에서 data를 한바이트 읽어 온다. flash_read( &buf, 1, (unsigned
long)Comm0.RxBuff[1]); |
'공부 > 8051' 카테고리의 다른 글
[ADUC831] ADUC831 간단 매뉴얼 5 (0) | 2012.11.12 |
---|---|
[ADUC831] ADUC831 간단 매뉴얼 4 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 3 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 2 (0) | 2012.11.12 |
[ADUC831] ADUC831 간단 매뉴얼 1 (0) | 2012.11.12 |
[ADUC812] ADUC812 설명 8 (0) | 2012.11.10 |
댓글을 달아 주세요