RP6 - ATMEGA32 extrener interrupt??

OP #1144251
Lesenswert?
• ▲
▼
Hallo Leut!!!

Hab mir vor ein paar tagen einen RP6 roboter bei conrad gekauft. Der 
arbeitet mit einem ATMEGA32L µC. Es sind zwar viele funktionen 
mitgeliefert, aber ich versuch alles selber zu programmieren, währ ja 
sonst nur der halbe spass :-)

Also ich versuche gerade die Radumdrehungen zu messen und das ganze 
läuft über die externen interrups INT0 und INT1. der roboter soll eine 
gewisse strecke zurücklegen und dann stehen bleiben.

Mein problem ist, dass das programm nicht in die ISR springt. das selbe 
problem hatte ich auch schon bei einem AT90USB162...

der Code:

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include "RP6_utils.h"

int encl = 0;
int encr = 0;

ISR (INT0_vect)
{
  PORTB &= (0<<PB0);
  encl++;
}

ISR (INT1_vect)
{
  encr++;
}

int main (void)
{
  DDRB |= (1<<DDB0); //led zum test
  PORTB |= (1<<PB0);
  DDRD |= (1<<DDD4) | (1<<DDD5);
  PORTD |= (1<<PD4) | (1<<PD5);  //beide räder einschalten

  //interrupt initialisieren
  MCUCR = (0 << ISC11) | (1 << ISC10) | (0 << ISC01) | (1 << ISC00);
  GICR = (1 << INT1) | (1 << INT0);
  MCUCSR = (0 << ISC2);
  sei();

  while(1)
  {
    if (encl == 1000)
    {
      PORTD |= (0<<PD4);
      encl = 0;
    }
    if (encr == 1000)
    {
      PORTD |= (0<<PD5);
      encr = 0;
    }
  }
}

hab ich irgend etwas vergessen, oder falsch initialisiert??
Vielleicht hat oder hatte jemand das selbe problem??

bitte um hilfe!!!

danke
martin91
Gast #1144267
Lesenswert?
• ▲
▼
>  MCUCR = (0 << ISC11) | (1 << ISC10) | (0 << ISC01) | (1 << ISC00);
//INT0 und INT1 sollen auf beide Flankenrichtungen reagieren
Das ist soweit richtig.
>  GICR = (1 << INT1) | (1 << INT0);
// schaltet beide Interrupts frei
ist auch richtig.

>  MCUCSR = (0 << ISC2);
Wie oben schon geschrieben: Totaler Schwachfug.

Ich würde sagen, dass du dich mal mit dem Tutorium befassen solltest.

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.