[an error occurred while processing this directive]
Сделай из этого *.асм, но учти что у меня ртх начинается с 0х8000 (может у тебя с 0х8005, проверь). А вообщем работает, правда проверял только в симуляторе. Ну и флаги отконфигурируй под себя, а то я не виноват, если погоришь.
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)
миниатюрный аудио-видеорекордер mAVR

Отправлено sdy 11 июля 2002 г. 03:23
В ответ на: Ответ: А у тебя нет какого нить рабочего проекта с использованием прерывания от таймера под SHARC (лучше под 21065l) а то.. отправлено mpo 10 июля 2002 г. 10:41

#include "def21065l.h"

#define TMR_PRD 100
#define PWM_PLEN 5

.section/pm seg_rth;

/* 0x00 Reserved Interrupt */
reserved_0: NOP; NOP; NOP; NOP; NOP;

/* *** Reset vector *** */
/* 0x05 - reset vector starts at location 0x8005 */
rst_svc: jump start; nop; nop;

/* 0x08 - Reserved interrupt */
reserved_0x8: NOP; NOP; NOP; NOP;

/* 0x0C - Vector for status stack/loop stack overflow or PC stack full: */
sovfi_svc: RTI; RTI; RTI; RTI;

/* 0x10 - Vector for high priority timer interrupt: */
tmzhi_svc: RTI; RTI; RTI; RTI;

/* 0x14 - Vectors for external interrupts: */
vrpti_svc: RTI; RTI; RTI; RTI;

/* 0x18 - IRQ2 Interrupt Service Routine (ISR) */
irq2_svc: RTI; RTI; RTI; RTI;

/* 0x1C - IRQ1 Interrupt Service Routine (ISR) */
irq1_svc: RTI; RTI; RTI; RTI;

/* IRQ0 INTERRUPT VECTOR */
/* *** 0x20 - IRQ0 Interrupt Service Routine (ISR) , 4 locations max *** */
irq0_svc: RTI; RTI; RTI; RTI;

/* 0x24 - Reserved interrupt */
reserved_0x24: NOP; NOP; NOP; NOP;

/* 0x28 - Vectors for Serial Port 0 Receive A & B DMA channels 0/1 */
spr0_svc: RTI; RTI; RTI; RTI;

/* 0x2C - Vectors for Serial Port 1 Receive A & B DMA channels 2/3 */
spr1_svc: RTI; RTI; RTI; RTI;

/* 0x30 - Vectors for Serial Port 0 Transmint A & B DMA channels 4/5 */
spt0_svc: RTI; RTI; RTI; RTI;

/* 0x34 - Vectors for Serial Port 1 Transmit A & B DMA channels 6/7 */
spt1_svc: RTI; RTI; RTI; RTI;

/* 0x38 - Reserved Interrupt */
reserved_0x38: RTI; RTI; RTI; RTI;

/* 0x3C - Reserved Interrupt */
reserved_0x3c: RTI; RTI; RTI; RTI;

/* 0x40 - Vector for External Port DMA channel 8 */
ep0_svc: RTI; RTI; RTI; RTI;

/* 0x44 - Vector for External Port DMA channel 9 */
ep1_svc: RTI; RTI; RTI; RTI;

/* 0x48 - Reserved Interrupt */
reserved_0x48: RTI; RTI; RTI; RTI;

/* 0x4C - Reserved Interrupt */
reserved_0x4c: RTI; RTI; RTI; RTI;

/* 0x50 - Reserved Interrupt */
reserved_0x50: RTI; RTI; RTI; RTI;

/* 0x54 - Vector for DAG1 buffer 7 circular buffer overflow */
cb7_svc: RTI; RTI; RTI; RTI;

/* 0x58 - Vector for DAG2 buffer 15 circular buffer overflow */
cb15_svc: RTI; RTI; RTI; RTI;

/* 0x5C - Vector for lower priority timer interrupt */
tmzl_svc: jump timer_lo_prior; RTI; RTI; RTI;

/* 0x60 - Vector for fixed-point overflow */
fix_svc: RTI; RTI; RTI; RTI;

/* 0x64 - Floating-point overflow exception */
flt0_svc: RTI; RTI; RTI; RTI;

/* 0x68 - Floating-point underflow exception */
fltu_svc: RTI; RTI; RTI; RTI;

/* 0x6C - Floating-point invalid exception */
flti_svc: RTI; RTI; RTI; RTI;

/* 0x70 - User software interrupt 0 */
sft0_svc: RTI; RTI; RTI; RTI;

/* 0x74 - User software interrupt 1 */
sft1_svc: RTI; RTI; RTI; RTI;

/* 0x78 - User software interrupt 2 */
sft2_svc: RTI; RTI; RTI; RTI;

/* 0x7C - User software interrupt 3 */
sft3_svc: RTI; RTI; RTI; RTI;

.section/pm seg_pmco;
start:
bit clr mode1 IRPTEN|NESTM;

ustat1=0x3F; // flags 4 thru 9 are outputs for LEDs.
dm(IOCTL)=ustat1;
bit set ustat1 0x3F;
dm(IOSTAT)=ustat1;
bit clr mode2 FLG2O|FLG1O|FLG0O; // flag 3, 2 & 0 inputs.

bit set mode2 IRQ1E|IRQ2E;
bit clr mode2 IRQ0E;
IRPTL = 0x0;
bit set mode1 ALUSAT;

bit clr mode2 TIMEN0;
bit set mode2 PWMOUT0|PERIOD_CNT0; // period count (esli u tebya pwm, to menay), PWMOUT output.
bit clr mode2 INT_HI0; // li.

r0 = TMR_PRD;
dm(TPERIOD0) = r0; // ne zabud opredelit.
dm(TCOUNT0) = r0;
r0 = PWM_PLEN;
dm(TPWIDTH0) = r0; // PWM_PLEN must be less th TMR_PRD.

bit set imask TMZLI;
bit set mode2 TIMEN0;

bit set mode1 IRPTEN|NESTM;

idle;
jump(pc,-1);

.section/pm seg_pmco;
timer_lo_prior:
// ok.
rti;

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru