 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
pogorevc Član

Pridružen-a: Pet 16 Avg 2013 23:07 Prispevkov: 53 Aktiv.: 0.37
|
Objavljeno: Ned Sep 15, 2013 12:06 pm Naslov sporočila: Števec na atmega32 |
|
|
LP
Ker sem še nov na področju Atmege32 me zanima li mi lahko prosim kdo malce pomaga in mi predloži kakšen programček oz primer v c++.
Rad bi recimo da imam na Vhodu PINB0 stikalo oz gumb. NA PINB1 na LED diodo. Kako bi naredil recimo, da šteje klike na stikalu, da bi recimo ko bi 10krat prtisnil stikalo bi zasvetila lučka.
Hvala vam |
|
Nazaj na vrh |
|
 |
tilz0R Član


Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 5.65 Kraj: Črnomelj
|
Objavljeno: Ned Sep 15, 2013 4:00 pm Naslov sporočila: |
|
|
Na hitro iz glave izpisano, ni preverjeno, ampak bi moralo delovati.
Koda: |
#define PIN_LED PINB1
#define PIN_BUT PINB0
#define F_CPU 1000000UL //Spremeni glede na tvojo vrednost ure uC-ja
#include <avr/io.h>
#include <util/delay.h>
int main(void) {
DDRB |= 1 << PIN_LED; // Na PINB1 je LED
PORTB |= 1 << PIN_BUT; //Vklopi PULL UP upor za tipko, tipko priklopiš tako, da ob pritisku narediš stik na maso
uint8_t stevec = 0;
while (1) {
//Če je tipka pritisnjena
if (!(PINB & (1 << PIN_BUT))) {
_delay_ms(25); //Button debouncing, fizično nihanje ob pritisku
//Ko se stanje tipke "ustali" preveri ponovno če je še vedno pritisnjena
if (!(PINB & (1 << PIN_BUT))) {
//Če je, povečaj števec za 1
stevec++;
//Počaka, da spustiš tipko
while (!(PINB & (1 << PIN_BUT)));
}
}
//Če je bilo 10 pritiskov
if (stevec >= 10) {
//Spremeni stanje ledici, če je prej svetla je zdej vgasnjena in obratno
PORTB ^= 1 << PIN_LED;
//Resetiraj števec
stevec = 0;
}
}
}
|
_________________ Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net |
|
Nazaj na vrh |
|
 |
pogorevc Član

Pridružen-a: Pet 16 Avg 2013 23:07 Prispevkov: 53 Aktiv.: 0.37
|
Objavljeno: Pon Sep 16, 2013 7:25 pm Naslov sporočila: LP |
|
|
aha najlepša hvala. Ali bi lahko uporabil tudi funkcijo bit_is_set(PINB,0) za preverjanje stikala recimo na pin0? |
|
Nazaj na vrh |
|
 |
tilz0R Član


Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 5.65 Kraj: Črnomelj
|
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 495 dni
Powered by phpBB © 2001, 2005 phpBB Group
|