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

Pridružen-a: Čet 15 Okt 2009 21:01 Prispevkov: 141 Aktiv.: 0.74 Kraj: Slov. Konjice
|
Objavljeno: Ned Mar 13, 2011 12:46 pm Naslov sporočila: Bascom avr pomoč pri programu |
|
|
Rad bi napisal sledeči program:
iz senzorja bi prisel signal na čip, če bi bil ta signal prisotem 30min bi se setiral en izhod, če bi se signal izklopil prej kot v 30min, se ne zgodi nič
Nazadnje urejal/a frimd Ned Mar 13, 2011 8:13 pm; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.32 Kraj: Maribor (Pohorje)
|
Objavljeno: Ned Mar 13, 2011 1:14 pm Naslov sporočila: Re: Bascom avr pomoč pri programu... nujno |
|
|
frimd je napisal/a: |
Rad bi napisal sledeči program:
iz senzorja bi prisel signal na čip, če bi bil ta signal prisotem 30min bi se setiral en izhod, če bi se signal izklopil prej kot v 30min, se ne zgodi nič |
Kateri AVR uporabljaš? (Pa še njegovo frekvenco?)
Mora biti čas točen - 30 minut?
|
|
Nazaj na vrh |
|
 |
frimd Član

Pridružen-a: Čet 15 Okt 2009 21:01 Prispevkov: 141 Aktiv.: 0.74 Kraj: Slov. Konjice
|
Objavljeno: Ned Mar 13, 2011 1:33 pm Naslov sporočila: |
|
|
uporabljam attiny13
čas niti ni tako pomemben, lahko je tudi 20sec
|
|
Nazaj na vrh |
|
 |
fast Neznanec


Pridružen-a: Ned 13 Mar 2011 12:11 Prispevkov: 4 Aktiv.: 0.02 Kraj: TRST
|
Objavljeno: Ned Mar 13, 2011 1:57 pm Naslov sporočila: |
|
|
Osnutek programa je zapisan v stilu programiranja v jeziku C.
izhod=off;
stevec=0;
inastavljena_vredost=xxx; //xxx=mejna vrednost senzorja
stevec_maks=30*60; //30=minute 60=sekunde v 1 minuti
while(1)
{
if(beri(senzor)<nastavljena_vrednost)
{
if(stevc>0) stevec=0;
else if(stevec>-stevc_maks) stevec=stevec-1;
}
else
{
if(stevc<0) stevec=0;
else if(stevec<stevc_maks) stevec=stevec+1;
}
if(stevec=stevec_maks) izhod=on;
else if (stevec=-stevec_maks) izhod=off;
zakasnitev(1s);
}
lp fast
|
|
Nazaj na vrh |
|
 |
mucek Član


 
Pridružen-a: Tor 01 Avg 2006 10:47 Prispevkov: 5530 Aktiv.: 24.04 Kraj: Domzale
|
Objavljeno: Ned Mar 13, 2011 3:28 pm Naslov sporočila: |
|
|
Na hitro: deklariraš čip, frekvenco, vhod in izho, skonfiguriraš timer interrupt na 1 s, potem pa:
Koda: |
reset izhod
dim sekunda as word
do
if vhod = 1 then
sekunda = 0
do
if vhod = o then exit do
if sekunda > 1800 then
set izhod
wait 5
reset izhod
endif
loop
endif
loop
timer_rutina:
incr sekunda
return
|
LP, Grega
_________________ ...lahko pa se tudi motim ... |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.88 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Mar 13, 2011 3:44 pm Naslov sporočila: |
|
|
V primeru, da ne gre za sila natančen čas ter imaš namen uporabit interni oscilator, potem je boljša varianta dati mikrokontroler v SLEEP( Power-down). Zbudi ga pa WDT reset. Preddelilnik za WDT pa nastaviš recimo na 1024K kar znese 8s ne glede na clock mikrokontrolerja. WDT ima svoj oscilator. Ko se zgodi 225 prekinitev je poteklo 30min. ( v času čakanja lahko mikrokontroler počne tudi kaj drugega, kot pa mleje v zanki) Poleg tega bo poraba bisteno zmanšana, sploh če gre za kako baterijsko napajano aplikacijo)
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.32 Kraj: Maribor (Pohorje)
|
Objavljeno: Ned Mar 13, 2011 5:42 pm Naslov sporočila: |
|
|
Silvo, hvala za odlično idejo!
frimd, vzel sem si čas in ti v Bascom-AVR napisal kodo z več komentarji kot pa kode Upam, da boš razumel delovanje.
Malo sem jo še zakompliciral, da sem odstranil nekaj bugov. Deluje s pomočjo Watchdog timerja, AVR se vmes da v Power-down Sleep Mode, kjer žere le 0.5-2μA toka
Na začetku imaš tri vrstice (13, 14 in 16) ki jih po potrebi spremeniš, in to je vse!
Če ne bo delalo, napiši.
Opis: |
|
 Download |
