Bascom dynamický "alias"
Moderátor: Moderátoři
scorpions-cz píše:Mahoney
Abych ti odpověděl tak postupně. Je mi 51 roků a začínal jsem na IQ151 kterej byl v Basicu. Ten BASIC se mi tak nějak zamlouvá, neříkám že bych se C nenaučil, ale nevím jestli to má cenu začínat. Bascom mám legálně přes 10 let, ale nedělám toho mnoho a tak se občas potřebuju na něco zeptat.
Zatím to řeším v teoretické rovině a některé věci si zkouším na ATMEGA 32. V tom finálním projektu bude AVR128DB64. Bude tam 20 odalovacích pozic, 1 vstup pro aktivaci, 8 vstupů pro dva palcové BCD přepínače( pro nastavení času) 21 kanálů ADC kde 20 kanálů bude sledovat 20 větví( jako připojení palníku a pod.) a jeden bude sledovat napětí baterie. Bude tam taky 21 adresovatelnejch LEDek pro indikaci připojení palníku atd a jedna bude odrážet stav baterie.
Bohužel BASCOM tento čip bude umět až ve verzi 2085 a ta vyjde někdy koncem roku, teď je ve druhé testovací fázi.
Mě je 44, začínal jsem v Basicu na PMD-85, pak na Spectru/Didaktiku, pak GW-basic a Q-basic na PC, Visual Basic, Visual FoxPro... A pak jsem se na PC vyflákl a šel jsem do mikrokontrolérů, a tam to bylo ASM a pak C. Má to cenu, s tím co po tom chceš obzvlášť, a hlavně by ti s tím měl vždycky kdo poradit (a dokonce jsou dnes vesměs všechny ty mikrokontroléry v návrhu čipu optimalizované právě pro C, včetně těch AVR, pro které to píšeš)... ale je to samozřejmě na tobě.
- scorpions-cz
- Příspěvky: 2004
- Registrován: 19 bře 2011, 00:00
- Bydliště: Jižní Čechy Dačicko
Zajímala by mě úplně jiná věc (teoreticky, čistě ze zvědavosti): Jaký je důvod (tím myslím, že mě to fakt zajímá, ne že bych to chtěl nějak zpochybňovat) k tomu, že se sleduje 20 vstupů (připojení palníku) pomocí A/D převodníku? To se přeci stejně kontroluje vizuálně, ne? A navíc - to má nějakou vodivost? Co s tím pak udělá HW a program, přepne při požadavku odpálení (spuštění sekvence) na výstup a přes nějaký tranzistor to inicializuje (a nezapojené vynechá)? Jinými slovy, nerozumím tomu, jaký je důvod k tomu to detekovat…
- scorpions-cz
- Příspěvky: 2004
- Registrován: 19 bře 2011, 00:00
- Bydliště: Jižní Čechy Dačicko
Palník má řádově nekolik ohmů. Programově by šlo udělat, aby se nezapojené pozice vynechaly, ale je to zbytečné, přes Rx poteče FETEM min. proud.
Píšu z PC kde nemám EAGLA a tak schéma dávám črtnutý rukou.
Není to celé můj nápad, hodně mě nasměroval a poradil TERMIT256.
Český palníky mají bezpečnej proud palník středně odolný 0,45A a nízko odolnej 0,18A. Tady v testu poteče něco kolem 1-2mA
Edit: Aha, je, termit256 to osvětlil
- scorpions-cz
- Příspěvky: 2004
- Registrován: 19 bře 2011, 00:00
- Bydliště: Jižní Čechy Dačicko
Mahoney Ano pokud bude šluslej FET, tak se nerozsvítí daná kontrolka. Šlo by pomocí dalšího trandu, nebo malého relé udělat, že když bude fet do zkratu, tak nepůjde vůbec připojit odpalovací napětí. Tím bych ale vyřadil celej seqencer.
K proražení trandu by však nemělo dojít, budou předimenzovaný a ikdyž by palníky šly do zkratu, tak nějakoj odpor mají přívodní vodiče a odpor 1R/10W zajistí max proud FETem na 12A (bez odporu palníků a přívodních vodičů)
Nevím jak myslíš to sejmout digitálním pinem. Bude to mít 4 možné stavy:
- poloha test šluslej FET nebude svítit ledka žádnou barvou
- poloha test nezapojenej palník ledka svítí modře
- poloha test zapojenej palník ledka svítí zeleně
- poloha pal nezapojenej palník ledka svítí modře, zapojenej palník ledka svítí červeně.
Právěže jo, tak bych to řešil, kdybych to měl stavět já, odstavil bych to celý, když by HW byl někde v nepořádku… Tak nějak se mi příčí myšlenka, že bych něco odpaloval něčím, co není úplně na 100 %… i kdybych kvůli tomu měl mít v batohu ještě jeden náhradní sekvencer.
- scorpions-cz
- Příspěvky: 2004
- Registrován: 19 bře 2011, 00:00
- Bydliště: Jižní Čechy Dačicko
Těch seqencerů budu mít určitě víc, sám pro sebe jich chci postavit aspoň 10.
definicie, deklarácie
Kód: Vybrat vše
unsigned char p[3] = {0, 0, 0};
#define p123 *((unsigned long int*)p)obsluha prerušenia časovača
Kód: Vybrat vše
p123 = !p123 ? 1 : p123 << 1;
PORTA = p[0]; PORTB = p[1]; PORTC = p[2];