Bascom dynamický "alias"
Moderátor: Moderátoři
- scorpions-cz
- Příspěvky: 1760
- Registrován: 19 bře 2011, 01:00
- Bydliště: Jižní Čechy Dačicko
Tim BCD prepinacem budes nastavovat casy pro vsechny vystupy stejne?
Nestalo by za to kdyz uz se s tim budes jebat, udelat to propojeni pomoci sbernice rovnou, nahravat casy jednoduse z karty nebo notasu po uartu a misto tech prepinacu tam dat treba displej 4x40 kde bys primo videl nastavene casy pro jednotlive vystupy? Cela vec by dostala za stejne prachy uplne jiny level, moc prace navic to neda a ze zkusenosti vim, ze se ti k tomu uz nasledne nebude chtit vracet, pripadne ta predelavka a nasledne testovani da pomalu stejne tolik prace jako napsat a vyrobit to cele znovu.
Nestalo by za to kdyz uz se s tim budes jebat, udelat to propojeni pomoci sbernice rovnou, nahravat casy jednoduse z karty nebo notasu po uartu a misto tech prepinacu tam dat treba displej 4x40 kde bys primo videl nastavene casy pro jednotlive vystupy? Cela vec by dostala za stejne prachy uplne jiny level, moc prace navic to neda a ze zkusenosti vim, ze se ti k tomu uz nasledne nebude chtit vracet, pripadne ta predelavka a nasledne testovani da pomalu stejne tolik prace jako napsat a vyrobit to cele znovu.
- scorpions-cz
- Příspěvky: 1760
- Registrován: 19 bře 2011, 01:00
- Bydliště: Jižní Čechy Dačicko
Ahoj.
Nějak se nám tady pletou dva projekty a tak to dám na pravou míru
To co dělám teď je opravdu jenom seqencer, kde potřebuju následující:
po vstupním impulzu odpálí 20 pozic v nastaveným stejným čase, Pro to mi přišlo použití 2 ks BCD přepínačů ideální. Můžu nastavit 0,1-9,9 sec. Nemusím to připojovat k PC a je to použitelný přímo na místě. Ještě jsem vymyslel, že pokud se nastaví 0,0 tak to bude fungovat v režimu STEB BY STEP- to znamená, že při vstupním pulzu odpálí pozici 1, při dalším pozici 2 atd. ( toto je však jenom funkce navíc). Jak jsem psal k tomuto se dají používat pyrotechnický odhořívací zpožďovače, ale ty se občas "ustřelí".
Ten programovatelnej systém, chci taky udělat, páč ten od číňana neumí třeba odpal více pozic ve stejnej čas (pokud je to na různých modulech)
Tady mám vizi následující:
Jeden MASTER modul s displejem kde se bude moct programovat autonomě, i třeba přes PC nebo jak to má číňan z flešky.
Potom samostatný odpalovací moduly a tady bych zase použil 2 ks BCD přepínačů, ale tentokrát pro nastavení adresy modulu. Master bude s podřízenejma spojenej sběrnicí a můžu tak dosáhnout až 2000 odpalovacích pozic. Pokud použiju v sestavě více modulů se stejnou adresou pojedou synchronně.
Tady se potom můžu vyřádit, třeba na masteru kontrolovat zapojení palníku na modulech atd.
Toto je však běh na delší trať, neboť jsem zatím nikdy nedělal s MCU a fleškou, taky dobře rozmyslet tu komunikaci, zvážit jak jsi psal zda to bude pálit on-line nebo každý modul o mastera dostane propozice a pojede potom sám. Je toho hodně.
Taky mě napadlo, udělat ty seqencery tak, aby byly použitelný i v programovatelným systému, ale to jsem zavrhnul.
Nějak se nám tady pletou dva projekty a tak to dám na pravou míru
To co dělám teď je opravdu jenom seqencer, kde potřebuju následující:
po vstupním impulzu odpálí 20 pozic v nastaveným stejným čase, Pro to mi přišlo použití 2 ks BCD přepínačů ideální. Můžu nastavit 0,1-9,9 sec. Nemusím to připojovat k PC a je to použitelný přímo na místě. Ještě jsem vymyslel, že pokud se nastaví 0,0 tak to bude fungovat v režimu STEB BY STEP- to znamená, že při vstupním pulzu odpálí pozici 1, při dalším pozici 2 atd. ( toto je však jenom funkce navíc). Jak jsem psal k tomuto se dají používat pyrotechnický odhořívací zpožďovače, ale ty se občas "ustřelí".
Ten programovatelnej systém, chci taky udělat, páč ten od číňana neumí třeba odpal více pozic ve stejnej čas (pokud je to na různých modulech)
Tady mám vizi následující:
Jeden MASTER modul s displejem kde se bude moct programovat autonomě, i třeba přes PC nebo jak to má číňan z flešky.
Potom samostatný odpalovací moduly a tady bych zase použil 2 ks BCD přepínačů, ale tentokrát pro nastavení adresy modulu. Master bude s podřízenejma spojenej sběrnicí a můžu tak dosáhnout až 2000 odpalovacích pozic. Pokud použiju v sestavě více modulů se stejnou adresou pojedou synchronně.
Tady se potom můžu vyřádit, třeba na masteru kontrolovat zapojení palníku na modulech atd.
Toto je však běh na delší trať, neboť jsem zatím nikdy nedělal s MCU a fleškou, taky dobře rozmyslet tu komunikaci, zvážit jak jsi psal zda to bude pálit on-line nebo každý modul o mastera dostane propozice a pojede potom sám. Je toho hodně.
Taky mě napadlo, udělat ty seqencery tak, aby byly použitelný i v programovatelným systému, ale to jsem zavrhnul.
Pokud to udelas propojene po datove sbernici rovnou, muze to fungovat bez problemu v obou rezimech. Vzdy je jednodussi udrzovat po sw i hw strance jedno univerzalni zarizeni nez dve ruzna, o tom ze jich pak budes muset vyrobit dvojnasobne mnozsvi nemluve. Programovatelny muze fungovat v hloupem rezimu, opacne to ale nepude.
Ahoj,
ne, my to chápeme. Podívej, taková myšlenka pro inspiraci, jak by to taky mohlo být, pokud bys chtěl: Můžeme tu dokola řešit jednotlivosti a různě o tom všem mluvit na fóru, od toho ostatně to fórum je, nic proti. A nebo třeba taky můžeme(š) založit projekt/y na GitHubu, nainstalovat Git klienta (nebo nějaký jiný SVN), vnést základní představu o projektu (třeba jako úvodní požadavky, todo list, nějaké úvodní schéma... atd atd, prostě to co už máš, a to, co z toho chceš), (případně) rozdat přístupy, a mohlo by se tak na tom podílet víc lidí a dělat každý něco, i když je každý někde jinde. A nebo můžeme (bychom pak mohli) jen nahlížet na vývoj projektu na Gitu a dílčí věci konzultovat tady a posílat ti přes fórum, mailem… To už by bylo všechno jen na tobě… Jen bych moc neočekával, že to budou chtít lidi mastit v Bascomu, ale ani to nemusí vadit - věřím tomu, že i Bascom umí zavolat (a při kompilaci připojit) nějakou vnější rutinu v C, ASM (a v podstatě by se dalo říci, že jestli ne, tak ten překladač ani nestojí za to).
Vždycky se najde někdo, kdo rád pomůže - tím spíš, že tohle je zajímavý projekt, ani příliš složitý, ani tak jednoduchý, že by to byla úplná blbost k ničemu… Mě osobně se na tom celém líbí, že to spojuje lidi - každý se rád podívá na ohňostroj, každý rád na chvíli zapomene na všední starosti při nevšedních chvílích, a tak… spousta radosti, a takový ohňostroj a chvíle můžou třeba taky někomu spojit osudy, vždycky je vše o lásce
ne, my to chápeme. Podívej, taková myšlenka pro inspiraci, jak by to taky mohlo být, pokud bys chtěl: Můžeme tu dokola řešit jednotlivosti a různě o tom všem mluvit na fóru, od toho ostatně to fórum je, nic proti. A nebo třeba taky můžeme(š) založit projekt/y na GitHubu, nainstalovat Git klienta (nebo nějaký jiný SVN), vnést základní představu o projektu (třeba jako úvodní požadavky, todo list, nějaké úvodní schéma... atd atd, prostě to co už máš, a to, co z toho chceš), (případně) rozdat přístupy, a mohlo by se tak na tom podílet víc lidí a dělat každý něco, i když je každý někde jinde. A nebo můžeme (bychom pak mohli) jen nahlížet na vývoj projektu na Gitu a dílčí věci konzultovat tady a posílat ti přes fórum, mailem… To už by bylo všechno jen na tobě… Jen bych moc neočekával, že to budou chtít lidi mastit v Bascomu, ale ani to nemusí vadit - věřím tomu, že i Bascom umí zavolat (a při kompilaci připojit) nějakou vnější rutinu v C, ASM (a v podstatě by se dalo říci, že jestli ne, tak ten překladač ani nestojí za to).
Vždycky se najde někdo, kdo rád pomůže - tím spíš, že tohle je zajímavý projekt, ani příliš složitý, ani tak jednoduchý, že by to byla úplná blbost k ničemu… Mě osobně se na tom celém líbí, že to spojuje lidi - každý se rád podívá na ohňostroj, každý rád na chvíli zapomene na všední starosti při nevšedních chvílích, a tak… spousta radosti, a takový ohňostroj a chvíle můžou třeba taky někomu spojit osudy, vždycky je vše o lásce
Je to na něm. No, to nemá, je to Load-Store architektura, a popravdě AVR ASM ani do hloubky neznám (ale nebál bych se)… spíš přilinkovat knihovny, však víš. Ale bylo by dobrý tam někde najít, jestli to ten Bascom vůbec umí:
Bascom AVR manual
Edit: No, tak je to asi vyřešený… Každej slušnej kompilátor má jako svou druhou součást linker, kterej umí připojit vnější objektové soubory (tj. standardně předkompilované knihovny) - ne tak Bascom, ten umí jen knihovnu v ASM, a nebo už předkompilovanou, ale jen sebou samým ($lib, $external)
Bascom AVR manual
Edit: No, tak je to asi vyřešený… Každej slušnej kompilátor má jako svou druhou součást linker, kterej umí připojit vnější objektové soubory (tj. standardně předkompilované knihovny) - ne tak Bascom, ten umí jen knihovnu v ASM, a nebo už předkompilovanou, ale jen sebou samým ($lib, $external)
- scorpions-cz
- Příspěvky: 1760
- Registrován: 19 bře 2011, 01:00
- Bydliště: Jižní Čechy Dačicko
V ASM bych to asi nedal, nebo by mi to trvalo hrozně dlouho. Pokud se začnu učit C, tak je to opět od začátku a bude mi to trvat dlouho. Věřím, že když zařízení dostatečně otestuju, tak by mělo chodit jak má i v bascomu.
Tady mám zatím nástřel kodu (zatím pro MEGA32) a je to inverzní, protože na vývojový desce mám LEDky pevně zapojený na +, tak musím danej PIN nastavovat při odpalu na 0.
Tady mám zatím nástřel kodu (zatím pro MEGA32) a je to inverzní, protože na vývojový desce mám LEDky pevně zapojený na +, tak musím danej PIN nastavovat při odpalu na 0.
Kód: Vybrat vše
$Regfile="m32def.dat" 'nastavení čipu
$Crystal=16000000
$hwstack=40
$swstack=16
$framesize=32
config porta = output 'konfigurace vstupů a výstupu
config portb = input
portb =&B11111111
porta =&B11111111
config Timer1 = Timer , Prescale = 256 , Compare A = disconnect , Clear Timer = 1 'nastavení časovače
Compare1a = 6250
portd.2 = 1 'nastavení vnějšího přerušení
Config Int0 = Falling
Enable Int0
On Int0 pal
Enable Interrupts 'povolení přerušení
dim X as byte 'deklarace proměnných
dim pocet as word
dim odpal as word
dim cas as byte
dim sek as byte
dim des as byte
pocet = 0
odpal = 0
x =1
Do 'nekonečná smyčka, kde bude kontrola palníků, AKU atd.
loop
konec:
end
pal: 'obsluha vnějšího přerušení
waitms 20 ' prodleva pro kontrolu zda jde skutečně o žádané přerušení
if pind.2 = 0 then
des = Not pinb 'výpočet času mezi odpaly
sek = des And &H0F
Shift des , Right , 4
sek = sek * 10
cas= sek + des
Enable Compare1a 'povolení časovače
On Compare1a Tim
disable INT0
end if 'zakázání nějšího přerušení
return
Tim: 'obsluha přerušení od časovače
if odpal = 0 then
reset porta.0
else
portA=&B11111111
end if
if pocet = cas then
select case x
case 1: reset porta.1
case 2: reset porta.2
case 3: reset porta.3
case 4: reset porta.4
case 5: reset porta.5
case 6: reset porta.6
case 7: reset porta.7
case 8: goto konec
end select
incr x
pocet = 0
end if
incr odpal
incr pocet
return
Naposledy upravil(a) scorpions-cz dne 14 lis 2021, 16:00, celkem upraveno 2 x.
- scorpions-cz
- Příspěvky: 1760
- Registrován: 19 bře 2011, 01:00
- Bydliště: Jižní Čechy Dačicko
- scorpions-cz
- Příspěvky: 1760
- Registrován: 19 bře 2011, 01:00
- Bydliště: Jižní Čechy Dačicko
- scorpions-cz
- Příspěvky: 1760
- Registrován: 19 bře 2011, 01:00
- Bydliště: Jižní Čechy Dačicko
Použij aliasy a konstanty, zpřehlední se ti to (např. vystup3 alias porta.5 a const vybuch = 0, const spidal = 1)
Čas asi nemusíš ani nějak složitě přepočítávat, stačí, když přerušení jednou za řekněme 10ms inkrementuje proměnnou (word ti přeteče za deset minut)
Zamysli se nad ošetřením vstupu pomocí debounce v hlavní smyčce namísto přerušení
Čas asi nemusíš ani nějak složitě přepočítávat, stačí, když přerušení jednou za řekněme 10ms inkrementuje proměnnou (word ti přeteče za deset minut)
Zamysli se nad ošetřením vstupu pomocí debounce v hlavní smyčce namísto přerušení
Kampaň, účelovka, nepodepsal, Palermo, ODS, Kalousek, je líp a jsou na to čísla, nastudujte si to.