본문 바로가기

분류 전체보기

Relay 제어 (I/O로 FAN 제어 및 LED상태) 안녕하세요 숭덕이 입니다. 릴레이로 FAN 제어를 하였으며, 해당하는 FAN에 대하여 LED ON 되는것으로 짜보았습니다. 펌웨어는 IAR로 작성하였으며, 참고하시기 바랍ㄴ다. 펌웨어 (IAR) 회로도 ISIS(프로테우스로 작성) 더보기
비-인터럽트(Polling) 방식으로 ADC 안녕하세요 숭덕이 박제현 입니다. DSP를 하면서 배워야할것이 많기도 하지만 레지스터가 너무 많아 혼잡스럽네요. 오늘은 ADC에 대해 간단히 공부를 해보겠습니다. ADC란? Analog-to-digital converter의 약자이다. 즉 analog 신호를 digital 신호로 변환하는 것이다. Sampling 아날로그 신호를 받으면 일정한 시간 간격(주기)를 기준으로 표본을 추출하게 되고 이를 sampling이라 한다. Quantization A->D 변화시에 표본의 값을 이산값(discrete value)으로 표현하는 것을 의미한다. 여기서 이산값으로 표현할 수 있는 값의 범위가 8-bit(0~255)인지, 10-bit(0~1023)인지에 따라서 표현할 수 있는 값의 정밀도가 차이가 발생한다. 이러.. 더보기
SCI통신(RS232) 안녕하세요 숭덕이 박제현입니다. DSP(F28335)에 SCI통신을 해보겠습니다. 그냥 해보기에는 심심하여, 하이퍼터미널을 이용하여 'A'라는 키가 입력이 되면 LED를 ON->OFF->ON 방식으로 진행하였습니다. TI사에 사이트를 보시면 예제들이 너무나도 잘 짜여있어, 구성한 스토리가 있다면 간단하게 예제를 이용하여 진행이 될 거 같습니다. 너무 예제가 잘 되어 있다보니, 실험했던 동영상과 참조했던 사이트를 적겠습니다. *DELAY_US(A)라는 함수가 TI에서 제공하는 함수가 있는데, RAM영역에서 실행할 경우 잘동작되나, 플래쉬에 올리고 하실 경우 DELAY_US부분에서 인터럽트가 걸립니다. 이유를 찾아보니 RAM에 경우 플래쉬영역보다 빠르기에 DELAY_US를 사용가능했던 경우이며, 이 경우를 .. 더보기
SW 인터럽트. 안녕하세요 숭덕이 박제현 입니다. 인터럽트란 어떤 장치가 다른 장치의 일을 잠시 중단시키고 자신의 상태 변화를 알려 주는 것이다. 인터럽트가 걸리면 인터럽트를 받은 장치는 현재 자신의 상태를 기억시켜두고 인터럽트 처리를 진행합니다. 현재 공부하고 있는 장에서는 SW를 이용하여 LED를 제어해보도록 하겠습니다. SW로 인터럽트 공부중에 스위치를 한번만 눌렀을 경우 인터럽트가 2~3번정도에 동작합니다. 이것은 채터링때문에 그런것인데...DSP에서는 소프트웨어적으로 어느정도 방지가 됩니다. 일반적인 SW인터럽트와 채터링 방지 인터러트 2가지에 대해 공부하겠습니다. SyncWorks에서 제공하는 예제를 참고하시기 바랍니다. http://www.tms320.kr/shop/board/view.php?id=Delfi.. 더보기
LED 제어. 안녕하세요 숭덕이 박제현입니다. DSP TMS320F28335에 대해 공부를 해볼려고 회사에서 Delfino EVM을 대여하여 공부중에 있습니다. TDS560-USB 와 Delfino EVM을 가져왔는데 TDS560 ㅜㅜ 가격에 비해 성능은 별로 그다지 지금 이 글을 쓰기 전에 에뮬레이터 연결이 안되서 2시간동안 드라이브 지우고 깔고 지우고 깔고 별 삽질을 다 했다는 휴..... 일단 LED가 기본이기에 기본부터 살펴보겠습니다. TI에서 제공하는 예제를 가지고 사용해보고 이 예제를 가지고 응용해볼 생각입니다. 일단 TI에서 제공하는 소스와 제가 임의대로 작성하는 소스는 워드파일로 첨부하여 공개합니다. 회로도는 싱크웍스 홈페이지에서 참조 부탁드립니다. TI 제공예제 . 숭덕이가 조작한 예제. 모니터가 작아.. 더보기
소스 #include #include //---------------------------------------------------- #define lcd_dt PORTB #define lcd_en PORTA.6 #define lcd_rw PORTA.5 #define lcd_rs PORTA.4 #define SERVO_1 PORTA.0 //---------------------------------------------------- unsigned int i; unsigned char PW[6] = {0,0,0,0,0,0}; //비밀번호 변수 unsigned int INPUTVALUE[6]; unsigned char setcnt = 0; unsigned char keycnt = 0; unsigned char.. 더보기
디지털 도어락 안녕하세요 숭덕이 박제현입니다. 요즘 너무 뜸하게 블로그를 관리했네요....무엇을 만들가 무엇을 만들가 고민고민하다가 벌써 이렇게 시간이 많이 지체가 되었네요....이제부터는 작품을 만들어서 작품을 공부하시는 분에게 기증하기로 마음을 먹었습니다. 디지털도어락은 키패드와 LCD 모터부분으로 3개를 준비했습니다. 머 부수적인 부품은 몇개가 있겠지만 큰것만 적어보니 3개 있더라고요!!!! 자 이제 그럼 곧 시작해보겠습니다. 음 간단히 키패드 확인만 해봤습니다. 음 키패드의 번호가 눌리면 해당 LED가 켜지는것을 했는데요 채터링때문인지 가끔 다른 LED가 켜지는것을 봅니다. 그래서 채터링 방지 딜레이를 사용했습니다. 소스는 아래 있습니다. #include #include void keypad(void) { PO.. 더보기
통신 -LED 제어 #include #include #include #include char rx; interrupt[USART0_RXC]void usart0_rxc(void){ rx=UDR0; if(rx=='1')PORTC=1; if(rx=='2')PORTC=2; if(rx=='3')PORTC=4; if(rx=='4')PORTC=8; } void TX0_CHAR(char Sdata){ while(!(UCSR0A&0x20)); UDR0=Sdata; } // 송신함수 void main(void) { DDRC=0xff; //LED UCSR0B=0x98; UCSR0C=6; UBRR0H=0; UBRR0L=103; #asm("sei") } 더보기
서보모터 #include #include void main(void) { unsigned int i=0; DDRD=0xff; //PB5,6 입니다. while(1) { for(i=0; i 더보기
DC모터 제어해보기 #include void main(void) { DDRC=0xff; while(1) { PORTC.0=0; PORTC.1=1; } } 더보기