Koledzy,
Jestem szczęśliwym posiadaczem impulsatora i walczę żeby go obsłużyć w C... Paranoja tkwi w tym, że w bascomie impulsator działa, a praktycznie ten sam program przepisany do C nie działa...
Impulsator mam podłączony środkiem do GND jeden PIN na INT0(PD2) trzeci na(PD7). Na porcie C linijka diod. Poniżej listing programu:
Kierunek kręcenia impulsatorem rozpoznaję tutaj za pomocą XOR-a.
Kręcenie impulsatorem w jedną stronę powoduje dekrementację natomiast kręcenie w drugą stronę powoduje naprzemienną dekrementację i inkrementację, dioda na LSB (PC0) naprzemian zapala się i gaśnie.
Pomóżcie, bo nie mam pomysłu co jest nie tak
Jestem szczęśliwym posiadaczem impulsatora i walczę żeby go obsłużyć w C... Paranoja tkwi w tym, że w bascomie impulsator działa, a praktycznie ten sam program przepisany do C nie działa...
Impulsator mam podłączony środkiem do GND jeden PIN na INT0(PD2) trzeci na(PD7). Na porcie C linijka diod. Poniżej listing programu:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#define F_CPU 8000000
void init(){
DDRC = 0xFF;
PORTC = 0xFF;
DDRD &=~(_BV(2) | _BV(7));
PORTD |=(_BV(2) | _BV(7));
MCUCR |=_BV(ISC00);
MCUCR &=~_BV(ISC01);
GICR |= (_BV(INT0));
_delay_ms(100);
PORTC ^=0xFF;
_delay_ms(100);
PORTC ^=0xFF;
};
ISR(INT0_vect) {
cli();
if ((PIND&_BV(2)) ^ (PIND&_BV(7))==0) PORTC++; else PORTC--;
sei();
};
int main(){
init();
sei();
while(1);
};
Kierunek kręcenia impulsatorem rozpoznaję tutaj za pomocą XOR-a.
Kręcenie impulsatorem w jedną stronę powoduje dekrementację natomiast kręcenie w drugą stronę powoduje naprzemienną dekrementację i inkrementację, dioda na LSB (PC0) naprzemian zapala się i gaśnie.
Pomóżcie, bo nie mam pomysłu co jest nie tak