www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik M16C Sample Code in HEW

Autor: Joe (Gast)
Datum: 19.03.2008 16:12

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
Autor: gast (Gast)
Datum: 19.03.2008 16:27

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.
Autor: Martin (Gast)
Datum: 19.03.2008 18:14

Hast du in der sect30.inc die Vectoren gesetzt?

Beispiel-Ausschnit:
  .glb    _vs_dma_isr
  .glb    _timer_isr
  .glb    _pwm_isr

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

Und das globale freigeben der Interupts
  asm("fset i");  // Interrupt freigeben, I-Flag setzen
Autor: Joe (Gast)
Datum: 20.03.2008 07:36

Hallo,

Hab sie aktiviert, klappt wunderbar.
Vielen dank

Antwort schreiben

Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
  • Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net