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
>MCUCSR = (0 << ISC2);
Du löscht das komplette Register. Damit sind sämtliche Einstellungen
nichtig.
Willst du das wirklich? (ich habe jetzt gerade nicht das Datenblatt im
Kopf...)
> 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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.