PIC 18F45K20 - externer Interrupt will nicht

Gast #2307775
Lesenswert?

Hallo Forengemeinde,

ich starte gerade mit PIC Programmierung in C. Ich nutze den CCS 
compiler und das 44-Pin Demoboard von Microchip mit dem 18F45K20. Will 
ich über einen Taster (Pullup 10K) an RB0 einen externen Interrupt 
nutzen, um eine LED an Port RD0 ausgeben, passiert mit dem nachfolgen 
Code nichts. Ich habe schon verschiedenes probiert, aber komme nicht 
weiter. Vielleicht fällt jemanden von Euch ja etwas am Code auf?

Oliver
1
#include <18F45K20.h>
2
#use delay(clock=1000000)
3

4
#fuses INTRC_IO,NOFCMEN,NOIESO,NOPUT,BROWNOUT_NOSL,BORV20
5
#fuses NOWDT,NOLVP,WDT32,NOMCLR,NOLPT1OSC,PBADEN,CCP2C1
6
#fuses STVREN,NOLVP,NOXINST
7
#fuses NOWRTB,NOWRTC,NOWRTD,NOWRT,NOEBTR
8

9
#define LED PIN_D0
10

11
#int_ext                //Interrupt-Routine für RB0
12

13
void LED_AUSGEBEN()
14
{
15
output_high(LED);
16
delay_ms(500);
17
}
18

19
void main() 
20
{
21
set_tris_d(0);              //RD0 wird als Ausgang definiert
22
set_tris_b(1);               //RB0 wird als Eingang definiert
23
setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
24

25
ext_int_edge(L_TO_H);           //steigende Flanke
26
enable_interrupts(INT_EXT);       //RB0 Interrupt wird aktiviert
27
enable_interrupts(GLOBAL);         //Globaler Interrupt wird aktiviert
28

29
//output_high(LED);
30
//delay_ms(100);
31

32
while (1)
33
  {
34
  output_low(LED);           //LED wird auf LOW gesetzt
35
  }
36
}
Gast #2311418
Lesenswert?

Hallo,

ich kenne den Compiler nicht, aber:
- in ASM ist tris ein byte. Hier wird es als Bit angeprochen.
- Interruproutine richtig deklariert? Einsprungandresse. Evtl Ende?? 
Nicht das Main() zum Interrupt gehört

Grüße
Max
Gast #2312403
Lesenswert?

Außerdem wird der Ausgang sofort wieder auf 0 gesetzt. While(1)...
-> Permanente Schleife!

Interruptroutine wir normalerweise Funktion() as inerrupt xx oder so 
ähnlich angesprochen. Compilerspezifikation!?!

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