mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pic24FJ256GB110 interrupt von Timer1 mit CCS-Compiler


Autor: the0816noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich versuche gerade mit dem Timer1 meines PIC einen Interrupt 
auszulösen. Unten folgt nun die Initialisierung des Interrupts und des 
Timers. Ich habe wohl irgendwas vergessen, habe aber keine Ahnung was. 
Kann jemand helfen?

#include "24FJ128GA010.h"

int8 test

#INT_TIMER1
inttimer1()
  {
  test++;
  }


void main()
        {
  setup_timer1(TMR_INTERNAL|TMR_DIV_BY_256); //Timer1 starten
  PR1H=0x88;                                 //endwert festlegen

  enable_interrupts(INT_TIMER1);             //interrupt einschalten
        while(TRUE);
        }

Autor: Sascha Focus (sascha_focus) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

kenne den CCS nicht.
Aber beim C30 sieht es so aus:

void  INIT_TIMER1(void)
{
  T1CONbits.TON=0;            // Timer 1 zum einstellen sperren
  T1CONbits.TCS=0;            // intern Clock
  T1CONbits.TGATE=0;            // Gates Timer Mode aus
  T1CONbits.TCKPS=0b11;          // CLK/256
  TMR1=0x00;
  PR1=624;                //29491200/256=115200 /10-1

  IPC0bits.T1IP=0x01;
  IFS0bits.T1IF=0;
  IEC0bits.T1IE=1;
  Counter=0;
  T1CONbits.TON=1;
}

void _attribute_ ((interrupt,no_auto_psv)) _T1Interrupt(void)
{
  IFS0bits.T1IF = 0;
}

Gruß Sascha

Autor: Sascha Focus (sascha_focus) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso:

while(TRUE)
    {
    }

Gruß Sascha

Autor: Peter Diener (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

general interrupt enable wird nirgends gesetzt.

Grüße,

Peter

Autor: Sascha Focus (sascha_focus) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Diener wrote:
> Hallo,
>
> general interrupt enable wird nirgends gesetzt.
>
> Grüße,
>
> Peter

Wäre mir neu, das der PIC24F es hat. Hatte es auch gedacht, da 
vorkenntnisse beim PIC18. Aber man findet es nicht im Datenblatt oder in
den Refernz-Guides.

Gruß Sascha

Autor: the0816noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Endlich funktioniert mein Interrupt. Das Problem lag daran das der 
Compiler ein falsches Bit 1 setzte, und somit einen falsch Interrupt 
aktivierte.

Vielen Dank für die Hilfe.

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.