www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Števec na atmega32

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika za začetnike
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
pogorevc
Član
Član



Pridružen-a: Pet 16 Avg 2013 23:07
Prispevkov: 53
Aktiv.: 0.37

PrispevekObjavljeno: Ned Sep 15, 2013 12:06 pm    Naslov sporočila:  Števec na atmega32 Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
tilz0R
Član
Član



Pridružen-a: Čet 31 Maj 2012 15:39
Prispevkov: 898
Aktiv.: 5.65
Kraj: Črnomelj

PrispevekObjavljeno: Ned Sep 15, 2013 4:00 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
pogorevc
Član
Član



Pridružen-a: Pet 16 Avg 2013 23:07
Prispevkov: 53
Aktiv.: 0.37

PrispevekObjavljeno: Pon Sep 16, 2013 7:25 pm    Naslov sporočila:  LP Odgovori s citatom

aha najlepša hvala. Ali bi lahko uporabil tudi funkcijo bit_is_set(PINB,0) za preverjanje stikala recimo na pin0?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
tilz0R
Član
Član



Pridružen-a: Čet 31 Maj 2012 15:39
Prispevkov: 898
Aktiv.: 5.65
Kraj: Črnomelj

PrispevekObjavljeno: Tor Sep 17, 2013 1:09 am    Naslov sporočila:   Odgovori s citatom

Tudi bi lahko.
_________________
Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika za začetnike Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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