Forum: Mikrocontroller und Digitale Elektronik PIC 18F45K20 - externer Interrupt will nicht


von Oliver (Gast)


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
}

von Oliver (Gast)


Lesenswert?

Weiss keiner Rat? Ich stecke in dieser Sache fest und bin für jeden 
Hinweis dankbar!

Oliver

von Max (Gast)


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

von Max (Gast)


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!?!

von heldvomfeld (Gast)


Lesenswert?

wie sieht die extern interrupt routine aus? also was steht hinter:
1
#int_ext                //Interrupt-Routine für RB0

im datenblatt steht viel über die externen interrupts

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.