M16C Sample Code in HEW

Gast #817108
Lesenswert?

hallo zusammen,
ich besitze seit kurzem ein ZigBee Demo mit einem M16C.
Ich bin ziemlicher Anfänger. Habe mir den Sample code, z.b einen 
Event-Timer, für Led blinken, angeschaut und auf das Board geladen. So 
funktioniert er, aber wenn ich ein neues Projekt erstelle und den 
gleichen Timer aus dem Sample-Code verwende funktioniert das nicht. weiß 
nicht warum, die c, h, a30 und inc Dateien sind gleich.
Weiß jemand woran es liegen könnte.


ich häng den code mal mit ran


#include "skp_bsp.h"
#define  TMR_CONFIG 0x01
#define  CNTR_IPL   0x03
int count;

void mcu_init(void);
void timer_init(void);

#pragma INTERRUPT ta2_irq
void ta2_irq(void);

/****************************************/
void main (void)
{
  mcu_init();

         ENABLE_LEDS;

    count = 0;
    YLW_DDR = 1;
    timer_init();
    while (1);
}
/*************************************/
void timer_init()
{
  ta2 = 100;
     ta2mr = TMR_CONFIG;

         trgsr = 0x0c;

         ta3mr = 0x84;
         ta3 = (int)(((f1_CLK_SPEED/32)*5e-3)-1);

         DISABLE_IRQ;
     ta2ic |= CNTR_IPL;
         ENABLE_IRQ;

  ta2s = 1;
  ta3s = 1;
}
/***************************************/
void ta2_irq(void)
{
  int delaycntr;
    delaycntr = 0;
    count++;
    YLW_LED = LED_ON;
    while(delaycntr <0xffff)
    delaycntr++;
    YLW_LED = LED_OFF;
}



Vielen Dank
Gast #817135
Lesenswert?

Hallo,

es ist schon etwas länger her, dass ich mich mit der HEW beschäftigt 
habe, aber soweit ich mich erinnere musste ich die Interrupts zuvor in 
einer Systemdatei *.inc erst anwählen (freischalten) . Daher mein Tip, 
suche mal nach "INTERRUPT" bzw. "VECTOR" in den Dateien des 
funktionierenden Beispiels. Wenn Du den E8 als Emulator/Debugger 
einsetzen solltest, so gibt es hier auch eine Voreinstellung zu beachten 
(Vergabe eines bestimmten RAM-Bereiches!!!) Evtl. habe ich heute abend 
bzw. morgen die Möglichkeit in meinen "alten" Projekten mal 
nachzuschauen.
Gast #817250
Lesenswert?

Hast du in der sect30.inc die Vectoren gesetzt?

Beispiel-Ausschnit:
1
  .glb    _vs_dma_isr
2
  .glb    _timer_isr
3
  .glb    _pwm_isr
4

5
  .lword  dummy_int  ; 25 - timer A4
6
  .lword  _timer_isr  ; 26 - timer B0
7
  .lword  _pwm_isr  ; 27 - timer B1

Und das globale freigeben der Interupts
1
  asm("fset i");  // Interrupt freigeben, I-Flag setzen

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren