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í 

Jak na více pulsů "přes sebe" (procesor + timer)
Jdi na stránku 1, 2  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Poradna
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Ruprecht



Založen: Sep 28, 2005
Příspěvky: 1277
Bydliště: ZČ + JM

PříspěvekZaslal: st srpen 27 2014, 12:32    Předmět: Jak na více pulsů "přes sebe" (procesor + timer) Citovat

Potřebuju procesorem generovat stejně dlouhé pulsy na několika výstupech. Pulsy se mohou překrývat.
Dekóduju sériovou linku a když zpráva souhlasí, má se vygenerovat puls na příslušném výstupu. Do třech pulsů bych si poradil individuálním spouštěním interních timerů, ale potřebuju víc výstupních pulsů.
Tedy pokud spustím volně běžící timer a puls má trvat např. 25 tiků, při začástku pulsu uložím hodnotu timeru a při ">(timer+25)" puls ukončím. Do přetečení je to jednoduché (timer+25), problém mám po přetečení (při 8bit timeru např. 250+25=20). Jak se to "standardně" jednoduše řeší?
Mě napadají různé věci (nějaký flag v přerušení od přetečení, ale pak se komplikuje porovnávací matematika), jak to udělat co nejjednoduššeji?
Dík

_________________
Kampaň, účelovka, nepodepsal, Palermo, ODS, Kalousek, je líp a jsou na to čísla, nastudujte si to.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
hakamusai



Založen: Apr 17, 2007
Příspěvky: 943

PříspěvekZaslal: st srpen 27 2014, 14:13    Předmět: Citovat

Nešlo by nastavit timer tak,aby od spuštění do přetečení trval jeden puls? V přerušení se ošetří flag,podle potřeby nastaví výstup a přičte counter (podle toho kolik je třeba ).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
jiriS



Založen: Jan 14, 2014
Příspěvky: 610
Bydliště: Ašsko

PříspěvekZaslal: st srpen 27 2014, 19:10    Předmět: Citovat

Timer/Counter Compare Match
Porovnání hodnoty čítače s přednastavenou hodnotou v registru vygeneruje přerušení. Hodnotu samozřejmě musíš do registru uložit včas- před přetečením, a správnou, ale to by neměl být problém. Spíše je problém, že pokud timer nepřeteče, informace se neuloží do registru.
Pro úplnost- píšu o ATMEL, TINY nebo MEGA, mají i dva registry Compare.
Jiné mají několik čítačů.
Další možnost- číst periodicky hodnotu timeru a porovnávat ji programově, ale to je náročnější na čas.
Další možnost- generuješ první impuls- ukončení přetečním, máš generovat další. Přečteš stav timeru, odečteš dobu do přeteční od celkové doby impulsu. Při přerušení, ve kterém uknčíš první impuls, zapíšeš do timeru hodnotu, kdy odečteš vypočtený rozdíl od čísla 255. Tak ti dlší přetečení přijde ve správnou dobu.
Jirka
P.S.: Snad jsem to vysvětlil tak, aby to bylo pochopitelné.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
ZdenekHQ
Administrátor


Založen: Jul 21, 2006
Příspěvky: 25741
Bydliště: skoro Brno

PříspěvekZaslal: st srpen 27 2014, 19:34    Předmět: Citovat

Nevím, jestli to napíšu přesně, ale dělám na něčem podobným.

Každej puls má svoji proměnnou-čítač, všechny se zvýší o 1 v přerušení (u mě je 10ms) - pokud nedosáhnou 255, pak se zastaví.

Na začátku pulsu se patřičný čítač resetuje, generuje se na výstupu procesoru začátek pulsu, po načítání nastaveného času se generuje příznak pro hlavní program, který puls resetuje. Jde to obsloužit přímo i v přerušení.

Takhle mě běží třeba 10 nezávislých časovačů, co umí časy i v sekundách, je se čítají desítky, stovky a tisíce ms.

V případě 10ms je to hračka, když mám půl mikrosekundy na cyklus. Pokud by ty šířky pulsu byly na úrovni pár strojových cyklů, nebude to samozřejmě fungovat.

_________________
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
ZdenekHQ
Administrátor


Založen: Jul 21, 2006
Příspěvky: 25741
Bydliště: skoro Brno

PříspěvekZaslal: st srpen 27 2014, 19:42    Předmět: Citovat

MImochodem, kdyby jsi chtěl jít až na časy pár desítek period oscilátoru, dá se použít externí čítač s autoresetem, třeba 4017 či 4060 s tím, že po načítání periody se zastaví. Spustí se opět vynulováním, což je jen úzký puls na výstupu procesoru.

P.S. Pokud vynechávám či pletu písmena, je to tím, že mám palec v obvaze. Není nad to se říznout ve správný okamžik....

_________________
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
jiriS



Založen: Jan 14, 2014
Příspěvky: 610
Bydliště: Ašsko

PříspěvekZaslal: st srpen 27 2014, 20:54    Předmět: Citovat

Nešikovný maso musí pryč Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
ZdenekHQ
Administrátor


