External Interrupt bei ATmega8

Gast #2152172
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 #2152241
oups,

ich hab gedacht ich müsste die DDR Bits für den input setzen und für den 
output nicht. Dabei ist es andersherum. hab ich wohl irgendwie verdreht. 
Danke für die Hilfe
Marco B
Gast #2152282
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

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.