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