Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Arduino časování
Jdi na stránku 1, 2  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
net



Založen: May 07, 2004
Příspěvky: 200

PříspěvekZaslal: út únor 02 2021, 9:22    Předmět: Arduino časování Citovat

Zdravím, poradí někdo prosím, jak vytvořit zpožděné sepnutí relé? C nějak moc neovládám jenom občas něco s PIC v asm. Díky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Zaky



Založen: Oct 30, 2010
Příspěvky: 6569
Bydliště: Praha

PříspěvekZaslal: út únor 02 2021, 9:59    Předmět: Citovat

Zrovna toto závisí na programovacím jazyku naprosto minimálně. Zápisem do příslušných registrů nakonfiguruješ a spustíš timer a jeho příslušné přerušení, po odčasování si v přerušení nahodíš příznak a ten budeš testovat v hlavní smyčce. Pak existují takové ty způsoby, jako nechat procesor viset v nějakém cyklu, to je ale z principu blokující a tudíž nevhodná programátorská praktika.
_________________
Krátce před tím, než se to rozbilo, tak to ještě fungovalo...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
net



Založen: May 07, 2004
Příspěvky: 200

PříspěvekZaslal: út únor 02 2021, 10:19    Předmět: Citovat

Díky a nešlo by naznačit malej příklad, nebo odkaz, kde to bude nějak rozepsané? A ještě dotaz zda je normální za provozu svítící LED RxTx_
Díkuji
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Zaky



Založen: Oct 30, 2010
Příspěvky: 6569
Bydliště: Praha

PříspěvekZaslal: út únor 02 2021, 10:21    Předmět: Citovat

Googli, je toho na netu dostatek.
_________________
Krátce před tím, než se to rozbilo, tak to ještě fungovalo...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
net



Založen: May 07, 2004
Příspěvky: 200

PříspěvekZaslal: út únor 02 2021, 10:29    Předmět: Citovat

Ok díky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
pocitujlasku



Založen: Dec 12, 2005
Příspěvky: 2134

PříspěvekZaslal: út únor 02 2021, 11:38    Předmět: Citovat

mas niekolko moznosti.
kód:

if podmienka {
delay(oneskorenie);
nastav rele;
}

to ti ale zastavi beh programu na ten cas.

kód:

if podmienka {
premenna= aktualne milis+oneskorenie
}

if (premenna<=aktualne milis) {
  nastav rele
}

Tu program bude bezat dalej

Alebo cez prerusenie, to uz ale z hlavy nedam. v principe si nastavis interny timer, a on ti po zadanom case spusti tvoju funkciu, kde nastavis rele.
V poslednom moze nastat problem, ak vyuzivas kniznice, ktore pouzivaju tiez timer.

Ja osobne pouzivam druhy sposob. program bezi a +- nejake milisekundy u mna nie su podstatne.

_________________
No vidis, a tak si sa bal
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
net



Založen: May 07, 2004
Příspěvky: 200

PříspěvekZaslal: út únor 02 2021, 13:01    Předmět: Citovat

Díky, nějak se tím prokousávám.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
bdn



Založen: Jan 16, 2020
Příspěvky: 467

PříspěvekZaslal: út únor 02 2021, 17:16    Předmět: Citovat

Arduino má ke stažení knihovnu MsTimer2
URL:https://playground.arduino.cc/Main/MsTimer2/

1/ nastavíš čas a jméno funkce přerušení
MsTimer2::set(500, flash); // 500ms period

2/ nastartuješ, kdy potřebuješ
if (podminka) MsTimer2::start();

3/ po uplynutí arduino 'zavolá' funkci flash(), což je přerušení od časovače TCNT2. Použité proměnné uvnitř by měly být deklarovány jako volatile, pokud se k nim přistupuje i mimo funkci flash()

void flash() {
static boolean output = HIGH;

digitalWrite(13, output);
output = !output;
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
net



Založen: May 07, 2004
Příspěvky: 200

PříspěvekZaslal: út únor 02 2021, 22:03    Předmět: Citovat

Díky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: st únor 03 2021, 12:38    Předmět: Citovat

bdn napsal(a):
Použité proměnné uvnitř by měly být deklarovány jako volatile, pokud se k nim přistupuje i mimo funkci flash()


Jenom malá poznámka. Deklarace proměnné jako "volatile" uvnitř funkce opravdu nemění její rozsah platnosti. Tj. k takové proměnné nelze přistupovat mimo funkci, ve které je deklarována.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Cowley



Založen: Feb 04, 2005
Příspěvky: 3268

PříspěvekZaslal: st únor 03 2021, 15:24    Předmět: Citovat

net napsal(a):
... jak vytvořit zpožděné sepnutí relé? ...


Nenapsal jsi zda zpožděné sepnutí bude:
- vyvolané např. externím vstupem
- vyvolané nějakou událostí v programu nezávisle na vstupech

a zda "zpožděné sepnutí" znamená:
- čekat nějakou dobu, co nějaká událost trvá a pokud nezmizí tak teprve pak sepnout?
- nebo objeví se událost, kvůli které má být relé sepnuto a protože je událost mžiková, sepneme relé a prodloužíme jeho sepnutí na nějakou delší dobu?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
net



Založen: May 07, 2004
Příspěvky: 200

PříspěvekZaslal: st únor 03 2021, 19:53    Předmět: Citovat

Děkuji za reakce. A k popisu fungování zařízení:
Je aku 18650 na pin Arduina a po zapnutí, pokud nepadne napětí pod cca 3,67V, sepne po 15sec. jiný pin na 1sec. Zařízení je napájeno a nabíjeno z USB portu PC- zatím. Po vypnutí PC relé opět sepne na 1sec.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Cowley



Založen: Feb 04, 2005
Příspěvky: 3268

PříspěvekZaslal: st únor 03 2021, 20:15    Předmět: Citovat

Zařízení je napájeno z USB PC?
Po vypnutí PC už nic nezafunguje...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
net



Založen: May 07, 2004
Příspěvky: 200

PříspěvekZaslal: st únor 03 2021, 21:47    Předmět: Citovat

Ano zařízení je napájeno z PC vč. Arduina.V PC nabíhá OS a následně software. Zařízením je myšleno 3D brýle, které jsou krmeny 18650. Po vypnutí resp. ukončení programu pochopitelně musí vypnout brýle, než se ukončí OS - ano a potom už nejde nic.
A software při startu čeká cca10-15s na brejle tedy na jejich sepnutí jinak err.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
mluno



Založen: Apr 18, 2011
Příspěvky: 232
Bydliště: Benešov (u Prahy)

PříspěvekZaslal: čt únor 04 2021, 16:35    Předmět: Citovat

Časovače patří k mým oblíbeným periferiím. U arduina jsem ale několikrát narazil, protože ono pro svou potřebu nějaký ten timer používá. Dost dlouho jsem takto řešil podivné chování programu něco šlo právě na úkor toho, ale ně všechno se mi tím podařilo vysvětlit.
Pokud neni potřeba nějakou extra přesnost, dalo by se periodicky zjišťovat milis()
něco jako if milis()>=cas_akce .... Zejména pokud program nemá dělat nic jiného než právě toto.
Případně by se to dalo napsat v assembleru nebo v něčem bez použití knihoven arduina a pak to tam naloadovat přes bootloader (použít ten samý příkaz avrdude, jako používá arduino IDE ale hex soubor nahradit svým ostatní ponechat).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.14 sekund