Založen: Jul 21, 2006
Příspěvky: 25741
Bydliště: skoro Brno

PříspěvekZaslal: st srpen 27 2014, 22:34    Předmět: Citovat

Jojo, jodisol + papírovej kapesník + elektrikářská páska + mikrotenovej pytlík. Jediný řešení, když mě dovezou půl prasete (50kg) a já se říznu při prvním tahu dobře nabroušeným nožem, protože do té doby jsem trávil týdny u počítače a ruce se nějak zpomněly "přepnout". Ale už je hotovo. Sorry za OT.
_________________
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
mtajovsky



Založen: Sep 19, 2007
Příspěvky: 3697
Bydliště: Praha

PříspěvekZaslal: pá srpen 29 2014, 10:15    Předmět: Citovat

ZdenekHQ napsal(a):
... Každej puls má svoji proměnnou-čítač, všechny se zvýší o 1 v přerušení (u mě je 10ms) - pokud nedosáhnou 255, pak se zastaví.
...
Na začátku pulsu se patřičný čítač resetuje, generuje se na výstupu procesoru začátek pulsu, po načítání nastaveného času se generuje příznak pro hlavní program, který puls resetuje. Jde to obsloužit přímo i v přerušení.

Tohle děláte v zásadě správně. Obvykle se to dělá s následujícími pravidly:
- časovací bloky se obsluhují v přerušení od vybraného řídícího HW timeru
- nastavení časovacího bloku se děje ne nulováním jeho čítače, ale jeho nastavením podle požadované doby vypršení v nějaké synchronizované funkci setTimer(u16 time_out)
- čítače časovacích bloků se v přerušovací rutině dekrementují a po dosažení 0 se nastaví flag vypršení času nebo se rovnou volá dedikovaná rutina. Ta potom ale (pozor) běží na úrovni přerušení.
- není-li dedikovaná rutina, hlavní program na nastavení flagu příslušně reaguje a funkci setTimer() volá až tehdy, když potřebuje nastavit nový časový interval

Je samozřejmé, že setTimer() a kontrola flagů by se měla dělat se zakázaným přerušením od řídícího timeru.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
jiriS



Založen: Jan 14, 2014
Příspěvky: 610
Bydliště: Ašsko

PříspěvekZaslal: pá srpen 29 2014, 11:57    Předmět: Citovat

Ano, moožností je povícero, záleží také na dalších okolnostech.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
ZdenekHQ
Administrátor


Založen: Jul 21, 2006
Příspěvky: 25741
Bydliště: skoro Brno

PříspěvekZaslal: pá srpen 29 2014, 15:17    Předmět: Citovat

Čítání od nuly používám pro případ, že by bylo potřeba generovat nějakou sekvenci pulsů v návaznosti na stavu čítače, tak aby se mě to nepletlo. Ono při vývoji je hromada jiných problémů a jak je jich moc, spadne to jak domek z karet.
_________________
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
termit256



Založen: Dec 06, 2007
Příspěvky: 10335

PříspěvekZaslal: pá srpen 29 2014, 18:32    Předmět: Citovat

Nepises jak dlouhe maji byt ty pulzy a jak presne ma byt dodrzena jejich delka. To je pro reseni pomerne zasadni
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ruprecht



Založen: Sep 28, 2005
Příspěvky: 1277
Bydliště: ZČ + JM

PříspěvekZaslal: so srpen 30 2014, 15:53    Předmět: Citovat

Délka pulsů 1ms +-100us
_________________
Kampaň, účelovka, nepodepsal, Palermo, ODS, Kalousek, je líp a jsou na to čísla, nastudujte si to.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
hakamusai



Založen: Apr 17, 2007
Příspěvky: 943

PříspěvekZaslal: so srpen 30 2014, 16:09    Předmět: Citovat

Pro jakej procesor to je? 1ms puls i prodleva ? Kolik pulsů ? Kolik výstupů ? Jak se pulsy mají překrývat ?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ruprecht



Založen: Sep 28, 2005
Příspěvky: 1277
Bydliště: ZČ + JM

PříspěvekZaslal: so srpen 30 2014, 16:58    Předmět: Citovat

Nějaké 8bit AVRko, třeba tiny2313.
Pulsy se generují po dekódování sériové linky (pokud přijatá zpráva souhlasí, okamžitě na příslušném výstupu začne puls, který má trvat 1ms). Výstupů je dvanáct. Zprávy mohou přijít např. 300us po sobě, tzn. první ještě trvá, druhý započne (nebo taky mohou přijít s hodinovým rozestupem nebo jednou za den, ale to není podstatné). Každý z nich je dlouhý 1ms, jen mají jiné začátky.

_________________
Kampaň, účelovka, nepodepsal, Palermo, ODS, Kalousek, je líp a jsou na to čísla, nastudujte si to.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
hakamusai



Založen: Apr 17, 2007
Příspěvky: 943

PříspěvekZaslal: so srpen 30 2014, 18:19    Předmět: Citovat

Ajjj,s AVR poradit nedovedu.Sad
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 -> Poradna Č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