1 2 3 4 |
// konfiguracja systemu zdarzeń EVSYS.CH0MUX = EVSYS_CHMUX_PORTC_PIN0_gc; // pin C0 wywołuje zdarzenie EVSYS.CH0CTRL = EVSYS_QDEN_bm| // włączenie dekodera w systemie zdarzeń EVSYS_DIGFILT_8SAMPLES_gc; // filtr cyfrowy |
1 2 3 4 |
// konfiguracja timera TCC0.CTRLA = TC_CLKSEL_EVCH0_gc; // taktowanie zegarem 2MHz TCC0.CTRLD = TC_EVACT_QDEC_gc | // włączenie dekodera kwadraturowego TC_EVSEL_CH0_gc; // dekoder zlicza impulsy z kanału 0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#define F_CPU 2000000UL #include <avr/io.h> #include <util/delay.h> #include "hd44780.h" int main(void) { // wejścia enkodera PORTCFG.MPCMASK = 0b00000011; // wybór pinów 0 i 1 do konfiguracji PORTC.PIN0CTRL = PORT_ISC_LEVEL_gc | // reagowanie na poziom niski PORT_OPC_PULLUP_gc; // podciągnięcie do zasilania // konfiguracja systemu zdarzeń EVSYS.CH0MUX = EVSYS_CHMUX_PORTC_PIN0_gc; // pin C0 wywołuje zdarzenie EVSYS.CH0CTRL = EVSYS_QDEN_bm| // włączenie dekodera w systemie zdarzeń EVSYS_DIGFILT_8SAMPLES_gc; // filtr cyfrowy // konfiguracja timera TCC0.CTRLA = TC_CLKSEL_EVCH0_gc; // taktowanie systemem zdarzeń TCC0.CTRLD = TC_EVACT_QDEC_gc | // włączenie dekodera kwadraturowego TC_EVSEL_CH0_gc; // dekoder zlicza impulsy z kanału 0 // wyświetlacz LcdInit(); while(1) { // wyświetlenie aktualnej wartości licznika CNT // CNT = ... LcdClear(); Lcd("CNT = "); LcdDec(TCC0.CNT / 4); // jeden przeskok to 4 impulsy _delay_ms(100); // czekanie 100ms } } |
Dystrybutorem zestawu X3-DIL64 jest KAMAMI.pl. |
Dominik Leon Bieczyński