ROBOTICS LAB. http://cafe.naver.com/roboticslab DSP TMS320F2812 ROBOTICS LAB. http://cafe.naver.com/roboticslab.

Slides:



Advertisements
Similar presentations
Embedded System 2009 년 11 월 16 일 Embedded Computer1 ● Hardware 와 Software 가 조합되어 특정한 복적을 수행하는 시스템 ● 특정한 기능을 수행하도록 Micro Processor 와 I/O Device 를 내장하며,
Advertisements

ARM core UNIT 03 로봇 SW 교육원 조용수. 학습 목표 PIC, AVR, 8051 ARM 이란 ? ARM 특징 ARM and Thumb ARM Cortex-M0 Interrupt Vector 2.
KT-M128 Peripheral Device
마이크로프로세서설계 - 3 ATmega128 마이크로컨트롤러의 특징 LED 실습 1
Chapter 9. 컴퓨터설계기초 9-1 머리말 9-2 데이터 처리장치 (Datapath)
Vision System Lab, Sang-Hun Han
Mar OSEK/VDK Woo Dong Kyun.
AVR 실습.
인터럽트 종류 인터럽트 요구시 I/O장치 인식 방법
AMBA BUS Protocol의 이해 (AMBA 2.0 Specification)
DSP based Data Acquisition Board
다섯째날 : 외부 인터럽트 - 당근이의 AVR 갖고 놀기 - 당근닷컴
사용자 메뉴얼 차량용 4CH 블랙박스 매뉴얼 버전 : Version 2.1 Hardware Version : 2.0
제 2장 컴퓨터 구조.
Signal 자연계에 존재하는 모든 정보전달의 수단 신호의 공학적 표현 물소리, 바람소리, 새소리 짐승소리,불,연기,봉화…
마이크로프로세서 메모리 및 입출력장치 인터페이스
기본 컴퓨터의 구조와 설계 Lecture #5.
마이크로프로세서(Microprocessor,µP)
2015년 하반기 소방교육 자 유 전 공 학 부 (금) 안녕하십니까 자유전공학부 행정실 입니다.
사용자 메뉴얼 차량용 4CH 블랙박스 매뉴얼 버전 : Version 1.1 Hardware Version : 1.0
기본 컴퓨터 프로그래밍 Lecture #6.
2 Part 전자계산기 구조 1. 논리 회로 2. 자료 표현 및 연산 3. 명령어 및 프로세서 4. 명령 수행 및 제어 5.
Operating Systems Overview
제어기술 소개 목표 : 제어기의 종류, 제어 방식 등을 살펴본다. 주요내용 제어기의 종류 제어방식 : 시퀀스, 피드백, 등.
10장 주변장치 (PIO) Slide 1 (of 28).
System Call Linux Kernel 수업 3번째.
TMS320C6000 Architecture.
 midi LOGGER GL220   신제품 소개 Dec, 2011.
