AVR PCINT17-PCINT20 aktivieren

#3102233
Lesenswert?

Hallo ich brauche mal wieder Hilfe,

bin vor kurzen mal wieder dazu gekommen meine Motorsteueung weiter zu 
entwickeln.

Ich habe 2 Liniarantrieb (M1, M2) , bei welchen jeweils 2 Hall sensoren 
zur bestimmung der Schrittwiete ausgelesen und gezählt werden.

Benutze eine Atmega88

Mein Problem ist das der der M1 an PIN INTO(PD2) und PCINT17(PD1) hängt.
Der Motor 2 benutzt für die Hall sensoren PIN INT1(PD3) und 
PCINT20(PD4).

INTO und INT1

kann ich mitlerweile super auslesen.
1
void count_HALLSENSOR () 
2
{
3
//M1_H1--> PD2; M1_H2-->PD1; M2_H1-->PD4; M2_H2-->PD3
4
hall_count_buff_1 = 0x00;
5
hall_count_buff_2 = 0x00; 
6

7
EICRA |= (1<<ISC11) | (1<<ISC01);   // INT1(PD3)+INT0(PD2) on falling edge
8
EIMSK |= (1<<INT1) | (1<<INT0);    // Enable INT1+INT0
9

10
}

Aufgerufen habe ich es über.
1
//ISR(INT0_vect)  { hall_count_buff_1++; }  //  INT0 (M1_H1-->PD2)
2
//ISR(INT1_vect)  { hall_count_buff_2++; }  //  INT1 (M2_H2-->PD3)

Meine Frage wie nutze ich die PCINT17 und PCINT20

meine Anfänge:
1
void count_HALLSENSOR_2 () 
2
{
3
hall_count_buff_1 = 0x00;
4
hall_count_buff_2 = 0x00; 
5

6

7
PCICR |= (1<<PCIE2);      //Anschalten
8
PCMSK2 |= (1<<PCINT17)|(1<<PCINT17);      //Definiren
9
}

Bloss beim Aufruden mekert er rum.
1
ISR(PCINT17_vect)  { hall_count_buff_1++; }  //  INT0 (M1_H1-->PD2)

Vielen Danke für eure Hilfe im voraus
(Firma: matzetronics) #3102270
Lesenswert?

Matthias Lipinsky schrieb:
> Steht doch in der Fehlermeldung, das der Wert in Zeile 42 um 42 zu klein
> ist.

Hier passt Douglas Adams wirklich nicht.

Theater sucht schrieb:
> PCMSK2 |= (1<<PCINT17)|(1<<PCINT17);      //Definiren

Du hast aber hier zweimal PCINT17? Und das hier
1
ISR(PCINT17_vect)  { hall_count_buff_1++; }  //  INT0 (M1_H1-->PD2)
gibt es gar nicht. Es gibt nur
1
ISR(PCINT2_vect)
2
{
3
}
D.h. nur jede Gruppe von PC Interrupts hat einen Vektor, nicht jeder 
einzelne Pin.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren