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í 

PIC16F628A
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
frantajetel11



Založen: Nov 13, 2008
Příspěvky: 1922
Bydliště: Kladno

PříspěvekZaslal: st únor 01 2012, 1:38    Předmět: PIC16F628A Citovat

Zdravím včechny bastlíře a bastlířku
Programuju takovej "hlásič" a potřeboval bych, aby měl tyto fce:
1) tři nezávislé vstupy (optočlen)
2) dva jumpery
3) tři výstupy jsou relé a jeden bzučák
Mělo by to dělat to, že pokud třeba na vstup1 přijde log.0, tak má x krát "bliknout" relé1 a zároveň x krát bzučák, potom bzučák přestane bzučet a relé zůstane sepnuté, dokud bude na vstupu log.0, po přivedení log.1 vypne . To samé na zbylých vstupech
4) počet x bliknutí se přepíná těma jumperama, takže tam jsou 4 možnosti

Programuju to v assembleru a nějak se do toho pořád zamotávám.
V příloze je ten můj patvar... je tam 100%spousta kopanců, protože se mi z kraje vůbec nedařilo to rozběhat s tímhle procesorem. Tak mě prosím nekamenujte hned.
Pokud by mi někdo byl schopen poradit, tak mu budu nesmírně zavázán.
Děkuji za odpověď



hlasic08.txt
 Komentář:

Stáhnout
 Soubor:  hlasic08.txt
 Velikost:  4.92 kB
 Staženo:  96 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Chenzee



Založen: Jun 26, 2007
Příspěvky: 464
Bydliště: Vysočina

PříspěvekZaslal: st únor 01 2012, 4:31    Předmět: Citovat

Zdarec, na první letmý pohled: co očekáváš od MAIN02 a co očekáváš od BLPIP části BTFSC IN1;NOP;BCF RELE1 ... BCF BUZZ? Krokoval jsi ten program? Počítáš se zákmity na vstupu?
_________________
Žádnej učenej z nebe nespadl ...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frantajetel11



Založen: Nov 13, 2008
Příspěvky: 1922
Bydliště: Kladno

PříspěvekZaslal: st únor 01 2012, 9:01    Předmět: Citovat

No já nevim, jestli jsem se nevydal blbym směrem... Spíš bych potřeboval poradit rutinu, která po aktivaci vstupu, párkrát sepne výstup (to párkrát umim) a pak ho nechá zapnutej a někde čeká na změnu (to nějak ještě neumim). Zákmity na vstupu jsem zatím neřešil, protože tam jsou optočleny, ale možná je bude potřeba vyřešit taky. Já to sem dal, jenom spíš na orientaci. Určitě by to celý šlo vyřešit jednoduššeji, ale jelikož jsem začátečník, tak bych spíš potřeboval nakopnout správnym směrem.
Díky
P.S. blpip, znamená blik+píp
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Chenzee



Založen: Jun 26, 2007
Příspěvky: 464
Bydliště: Vysočina

PříspěvekZaslal: st únor 01 2012, 11:18    Předmět: Citovat

OK, nejprve odpověz na moje otázky. 1) co očekáváš, že MAIN02 a BLPIP bude dělat nebo co mají dělat? 2) v čem program píšeš (MPLAB?) 3) optočlen myslím neřeší problém se zákmity ale zprvu to nebudeme řešit (třeba to ani nebude nutné) Pokusíme se zjistit, co je na tvém programu špatně a možná tím dojdeme k funkčnímu a očekávanému konci. Třeba taky dojdeme do (_._) (no ale to snad ne Smile)
_________________
Žádnej učenej z nebe nespadl ...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Chenzee



Založen: Jun 26, 2007
Příspěvky: 464
Bydliště: Vysočina

PříspěvekZaslal: st únor 01 2012, 11:52    Předmět: Citovat

Musí být aktivní vždy a pouze jeden výstup nebo i více výstupů najednou? Když zmizí log. 0 na vstupu dříve, než se dobliká výstupem, má se blikání přerušit nebo dokončit? Jak rychle mají výstupy blikat? Bzučák bude pouze piezoměnič nebo přímo sirénka? Kolik těch bliknutí má být? Já jen aby bylo jasné zadání.
_________________
Žádnej učenej z nebe nespadl ...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frantajetel11



Založen: Nov 13, 2008
Příspěvky: 1922
Bydliště: Kladno

PříspěvekZaslal: st únor 01 2012, 12:08    Předmět: Citovat

Píšu to v mplabu, main2 blpip tam třeba ani nemusej bejt, vstupy by měly bejt na sobě nezávislý a může jich bejt aktivních víc najednou. Nikdy ale nesepnou ve stejnou dobu, takže vždycky ten co bliká stačí doblikat. Bzučák je sirénka. A pípání/blikání bude ON 1S, OFF 0,5S. Když zmizí log.0 ze vstupu, tak příslušnej výstup vypne hned.
P.S. omlouvám se, že reaguju zpožděně, jsem v práci Confused A tohle je domu
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frantajetel11



Založen: Nov 13, 2008
Příspěvky: 1922
Bydliště: Kladno

PříspěvekZaslal: st únor 01 2012, 13:32    Předmět: Citovat

Ještě doplním: těch bliknutí/pípnutí bude podle dvou jumperů - 3, 10, 30, 90 blikpípů.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frpr666



Založen: Dec 28, 2009
Příspěvky: 1051

PříspěvekZaslal: st únor 01 2012, 19:09    Předmět: Citovat

ahoj,
předně skládám klobouk dolů, že jsi se pustil do kombinace PIC a asm. Tedy poměrně složitá kombinace. Podíval jsem se na tvůj .asm, nepřemýšlel jsem nad vším, ale napadly mě tyto věci:

1/ správně máš nekonečnou smyčku - což je podstata programu pro uC.
2/ chybí mě tam proměnná, která drží stav tvého jednoduchého stavového automatu. Tj. vidím čistě jen čtení vstupů a nastavování výstupů.
Zkus google: wiki stavový automat
3/ např. na papír si rozvrhni tvou úlohu na jednodušší části a nakoduj si to např. do jazyka C. Až potom si to přepiš do asm.
4/ výše se zde psalo o ošetření zákmitů vstupů. Já používám např. takovou šablonu:
kód:
#define SETPOINT 10

if (input_pin1!=0){
  if (cnt1<SETPOINT){
    cnt1++;
  }
  else {
    flag1=1;
  }
}
else{
  if (cnt1!=0){
    cnt1--;
  }
  else {
    flag1=0;
  }
}
// input_pin1 means some input
// flag1 means filtered input image
// cnt1 is temp. var.

Jsi schopen např. takový konstrukt přepsat do asm? Jinými slovy napsat větvení programu if{} else {} v assembleru?
5/ podívej se na internet, jak se píší podobné programy. Např. zde:
Dobrá stránka o PIC je třeba zde:
http://talkingelectronics.com/
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frantajetel11



Založen: Nov 13, 2008
Příspěvky: 1922
Bydliště: Kladno

PříspěvekZaslal: st únor 01 2012, 20:06    Předmět: Citovat

Díky za odkazy a rutinu. Trochu výš jsem psal, že v programování nejsem zrovna expert Cry . Takže nějakej přepis z Cčka do asm, to fakt nehrozí...
Ten program je nedodělanej - vím to. Nějak jsem si vsugeroval, že když tam jsou na vstupu uP optočleny, tak nemusim řešit zákmity Laughing , tak ty asi budu řešit taky.
P.S. proš myslíš, že je PIC+ASM blbá kombinace?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Andrea



Založen: Sep 07, 2007
Příspěvky: 9340

PříspěvekZaslal: st únor 01 2012, 20:40    Předmět: Citovat

Ten PICassembler je už od pohledu fialovej hnus. Very Happy
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frpr666



Založen: Dec 28, 2009
Příspěvky: 1051

PříspěvekZaslal: st únor 01 2012, 20:53    Předmět: Citovat

RE:blbá kombinace. To bych netvrdil, že blbá, jen pro začátečníka složitá.
Microchip MPLAB IDE je skvělý soft zdarma. Já mám s Microchipem dobrou zkušenost.
Ještě jeden link o picech:
http://www.piclist.com/techref/piclist/begin.htm
edit1: popřemýšlej o tom, kolik vteřin času ti jako programátorovi zabere zapsat podmínku (if{}else{}). Zatímco v C je to pár vteřin, v asm to bude jistě více času a více popsaných řádků, které je třeba odladit. Microchip nabízí free C kompilátor zdarma. Podívej se po něm.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Chenzee



Založen: Jun 26, 2007
Příspěvky: 464
Bydliště: Vysočina

PříspěvekZaslal: st únor 01 2012, 21:11    Předmět: Citovat

... co má za význam
kód:
BTFSC   IN1
NOP
BCF    RELE1
BTFSC   IN2
NOP   
BCF    RELE2

EDIT:
jinými slovy když je IN1 log.1, vykonej NOP a nastav RELE do 0., jinak nastav přímo RELE do 0

_________________
Žádnej učenej z nebe nespadl ...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Chenzee



Založen: Jun 26, 2007
Příspěvky: 464
Bydliště: Vysočina

PříspěvekZaslal: čt únor 02 2012, 5:27    Předmět: Citovat

Koukni na toto. Mohlo by to chodit. Pro ostatní: neříkám, že je to nejlepší řešení. Vycházím pouze z toho, jaká byla původní konstrukce programu. Elegantněji by to šlo přes TMR a přerušení ale to zase až jindy Laughing


test.asm
 Komentář:

Stáhnout
 Soubor:  test.asm
 Velikost:  6.9 kB
 Staženo:  86 krát


_________________
Žádnej učenej z nebe nespadl ...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frantajetel11



Založen: Nov 13, 2008
Příspěvky: 1922
Bydliště: Kladno

PříspěvekZaslal: čt únor 02 2012, 15:15    Předmět: Citovat

Andrea napsal(a):
Ten PICassembler je už od pohledu fialovej hnus. Very Happy

Myslela jsi ten muj rádobyprogram, nebo obecně? Pokud možnost A, tak bych si dovolil souhlasit.
Chenzee díky moc večer to vyzkouším Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Andrea



Založen: Sep 07, 2007
Příspěvky: 9340

PříspěvekZaslal: čt únor 02 2012, 16:55    Předmět: Citovat

Nehodnotila jsem program, ale assembler konkrétní rodiny procesorů.
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.17 sekund