3장 MPU 내부구조 Slide 1 (of 28).
임베디드 하드웨어 Lecture #6.
컴퓨터 구조학 정보보호학과.
PXA255-FPGA 장비 개요 및 실습 Lecture #9.
임베디드 운영체제 (리눅스 중심) Lecture #2.
DSP와 TMS320F28X의 이해
ATmega128 CH 1 Atmega 128 Board CodeVision.
DSP와 TMS320F28x의 이해.
PXA255-FPGA 장비 계요 및 실습 Lecture #9.
출처: IT CookBook, 컴퓨터 구조와 원리 2.0 제 12장
서울 메트로 노조파업 수강과목 : 노사 관계론 담당교수 : 정형진 교수님
컴퓨터 구조.
1 컴퓨터 시스템 소개.
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
임베디드 시스템 개론 3주차 Embedded System..
Embedded System Porting (2)
Chapter 10. Interrupt.
2장 운영 체제의 개요 운영체제의 개념 운영체제의 유형 운영체제의 발전 과정 운영체제의 구성 운영체제 서비스 시스템 구조
UNIT 18 AD Converter Test 로봇 SW 교육원 조용수.
Chapter 08 제어장치와 마이크로 오퍼레이션.
6 중앙처리장치의 조직과 기능 IT CookBook, 컴퓨터 구조와 원리 2.0.
8086 프로세서의 구조 및 동작 방식 시스템 프로그래밍 - Lecture #2 신라대학교 컴퓨터공학과 시스템 프로그래밍.
AVR - Chapter 12 황 지 연.
다섯째날 : 외부 인터럽트 - 당근이의 AVR 갖고 놀기 - 당근닷컴
전자의료시스템 및 실습 C-언어 구 환 경희대학교 전자정보대학 동서의료공학과.
Stop Watch 예비제안서 10조 이인희 김민석 박재원
Fault Diagnosis for Embedded Read-Only Memories
Chapter 4 The Von Neumann Model.
컴퓨터 시스템 개관 시스템 프로그래밍 - Lecture #1 신라대학교 컴퓨터공학과 시스템 프로그래밍.
퀵 가이드 Quick Guide 차량용 블랙박스
타이머 8051 타이머 타이머 설정 및 모드
6장 연산 장치 6.1 개요 6.2 연산장치의 구성요소 6.3 처리기 6.4 기타 연산장치.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Boot PROM.
2011년2학기 임베디드시스템 응용(# ) #5. Timer_3
Computer System Overview
Stepper Motor 디바이스 드라이버
치료 레크레이션 프로그램 (지적 장애 대상) 과 목: 학 과: 학 번: 이 름: 제 출 일 자 담 당 교 수:
임베디드 하드웨어 Lecture #6.
Virtual Machine Management
Lecture 7 7-Segment LED controller using u-controller
Presentation transcript:

ROBOTICS LAB. http://cafe.naver.com/roboticslab DSP TMS320F2812 ROBOTICS LAB. http://cafe.naver.com/roboticslab

Contents 1. TMS320F2812 Interrupt 2. TMS320F2812 CPU Timer 3. TMS320F2812 GP Timer http://cafe.naver.com/roboticslab

TMS320F2812 Interrupt 인터럽트 구조 인터럽트 요청이 발생하고, 10~11 사이클이 지나면, 인터럽트 서비스 함수가 수행된다. 칩 자체에서 Context Save를 하기에, 추가적인 지연이 발생하지 않는다. 코어 자체는 16개의 인터럽트만을 처리할 수 있다. PIE라는 회로를 통하여 96개까지 관리할 수 있다. http://cafe.naver.com/roboticslab

TMS320F2812 Interrupt 마스크 인터럽트 처리 과정 코어 인터럽트 (IFR) “Latch” (IER) “스위치” 해당 코어 인터럽트가 발생하면, IFR 레지스터의 해당 비트가 1로 SET IFR이 1로 Set된 비트 위치와 동일한 위치의 IER 비트가 1(on)로 되어 있고, INTM이 On 되어 있으면 C28x 코어는 인터럽트를 인식 코어 인터럽트 (IFR) “Latch” (IER) “스위치” (INTM) “주 스위치” C28x Core /INT1 1 /INT2 /INT14 1 http://cafe.naver.com/roboticslab

TMS320F2812 Interrupt IFR & IER Pending : IFR Bit = 1 Absent : IFR Bit = 0 Enable : IER Bit = 1 Disable : IER Bit = 0 http://cafe.naver.com/roboticslab

TMS320F2812 Interrupt INTM 스위치 조작법 INTM 스위치 : INTM = 0 일때, 스위치가 ON Enable: INTM = 0 Disable: INTM = 1 (reset value) INTM 비트 조작은 어셈블리로만 가능: /*** 인라인 어셈블리를 이용한 조작법 ***/ asm(“ CLRC INTM”); //인터럽트 가동 asm(“ SETC INTM”); //인터럽트 해제 http://cafe.naver.com/roboticslab

Used to initialize PIE vectors TMS320F2812 Interrupt 벡터 확장 영역 Default Vector Table Remapped when ENPIE = 1 Priority Vector Offset 1 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Reset INT 1 INT 2 INT 3 INT 4 INT 5 INT 6 INT 7 INT 8 INT 9 INT 10 INT 11 INT 12 INT 13 INT 14 00 02 04 06 08 0A 0C 0E 1A 1C 19 4 2 DlogInt RtosInt EmuInt 1E 20 22 3 - NMI Illegal 24 26 User 1-12 28-3E Memory 0xD00 PIE Vectors 256 W 코어 인터럽트는 BROM 벡터 영역에 할당되어 있다.(최대 32개의 벡터가 실리 수 있다) MC 모드에서만 활성화 된다. Core인터럽트가 PIE 회로에 의해 확장되어서 PIE 벡터 영역으로 재 활당이 된다. 즉, 개별 인터럽트는 벡터 확장을 통해서 고유의 벡터를 부여받게 된다. 0x3FFFC0 BROM Vectors 64 W 0x3FFFFF File: PieVect.c Used to initialize PIE vectors http://cafe.naver.com/roboticslab

Peripheral Interrupts 12ⅹ8 = 96 TMS320F2812 Interrupt 확장된 인터럽트의 처리 Interrupt Group1 최대 96개의 개별 인터럽트 처리 INT 1.y interrupt group INT 2.y interrupt group INT 3.y interrupt group INT 4.y interrupt group INT 5.y interrupt group INT 6.y interrupt group INT 7.y interrupt group INT 8.y interrupt group INT 9.y interrupt group INT 10.y interrupt group INT 11.y interrupt group INT 12.y interrupt group INT1.1 1 INT1.2 1 /INT 96 INT1.8 1 Peripheral Interrupts 12ⅹ8 = 96 28x Core Interrupt Logic /INT1 - /INT12 28x Core 12 Interrupts IFR IER INTM /INT13 (TINT1 / XINT13) /INT14 (TINT2) /NMI http://cafe.naver.com/roboticslab

TMS320F2812 Interrupt 확장된 인터럽트의 주변 회로 활당 http://cafe.naver.com/roboticslab

TMS320F2812 Interrupt 인터럽트 설정(개별 인터럽트 처리 과정) PIE 회로 처리과정 CPU 처리과정 http://cafe.naver.com/roboticslab

PIE Interrupt Acknowledge Register(PIEACK) TMS320F2812 Interrupt PIE 회로 관련 레지스터 PIEIFRx register (x = 1 to 12) PIEIERx register (x = 1 to 12) PIE Interrupt Acknowledge Register(PIEACK) PIECTRL register http://cafe.naver.com/roboticslab

TMS320F2812 Interrupt PIE 벡터 확장 코드 – PieVect.c ※ 벡터 정의 부분 ※ 벡터 정의 부분 ※ 벡터 정의 부분 #include “DSP28_Device.h” const struct PIE_VECT_TABLE PieVectTableInit = { PIE_RESERVED, // Reserved space ~ // Non-Peripheral Interrupts INT13_ISR, // XINT13 // Group 1 PIE Vectors PDPINTA_ISR, // EV-A PDPINTB_ISR, // EV-B rsved_ISR, XINT1_ISR, XINT2_ISR, ADCINT_ISR, // ADC TINT0_ISR, // Timer 0 WAKEINT_ISR, // WD ~ ※ 벡터 정의 부분 void InitPieVectTable(void) { int16 i; Uint32 *Source = (void *)&PieVectTableInit; Uint32 *Dest = (void *)&PieVectTable; // DSP28_PieVect.h에 선언 EALLOW; for(i=0; i<128; i++) *Dest++ = * Source++; EDIS; // Enable the PIE Vector Table PiectrlRegs.PIECRTL.bit.ENPIE = 1; } http://cafe.naver.com/roboticslab

TMS320F2812 Interrupt PIE 회로 초기화 코드 – PieCtrl.c ※ 레지스터 초기화 ※ 인터럽트 가동 ※ 레지스터 초기화 void InitPieCtrl(void) { // Disable Interrupts at the CPU level: DINT; // Disable the PIE PieCtrlRegs.PIECRTL.bit.ENPIE = 0; // Clear all PIEIER registers: PieCtrlRegs.PIEIER1.all = 0; PieCtrlRegs.PIEIER2.all = 0; PieCtrlRegs.PIEIER3.all = 0; ~~ PieCtrlRegs.PIEIER10.all = 0; PieCtrlRegs.PIEIER11.all = 0; PieCtrlRegs.PIEIER12.all = 0; // Clear all PIEIFR registers: PieCtrlRegs.PIEIFR1.all = 0; PieCtrlRegs.PIEIFR2.all = 0; PieCtrlRegs.PIEIFR3.all = 0; PieCtrlRegs.PIEIFR10.all = 0; PieCtrlRegs.PIEIFR11.all = 0; PieCtrlRegs.PIEIFR12.all = 0; } ※ 인터럽트 가동 void EnableInterrupts() { // Enable the PIE PieCtrlRegs.PIECRTL.bit.ENPIE = 1; // Enables PIE to drive a pulse into the CPU PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable Interrupts at the CPU level EINT; } http://cafe.naver.com/roboticslab

TMS320F2812 Interrupt 인터럽트 레지스터 http://cafe.naver.com/roboticslab

TMS320F2812 Interrupt Main()에서 인터럽트 설정 void main(void) { // Step 1. Initialize System Control: InitSysCtrl(); // Step 2. Initalize GPIO: // Step 3. Clear all interrupts and initialize PIE vector table: DINT; InitPieCtrl();: IER = 0x0000; IFR = 0x0000; InitPieVectTable(); EALLOW; PieVectTable.TINT0 = &cpu_timer0_isr; EDIS; // Step 4. Initialize all the Device Peripherals: InitCpuTimers(); ConfigCpuTimer(&CpuTimer0, 100, 1000000); StartCpuTimer0(); // Step 5. User specific code, enable interrupts: EALLOW; GpioMuxRegs.GPFMUX.bit.XF_GPIOF14 = 0; GpioMuxRegs.GPFDIR.bit.GPIOF14 = 1; EDIS; // Enable CPU INT1 which is connected to CPU-Timer 0: IER |= M_INT1; // Enable TINT0 in the PIE: Group 1 interrupt 7 PieCtrlRegs.PIEIER1.bit.INTx7 = 1; // Enable global Interrupts and higher priority real-time debug events: EINT; // Enable Global interrupt INTM ERTM; // Enable Global real time interrupt DBGM // Step 6. IDLE loop. Just sit and loop forever (optional): for(;;) backticker++; } http://cafe.naver.com/roboticslab

TMS320F2812 Interrupt 인터럽트 테스트-DefaultISR.c ※ 인터럽트 설정 확인 용이 // ----------------------------------------------------------- // PIE Group 1 - MUXed into CPU INT1 // INT1.1 interrupt void PDPINTA_ISR( void ) // EV-A { // Insert ISR Code here // To receive more interrupts from this PIE group, acknowledge this interrupt // PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // Next two lines for debug only to halt the processor here // Remove after inserting ISR Code asm (" ESTOP0"); for(;;); } // INT1.2 interrupt void PDPINTB_ISR(void) // EV-B // INT1.3 - Reserved // ----------------------------------------------------------- // PIE Group 2 - MUXed into CPU INT2 // INT2.1 interrupt void CMP1INT_ISR(void) // EV-A { // Insert ISR Code here // To receive more interrupts from this PIE group, acknowledge this interrupt // PieCtrlRegs.PIEACK.all = PIEACK_GROUP2; // Next two lines for debug only to halt the processor here // Remove after inserting ISR Code asm (" ESTOP0"); for(;;); } ※ 인터럽트 설정 확인 용이 ※ 인터럽트 확인 후 벡터 리맵핑 작업 추천 EALLOW; PieVectTable.TINT0 = &cpu_timer0_isr; EDIS; http://cafe.naver.com/roboticslab

TMS320F2812 Interrupt 인터럽트 관련 코드 DefaultISR.h Device.h에서 include PieCtrl.c PIE 회로 초기화 PIE 회로 가동 PieVect.c 벡터 레이블 선언 PIE 벡터 확장 Defaultisr.c 테스트용 인터럽트 서비스 루틴 http://cafe.naver.com/roboticslab

TMS320F2812 CPU Timer CPU Timer 총 3개의 Timer가 내장되어 있다. Timer0, Timer1, Timer2 모두 32Bit Timer로 Down-Counting방식 Timer1과 2는 Real Time OS(DSP/BIOS)를 사용할 때, BIOS의 스케쥬링에 이용된다. http://cafe.naver.com/roboticslab

TMS320F2812 CPU Timer CPU Timer의 구조와 동작 원리 http://cafe.naver.com/roboticslab

TMS320F2812 CPU Timer CPU Timer 관련 레지스터 Counter Register Period Register http://cafe.naver.com/roboticslab

TMS320F2812 CPU Timer CPU Timer 관련 레지스터 Control Register Name Description Bit15 TIF CPU-Timer Interrupt Flag Bit14 TIE CPU-Timer Interrupt Enable Bit11 FREE CPU-Timer Emulation Mode Bit10 SOFT Bit5 TRB CPU-Timer Reload Bit Bit4 TSS CPU-Timer Stop Status Bit http://cafe.naver.com/roboticslab

TMS320F2812 GP Timer Event Manager http://cafe.naver.com/roboticslab

TMS320F2812 GP Timer Event Manager 예) 타이머가 넘쳤을 때(Overflow), 타이머가 0으로 떨어 졌을 때(Underflow), 비교 설정된 값과 일치했을 때(Compare), 주기 값과 일치 했을 때(Period) 등과 같은 사건이 발생했을 때, 인터럽트를 발생 시킨 다던지, 아니면, 개발자가 지시한 내용대로 회로를 시간에 맞춰서 움직는 역할을 한다. http://cafe.naver.com/roboticslab

TMS320F2812 GP Timer GP Timer http://cafe.naver.com/roboticslab

TMS320F2812 GP Timer GP Timer 관련 레지스터 GP Timer Control Register A(GPTCONA) Timer x Period Register (TxPR, where x = 1, 2, 3, 4,) Timer x Compare Register (TxCMPR, where x = 1, 2, 3, 4,) http://cafe.naver.com/roboticslab

TMS320F2812 GP Timer GP Timer 관련 레지스터 EVA Interrupt Mask Register A (EVAIMRA) EVA Interrupt Flag Register A (EVAIFRA) http://cafe.naver.com/roboticslab

TMS320F2812 GP Timer GP Timer 관련 레지스터 Timer x Counter Register (TxCNT, where x = 1, 2, 3, or 4) Timer x Control Register (TxCON; x = 1, 2, 3, or 4) http://cafe.naver.com/roboticslab

실습(1) CPU Timer를 이용한 LED 점멸 다음 프로젝트를 여시오. LED 점멸 코드 구현 C:\tidcs\c28\dsp281x\v100\DSP281x_examples\ cpu_timer\Example_281xCpuTimer.pjt LED 점멸 코드 구현 인터럽트 서비스에 다음을 구현하시오. F14포트에 연결된 LED를 1초 간격으로 점멸 G4포트에 연결된 LED를 10초 간격으로 점멸 G5포트에 연결된 LED를 60초 간격으로 점멸 http://cafe.naver.com/roboticslab

실습(2) GP Timer를 이용한 LED 점멸 다음 프로젝트를 여시오. LED 점멸 코드 구현 C:\tidcs\c28\dsp281x\v100\DSP281x_examples\ ev_timer_period\Example_281xEvTimerPeriod.pjt LED 점멸 코드 구현 인터럽트 서비스에 다음을 구현하시오. GP Timer1 인터럽트 서비스 루틴 : F14포트에 연결된 LED를 1초 간격으로 점멸 GP Timer2 인터럽트 서비스 루틴 : G4포트에 연결된 LED를 10초 간격으로 점멸 GP Timer3 인터럽트 서비스 루틴 : G5포트에 연결된 LED를 60초 간격으로 점멸 http://cafe.naver.com/roboticslab

Address/Data Bus use to external ADC Plan 3차 Peripherals Operation (5월 28일) CPU/GP Timer ADC 4차 Peripherals Operation (6월 ?일) Flesh Memory Control IQMath 3차 Application (6월 ?일) Address/Data Bus use to external ADC 4차 Application (6월 ?일) Step Motor Drive IR Sensor Interface http://cafe.naver.com/roboticslab

Thank You ! www.themegallery.com