Forum: Mikrocontroller und Digitale Elektronik Mega32 INT2 problem


von Holger P. (holgerp)


Lesenswert?

Hallo,

ich habe ein Problem mit dem externen INT2 vom Mega32.

ich habe folgendes an code:

Externer INT0 und INT1 funktionieren, was mache ich falsch??


...

  // globale interrupt register INT0 - INT2 einschalten
  GICR |= (1<<INT0); // enable INT0 - PD2
  GICR |= (1<<INT1); // enable INT1 - PD3
  GICR |= (1<<INT2); // enable INT2 - PB2

  // INT2 fallend Flanke
  MCUCSR |= (1<<ISC2);

...

/*
** Interrupt routine für externen INT2 - PB2
*/
ISR(INT2_vect)
{
 TxUart("INT2\r\n");

}

...

sei(); Globale interrupts einschalten


....

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Holger Patz schrieb:

>   // INT2 fallend Flanke
>   MCUCSR |= (1<<ISC2);

Stimmt nicht. 1 nach Bit ISC2 von MCUCSR bedeutet Interrupt bei *rising 
edge* und du musst eine Mindestdauer des Pulses einhalten (tint typ. 50 
ns).

von Stefan E. (sternst)


Lesenswert?

Crosspost
Beitrag "INT2 Problem Mega32"

@  Holger Patz:
Hier kannst du auch direkt sehen, warum Crossposten böse ist. Mein 
Namensvetter hat jetzt seine Zeit mit etwas verschwendet, was im anderen 
Thread längst abgehandelt wurde.

von Holger P. (holgerp)


Lesenswert?

Hi Stefan,

ok stimmt, dann aber so

  // INT2 fallend Flanke
   MCUCSR&= ~(1<<ISC2);

Init Pins:

 // INT0
 cbi(DDRD, PD2);
 sbi(PORTD,PD2);

 // INT1
 cbi(DDRD, PD3);
 sbi(PORTD,PD3);


 // INT2
 cbi(DDRB, PB2);
 sbi(PORTB,PB2);

Beschaltung:

Taster an GND und an INT2. Wenn ich nun den Taster drücke sollte es doch 
mit der og. Einstellung klappen oder??

Tut's aber nicht.
Habe in der INT2 Routine einfach mal ein Piepsen ausgegeben über ein 
Buzzer um es ganz einfach zu halten.

Habe ich irgend wsa vergessen zu initialisieren ?

/*
** Interrupt routine für externen INT2 - PB2
*/
ISR(INT2_vect)
{
 Beep(5,200); // piept 5 mal für 200 ms

}

von Holger P. (holgerp)


Lesenswert?

ok, dachte beim ersten Post, dass ich im falschen Thema gelandet wäre 
...

sorry kommt nicht wieder vor!

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.