Forum: Mikrocontroller und Digitale Elektronik M16C Sample Code in HEW


von Joe (Gast)


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

von gast (Gast)


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.

von Martin (Gast)


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

von Joe (Gast)


Lesenswert?

Hallo,

Hab sie aktiviert, klappt wunderbar.
Vielen dank

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.