Ime datoteke: |
Delay switch (ATtiny13).zip |
Velikost datoteke: |
2.27 KB |
Downloadano: |
18 krat |
|
|
Nazaj na vrh |
|
 |
frimd Član

Pridružen-a: Čet 15 Okt 2009 21:01 Prispevkov: 141 Aktiv.: 0.74 Kraj: Slov. Konjice
|
Objavljeno: Ned Mar 13, 2011 5:53 pm Naslov sporočila: |
|
|
ko pide signal setira določen izhod, sedaj bi rabil se da bi pritisnil tipko reset in bi slo vse od zacetka
|
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.32 Kraj: Maribor (Pohorje)
|
Objavljeno: Ned Mar 13, 2011 5:55 pm Naslov sporočila: |
|
|
frimd je napisal/a: |
ko pide signal setira določen izhod, sedaj bi rabil se da bi pritisnil tipko reset in bi slo vse od zacetka |
Daj napiši bolj berljivo, no Dela koda kot bi morala ali ga takoj postavi na visok nivo?
Ja če uC resetiraš (Reset pin na 0) bo itak šlo od začetka...
|
|
Nazaj na vrh |
|
 |
. Član

Pridružen-a: Čet 06 Maj 2010 20:12 Prispevkov: 1035 Aktiv.: 5.62
|
Objavljeno: Ned Mar 13, 2011 6:01 pm Naslov sporočila: |
|
|
Mene pa samo zanima s katerim ukazom bi sprogramiral tipko da zamenja program?
|
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.32 Kraj: Maribor (Pohorje)
|
Objavljeno: Ned Mar 13, 2011 6:05 pm Naslov sporočila: |
|
|
ziga555 je napisal/a: |
Mene pa samo zanima s katerim ukazom bi sprogramiral tipko da zamenja program? |
A lahko bolj razložiš?
Vsak program definiraš kot neko zanko/rutino.
Nato lahko vežeš tipko na Inerrupt pin (INTx) in potem v prekinitveni subrutini določiš v katero programsko zanko naj gre (Goto ukaz).
Lahko pa v vsakem programu posebaj preverjaš stanje tipke ter nato preskočiš v ustrezni program.
V osnovi takole:
Goto Zanka1
Zanka1:
Do
'Koda
If Tipka = 0 Then Goto Zanka2
Loop
Zanka2:
Do
'Koda
If Tipka = 0 Then Goto Zanka3
Loop
Zanka3:
Do
'Koda
If Tipka = 0 Then Goto Zanka1
Loop
|
|
Nazaj na vrh |
|
 |
. Član

Pridružen-a: Čet 06 Maj 2010 20:12 Prispevkov: 1035 Aktiv.: 5.62
|
Objavljeno: Ned Mar 13, 2011 8:42 pm Naslov sporočila: |
|
|
Hvala!!!
Morda res nisem vsega razložil, vendar ti si mi vse
Drugače pa se malo igram z megapinom, ki ima gor 8 stikal
|
|
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: 500 dni
Powered by phpBB © 2001, 2005 phpBB Group
|