Bascom dynamický "alias"

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#76 Příspěvek od scorpions-cz »

Nooo a zase máš pravdu :oops:

termit256
Příspěvky: 10071
Registrován: 06 pro 2007, 01:00

#77 Příspěvek od termit256 »

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.

Uživatelský avatar
Mahoney
Příspěvky: 347
Registrován: 26 říj 2019, 02:00

#78 Příspěvek od Mahoney »

Eeh... Něco mi to připomíná :D

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#79 Příspěvek od scorpions-cz »

Ahoj.
Nějak se nám tady pletou dva projekty a tak to dám na pravou míru :lol:
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.

termit256
Příspěvky: 10071
Registrován: 06 pro 2007, 01:00

#80 Příspěvek od termit256 »

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.

Uživatelský avatar
Mahoney
Příspěvky: 347
Registrován: 26 říj 2019, 02:00

#81 Příspěvek od Mahoney »

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 :)

termit256
Příspěvky: 10071
Registrován: 06 pro 2007, 01:00

#82 Příspěvek od termit256 »

No, osobne bych sw zarizeni na odpalovani vybusnin vic lidi delat urcite nenechal a nejspis bych to psal z bezpecnostnich duvodu radeji v asm kde je asi nejlepsi kontrola nad vyslednym kodem, ale avr zrovna moc valny asm pro rucni psani nema, takze se nedivim ze se do toho nehrnes.

Uživatelský avatar
Mahoney
Příspěvky: 347
Registrován: 26 říj 2019, 02:00

#83 Příspěvek od Mahoney »

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) :smutny: :agree: :drink:

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#84 Příspěvek od scorpions-cz »

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.

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.

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#85 Příspěvek od scorpions-cz »

otázka Lze sem nějak nakopírovat kod, tak by se zobrazil tak jak je napsanej, včetně mezer a barevnýho rozlišení ?

Uživatelský avatar
Crifodo
Příspěvky: 14471
Registrován: 11 říj 2005, 02:00

#86 Příspěvek od Crifodo »

Můžeš exportovat program (Tools - Export to RTF nebo Export to HTML), pak se to zobrazí v barvách a formátováno, ale proč. Kdo se tím bude chtít zabývat v bascomu, stačí když si to jen jako text vloží přes ctrlC/V a naformátované se mu to zobrazí.

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#87 Příspěvek od scorpions-cz »

Nepředpokládám, že se tím bude chtít někdo zabývat, dal jsem to jen jako příklad, ale takhle je to úplně nepřehledné.

Uživatelský avatar
rnbw
Příspěvky: 32312
Registrován: 21 bře 2006, 01:00
Bydliště: Bratislava

#88 Příspěvek od rnbw »

Daj to do [code][/code], zachova sa formatovanie.

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#89 Příspěvek od scorpions-cz »

Dík.

Uživatelský avatar
Ruprecht
Příspěvky: 1114
Registrován: 28 zář 2005, 02:00
Bydliště: ZČ + JM

#90 Příspěvek od Ruprecht »

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í
Kampaň, účelovka, nepodepsal, Palermo, ODS, Kalousek, je líp a jsou na to čísla, nastudujte si to.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“