www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik M16C Sample Code in HEW


Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Hab sie aktiviert, klappt wunderbar.
Vielen dank

Antwort schreiben

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

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.