External Interrupt bei ATmega8

Gast #2152172
Lesenswert?
• ▲
▼
Guten Abend allerseits,

Ich versuche schon den ganzen Tag die externen Interrupts des Atmega8 zu 
benutzen. Ich habe dazu ein kleines Testprogramm geschrieben bei dem 
nach dem Starten des Controllers LED 1 und 2, also PORTC0 und PORTC1 aus 
sind. Sobald zum ersten Mal ein Int request kommt soll die entsprechende 
LED bis zum Reset des Controllers angehen. Leider funktioniert das Ganze 
aus irgendeinem Grund nicht.

Kann mir eventuell irgendjemand helfen?

Vielen Dank im Vorraus
Marco B

Hier mein Testprogramm:
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3

4

5

6
void portinit (void);
7
void ext_int (void);
8

9

10

11
ISR( INT0_vect  )
12
{
13
  PORTC &= ~(_BV(PC0)); //LED on -> Bit löschen (invertiert[STK500])
14
}
15

16

17

18
ISR( INT1_vect  )
19
{
20
  PORTC &= ~(_BV(PC1)); //LED on -> Bit löschen (invertiert[STK500])
21
}
22

23

24
void main(void)
25
{
26

27
  portinit();
28
  ext_int();
29

30
  PORTC |= _BV(PC0);  //LED off -> Bit setzen (invertiert[STK500])
31
  PORTC |= _BV(PC1);  //LED off -> Bit setzen (invertiert[STK500])
32

33
  sei();        // interrups global aktiviert
34

35
  while (1);
36

37
}
38

39

40
void portinit ()    
41
{
42

43
  DDRD  |= _BV(DDD2)|_BV(DDD3);  //PD2 & PD3 als input 
44
  PORTD |= _BV(PD2)|_BV(PD3);     //PUllupwiderstände aktivieren
45

46
}
47

48

49
void ext_int ()
50
{
51
  
52
  MCUCR |= _BV(ISC11)|_BV(ISC01); //INT0 & INT1 interrupt request bei falling edge
53
  GICR  |= _BV(INT1)|_BV(INT0);   //INT0 & INT1 interrupt enable
54

55
}
Gast #2152282
Lesenswert?
• ▲
▼
Einfache Grundregel: Nach Reset muß alles ungefährlich sein.

Stell dir vor, du hast einen Spannung von einem niederohmigen Sensor 
direkt an einem Pin liegen. Wenn der uC beim Reset die Pins 
standardmäßig als Ausgang schalten würde, könnte das den uC schnell den 
Ausgangs-FET kosten.

MfG

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.