forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
Vyber tlmivky 10uH pre odrusenie AD prevodnika
Jdi na stránku Předchozí  1, 2
 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Elektronika s mikrokontroléry, procesory
 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 781

PříspěvekZaslal: 18 srpen 2018, 13:56    Předmět: Citovat

Držím palce, ať se Ti daří. Kontaktní pole není úplně ideální nejenom pro AD převodník, ale obecně pro vyšší frekvence. Pokud máš něco jen pospojovanýho, tak tam špatný kontakt relativně lehce odhalíš, jakmile tudy běží nějaká komunikace, hledá se problém hůře. Co se děliče napětí týká, to jsi postupoval správně, je třeba si jenom ohlídat, jestli máš dostatečně velké odpory, abys zbytečně proudově nezatěžoval baterku. Například místo 100+270 Ohmů je dobré použít 100k+270k (klidně třeba i 1M+2M7) - poměr zůstává zachovaný, ale proudově jsi na tom mnohem lépe. Když pak ještě přidáš třeba 10n kondík, tak máš vstup i relativně vyhlazený a zbavený nechtěných špiček.

Tak se drž a doufám, že se podělíš i s úspěchem.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
evTOM
Častý přispěvatel
Častý přispěvatel


Založen: 2.7.2013
Příspěvky: 33

PříspěvekZaslal: 18 duben 2019, 21:53    Předmět: Citovat

del.Tak po dlhsom case sa opat ozyvam. Trvalo to, ale tak robil som to vo volnom case, obcas cakal na zasielky z aliexpressu. LED pas uz je v ostrej prevadzke cez 3 tyzdne a zatial funguje spolahlivo, bez potrebneho resetu CPU. Este som potreboval cas na skreslenie schemy zapojenia, ktoru prikladam. Chcem vas skusenejsich poprosit, ci by ste ju pozreli a popripade mi ju skusili vylepsit, ak najdete nieco, co by bolo lepsie zapojit.

Vsetko je aktualne zapojene na univerzalnej doske plosnych spojov. Hlavna cast (CPU, baterky, zdroj a pod.) je docastne umiestnene v pevnej krabici od topanok, ale to len kvoli prachu. Okrem teda zdroja, a rele. Tie su mimo DPS. Tlacidla su tiez na univerzalnej doske plosnych spojov. Pre ne som vytvaral krabicku z hlinikoveho plechu, ktora sa podarila na druhy pokus. Je tam sice otvor pre pohybovy senzor vacsi, ale tak usiel vrtak. V bytovych podmienkach, sa to tazko robilo, hlavne ohybanie plechu bola "radost" na malom zveraciku, ktory je otocny Very Happy Pohlad na vnutro krabicky s tlacidlami odfotene nemam, ale prikladam vykres z AutoCADu, pre nazornost.

Prepoj medzi tlacidlami a CPU je ethernetovym kablom 5e, nakolko ten bol po ruke. Potreboval som sice na prepoj 9 zil (5x tlacidlo, jas, pohybovy senzor, napajanie 5VDC pre pohyb. senzor a GND) a tak pre GND som pouzil vodic tienenia.

Jediny problem, ktory som si vsimol este pri testovani s LCD displejom bol, ze ked som zapol napr. svetlo, alebo nieco, tak nabehlo par preruseni pre INT0 a INT1 (tlacidlo 1 a pohyb. senzor). Neviem, ci dat pre kazde tlacidlo este 100nF kondik? Ako pre nanajanie CPU.

Druha vec, ktora sa mi nepodarila vyriesit: Chcel som, aby, ked LED pas robi zmenu – kazdy efekt trva 2 sekundy, dokazal reagovat na stlacenie nejakeho tlacidla. Programovo som to vedel urobit, ale problem bol ten, ze zvykol casto LED pas prebliknut. Proste aj male prerusenie komunikacie s LED pasom chybne vyhodnotil a nastal posun a kratke bliknutie inych farieb, vacsieho jasu a podobne. Jednoducho to rozhadzalo. Tak som to musel zrusit a tlacidla reaguje len vtedy, ked neprebieha komunikacia s LED pasom (ak sa dobre trafi, tak zareaguje aj cez tie 2 sekundy efektu). Neviem, ci sa tu da nieco vymysliet, hlavne, ak ma prerusenie vyhodnotit, ktore tlacidlo (2, 3, 4 a 5) sa stlacilo. Tlacidlo 1 je cez prerusenie INT0.

Nabijanie baterii funguje dobre. Signalizaciu o nabiti a nabijani baterii beriem kradnutim signalu z dosticky pre nabijanie z LED. Zapojene su cez tranzistory. Zistovanie aktualneho napatia na baretiach uz teraz funguje spolahlivo, pomohlo, ze je vsetko pevne zletovane. Este som si vsimol, ze to trosku ovplyvnuje priezer vodica, cez ktory ide aj napajanie LED pasu z baterii. Ked odoberal vacsi prud, tak vznikal ubytok na kabloch a preto CPU nameral mensie napatie. V scheme kvoli tomu uvazujem, ze odporovy delic pre zistenie napatia bude napojeny priamo z baterii vlastnym plosnym spojom. Baterie sa nabijaju hned, ako sa zapne zdroj 230VAC/5VDC. Ten sa zapina pri rozsvieteni celeho LED pasu (t.j. mino nocneho rezimu) a vypina sa 1,5 hod po prijati signalizacie nabitia baterii alebo 1,5 hod po vypnuti LED pasu. V pripade, ze by sa LED pas nepouzil dlhsie, tak CPU pri poklese napatia baterii pod 3,3V sam zapne zdroj pre nabitie baterii. Z tychto baterii som uz zapojil aj bezdotykove mydlo v kuchyni, takze sa nemusim starat o ich nabijanie. Kontrolu napatia a jasu v miestnosti kontroluje CPU kazdu minutu.

CPU zistuje uroven jasu v miestnosti cez fototranzistor umiestneny vedla tlacidla 1. Kontrola je ako som uz pisal kazdu minutu. Fototranzistor je zapojeny tak, aby pri znizovani jasu sa znizovalo napatie. Kvoli tomu nebolo potrebne pre uroven jasu riesit odporovy delic. Pri poklese jasu sa aktivuje nocny rezim a rozsvecuju sa 3 LED v zltej farbe (cervena a zelena farba LED). To uplne staci pre orientaciu sa v kuchyni. Po cca 14 sekundach (cca 7s na pohyb. senzore + 7s v CPU) bez pohybu sa vypnu 2 LED (krajne) a po dalsich 7 sekundach aj ta tretia LED. To je osetrenie, aby osoba vedela, ze ju senzor nezachytava, resp. sa nehybe a musi sa pohybat, aby neostala po tme. Hysterezia pre zapnutie a vypnutie nocneho rezimu z urovne jasu je 200 z ADC hodnoty, co uplne postacuje. Ak si niekto pocas aktivovaneho nocneho rezimu zapne riadne svetlo v kuchymi na strope, tak do minuty sa nocny rezim vypne (musi prebehnut ADC prevod urovne jasu).

Zmenu som urobil ohladne funkcii tlacidiel:

Tlacidlo 1 funguje ako povodne. 1. stlacenie zapne LED pas a len biele LED. 2. stlacenie zapne vsetky farby LED pre maximalny jas. 3. stlacenie vypne LED pas. V podstate toto tlacidlo pouzivame len na zapnutie LED pasu, popripade este to druhe stlacenie pre maximalny jas. LED pas vypiname vacsinou tlacidlom 5, nakolko vacsinou LED pas ide len na bielych farbach LED a tak stlacenim tlacidla 5 obideme rozsvietenie max. jasu. Zapne sa sice nocny rezim, ale ten uz vacsinou aj tak treba, kedze sa LED pas pouziva, ked je tma. A ak by bol dostatocny jas, tak CPU do minuty nocny rezim vypne.

Tlacidlo 2. Tu je zmena a toto tlacidlo je zlucenie povodne tlacidla 2 a 3. T.j. po stlacani tlacidla postupne znizuje jas o 20% a postupne znizuje pocet rozsvietenych LED. Casom som prisiel na to, ze nikomu sa nechce stukat s dvoma tlacidlami, aby znizil jas a aj pocet LED a vzdy sa pouzilo len jedno tlacidlo. Vyhodu to ma aj v tom, ze dalsia funkcia LED pasu je taka, ktora pri plnom rozsvieteni LED pasu a pri necinnosti pohyb. senzora kazde 3 minuty znizuje jas a vypina LED diody. Preto bolo dobre riesenie toto zlucit s tlacidlom 2. Urovne maju rovnake a ak napriklad bol jas LED pasu znizeny tlacidlom 2 a odideme z kuchyne, tak CPU bude postupne vypinat LED pas az od urovne nastavenej tlacidlom 2, kym ho postupne nevypne. A po prichode do kuchyne ho rozsvieti na uroven jasu nastavenu tlacidlom 2 a nie na maximum.
Urovne jasu a poctu LED (kazdy riadok znamena jedno stlacenie tlacidla 2, alebo ubehnutie 3 minut pri neaktívnom pohyb. senzore):


Tlacidlo 3. Kedze sa uvolnilo, nasiel som mu novu funkciu. LED pas uz mam pod celou linkou, je zbytocne, aby vzdy svietil cely. Preto som ho rozdelil na viacej cati, tak ako si mamina povedala. A postupne sa rozsvetcuju stlacenim tlacidla 3.

Tlacidlo 4 funguje teraz ako resetovanie nastaveni tlacidla 1, 2 a 3. Tlacidla 1 preto, ze rusi nastavenie maximalneho jasu na rozsvietenie len bielych LED. Po jeho stlaceni sa rozsvietia vsetky LEDky v bielej farby. Po doprogramovani tlacidla 3 bude nulovat aj jeho zmeny a rozsvieti len cast LED pasu ako na zaciatku.

Tlacidlo 5 je ako povodne. Zapina a vypina nocny rezim. No ale do toho mu uz teraz kecia aj snimac jasu, takze ak ho zapnem cez den, tak ho do minuty CPU vypne a naopak. Ak by som ho v noci vypol, tak si ho CPU do minuty zapne Smile

Ako CPU som nakoniec pouzil ATmega644PA-PU, nakolko som skusal funkcnost 4m LED pasu a zistil som, ze v ATmega328P-PU mi chyba pamat na premenne.

Tak hadam vsetko. Ak by ste chceli linky na ali vsetkych veci, ktore som k LED pasu objednavat (suciastky a pod.) tak napiste a mozem urobit zoznam. Coto je ale uz v prispevkoch vyssie. Neviem, ci chcete, aby som urobil aj video, ako funfuje LED pas, ale asi si to viete predstavit Smile

A este to najdolezitejsie Smile Velke podakovanie patri pre Balů, ktory mi v tejto teme dal vela cennych rad, takze DAKUJEM Wink Uz len dufam, ze bude mat trpezlivost aj pri dalsich mojich "projektoch".



LED pas_ovladac.pdf
 Komentář:

Stáhnout
 Soubor:  LED pas_ovladac.pdf
 Velikost:  18.73 kB
 Staženo:  17 krát


LED pas_hlavna schema.pdf
 Komentář:

Stáhnout
 Soubor:  LED pas_hlavna schema.pdf
 Velikost:  34.16 kB
 Staženo:  16 krát

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

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 781

PříspěvekZaslal: 16 červenec 2019, 22:55    Předmět: Citovat

Ahoj.

Pro začátek - stíněný ethernet kabel není 5e, ale 6. Kategorie 5e nemá stínění. Ale to je jenom detail.

Díval jsem se do schématu a externí pull-up odpory u tlačítek jsou zbytečné, pokud zapneš interní pull-up odpory v procesoru. Sice s nima nic nezkazíš, ale zbytečně si komplikuješ DPS. Psal jsi, že máš potíže s tím, že při zapnutí světla Ti proběhla nějaká přerušení INT0 a INT1. Dávat vstupní signály na přerušení (obzvlášť tlačítka) je klasická (v podstatě začátečnická) chyba. Ono je to hezký - stiskneš tlačítko a procesor o tom okamžitě ví. Jenže tlačítka (a nejenom ty) trpí zákmity kontaktů. Jedna varianta je ošetřit zákmity přímo v HW, druhá (a mnohem jednodušší) je řešit zákmity tlačítek pomocí SW. Všechny tlačítka obsluhuj v hlavním programu. Pokud něco z toho používáš k probuzení procesoru, pak tam to přerušení nech, ale použij ho jenom k proobuzení procesoru. V programové smyčce si přečti stav vstupu a pokud je stabilní dostatečně dlouho, považuj tlačítko za stisknuté (nebo obecně - považuj vstup za aktivní).

Druhým problémovým bodem máš komunikaci s LED páskem. Pokud máš předem dané časy ke komunikaci, pak nesmíš připustit jakékoliv zpoždění během procesu odesílání dat - říká se tomu "Time critical section". Máš dvě možnosti :
1) Na začátku sekvence zakázat přerušení a po odeslání dat ho zase povolit.
2) Dát sekvenci odeslání dat do přerušení od časovače - prakticky tak zabiješ dvě mouchy jednou ranou.
- během přerušení se další nezpracuje, až než se stávající dokončí.
- Data do pásku odesíláš v přesně daných intervalech a přesně víš, jak často dochází ke změně dat v pásku. Lépe se pak časují veškeré efekty atd.

Pokud nastavíš časovač na 10ms a do hlavní smyčky dáš sleep (standby režim), pak 100x za sekundu odešleš data do pásku a 100x za vteřinu načteš vstupy. 10ms je pro procesor moře času - obzvlášť když používáš krystal 14MHz. Pokud je nějaký vstup aktivní, do proměnné pro něj přičteš 1, pokud není aktivní, danou proměnnou vynuluješ. Přesně tedy víš, že pokud je nějaké tlačítko aktivní 10x po sobě (napočítáš do 10), pak je stisknuto 100ms (= 0,1s) a jeho stav se dá prohlásit za aktivní (v prípadě tlačítka se dá prohlásit za stisknuté).

Tenhle princip používám ve všech svých programech. Na začátku nastavím časovač na nějakou hodnotu (obvykle 1 nebo 10ms, případně na kmitočet, který potřebuju pro refresh LED displeje apod.). V hlavní smyčce pak provedu vše potřebné a procesor uspím. Jakmile odčítá časovač, provede se opět jeden cyklus programu. Vše pak řídím příznaky na základě kterých se provádí činnosti, které se neprovádí každý cyklus. Program musí být napsaný tak, aby vždy vše stihnul provést mezi dvěma přerušeními. Delší činnosti je tak potřeba rozfázovat. Stejně tak na čekání. Na vteřinové čekání taky nedáš _delay_ms(1000), ale nastavíš nějaký odpočet a jakmile se odpočet dokončí, tak víš, že jsi čekal tak dlouho, jak jsi potřeboval. Obecně je nutné se funkci delay vyhybat jako čert kříži. a pokud už musíš dát někam delay, tak ho maximálně v rádu mikrosekund. A pokud by delay trval déle, než je doba mezi přerušeními, pak místo delaye činnost rozfázovat s využitím časovače.


Příklad programu s využitím timeru :
Mám 4-místný multiplexovaný 7-segmentový LED displej, tlačítko, LEDku.
Stiskem tlačítka rozsvítím LEDku a zapnu odpočet, po odpočítání času LEDku zhasnu. Při stisku tlačítka během odpočtu čas vynuluju a LEDku shasnu. Obojí musí reagovat pouze na stisk tlačítka, nikoliv na jeho držení. K tomu příklad nějakého dlouhého procesu, který by trval déle, než je čas mezi přerušeními.

kód:

Obsluha přerušení od časovače
{
// displej
  Vypnu napájení segmentovky, na datových pinech nastavím hodnotu další segmentovky a aktivuju ji.
// čas
 Pokud je nastavený příznak pro časování
  {
    Zjistím milisekundy
    milisekundy jsou 0
    {
      zkontroluju čas
      čas je 0
      {
        zhasnu LED
        zruším příznak pro časování
      }
      čas není 0
      {
         odečtu čas a nastavím milisekundy na 1000.
      }
    }
  }
// dlouhý proces
  zkontrolovat odpočet
  pokud není 0
  {
    odečíst 1
    pokud jsem dopočítal do 0 nastavit příznak pokračuj
  }
}

Program
{
  Nastavím IO piny procesoru
  Nastavím timer na 1ms (=1000Hz) s přerušením
  Načtu hodnoty vstupů a uložím si je jako aktuální i minulé.
  Vynuluju/nastavím časy a příznaky
  Povolím přerušení

  Hlavní smyčka
  {
    Uspím procesor do standby režimu (probudí se přerušením od časovače - tedy pravidelně každou 1 ms)
    Načtu vstupy
    ošetřím zákmity tlačítka
    zkontroluju aktuální stav tlačítka s minulým
    pokud je teď stisknuté a předtím ne
    {
      zkontroluju příznak časování
      časování aktvní
      {
        vymažu příznak časování
        vynuluju čas a milisekundy
        zhasnu LED
      }
      časování není aktivní
      {
        nastavím čas
        nastavím příznak časování
        rozsvítím LED
      }
    }
    uložím aktuální stav tlačítka jako minulý
    dlouhý proces
    {
      zkontroluj příznak pokračuj
      příznak je nastavený
      {
        vynulovat příznak pokračuj
        nastavit čas mezi kroky - pokud je čas mezi kroky vždy stejný, může být tady
        kroky
        {
          1: část 1
               zvýšit krok o 1
               nastavit čas mezi kroky - pokud jsou časy mezi kroky rozdílné
          2: část 2
               zvýšit krok o 1
               nastavit čas mezi kroky - pokud jsou časy mezi kroky rozdílné
          .
          .
          .
          .
          x: část x
               nastavit krok na 1 - konec procesu
               nastavit čas mezi kroky - pokud jsou časy mezi kroky rozdílné
        }
      }
  }
}


Smyslem tohohle je hlavně návod, jak vyhodit tlačítka z přerušení a dát do přerušení od časovače komunikaci s páskem. V klidu pak můžeš reagovat na tlačítka i během probíhajícího efektu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
evTOM
Častý přispěvatel
Častý přispěvatel


Založen: 2.7.2013
Příspěvky: 33

PříspěvekZaslal: 17 červenec 2019, 8:40    Předmět: Citovat

Dakujem velmi pekne za dalsie rady...

No tie tlacidla cez externe odpory mi odporucil ten jeden chalan, co ma zaucal do tohto kedysi davno. Ale tak asi su fakt zvytocne...

Tie INT0 a INT1 riesim v podstate tak ako mi pises.

INT0 uplne, len na zobudenie CPU. (Tie premenne pocet som mal len aby som videl, kolko krat prebehne prerusenie)

kód:
ISR (INT0_vect) {
   pocet_int0++;
}


A v INT1 (od pohyb. senzora, ktory nema kontakt, ale posiela napatie) som dal nastavenie na rozsvietenie LED pasu.

kód:
ISR (INT1_vect) {
   if (pohybovy_senzor_noc_enable == 1) {
      LEDpas_efekt = 9;
      LEDpas_zmena = 1;
      CPU_ON = 1;
   }
   pocet_int1++;
}


Tie tlacitka riesim tiez casom, ale robim ich opacne. Ja nastavim cas (hodnota 225, co je 1 sekunda) do premennej pre dane tlacidloa v Timer0 preruseni tuto hodnotu znizujem. A tladidlo vyhodnotim len vtedy, ked je premenna rovna 0. Proste takto som si to sam vymyslel, ale ten tvoj sposob je rozhodne lepsi, lebo vies zistit aj dlzku stlacenia tlacidla, nad ktorou som uz rozmyslal, ako to vymysliet. Pokusim sa to riesit tvojim spôsobom, len to bude celkom zmena v programe.

kód:
      // Tlačítko 1 - on/off
      if (tlacitko_1 == 0) {
         if (Tlacitko(1) == 0) { //zistuje, ci je stlacene tlacidlo
            tlacitko_1 = tlacitko_cas;
            //prikazy pre tlacidlo
         }
      }


Mne islo len o to, ze preco sa prerusenie vykona viac krat, aj ked sa nestlacilo tlacidlo ani nic. Ze ci netreba nejak hardverovo osetrit dane vstupy, alebo napajanie, alebo co...

No toto je tiez fajn napad, dať posielanie dát do LED pasu do Timeru, ze mi to nejak nenapadlo. Asi preto, ze som sa vzdy snazil prerusenie robit co najkratsie. Ja teraz obnovujem LED pas asi zbytocne vela krat (neviem ako stiha procesor, ale maximalne to moze byt 2 x 225 = 450-krat za dve sekundy. A asi je to uplna hovadina. Pred samotnym odoslanim dat som zakazal prerusenia od Timerov a hned po odoslani som ich opat povolil. Cize toto by som uz nemusel robit. Len musim oddelit pripravu dat od odosielania dat do LED pasu. Priprava musi bezat asi v programe a ked bude hotova, nastavimm premenu, ze su data pripravene a ked prebehne prerusenie Timeru tak ich odosle do LED pasu. Asi tak by to bolo fajn? A takto by som znizil pocet obnoveni na 200x za 2 sekundy, co by mohlo byt u v pohode Smile

Este pre predstavu, jedno odoslanie dat do LED pasu pre aktualne 138ks LED trva 165600 ns + 80ns reset bit, t.j. 0.16568 ms.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mikop
Profesionál
Profesionál


Založen: 22.2.2009
Příspěvky: 287

PříspěvekZaslal: 17 červenec 2019, 18:12    Předmět: Citovat

citace:
Pro začátek - stíněný ethernet kabel není 5e, ale 6. Kategorie 5e nemá stínění. Ale to je jenom detail.


Balů, myslím, že to není pravda. Hádat se nebudu, je to jen detail, ale takto se to prodává i používá, např. tady:
https://www.intelek.cz/cat_tree.jsp?dpath=Solarix%5CKabely+dr%C3%A1t%5CKategorie+5E%5CSt%C3%ADn%C4%9Bn%C3%A9
nebo zde na straně 9: https://www.kvelektro.cz/wp-content/uploads/2015/11/datove_kabely.pdf
V práci je používáme také. Pravda je, že stínění je jen celkové a ne jednotlivé páry.

PS. Není to žádná výtka. Naopak, je super, že tady někdo pomáhá ostatním. Čtu to tady rád. Člověk se alespoň z programování něco dozví.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 781

PříspěvekZaslal: 17 červenec 2019, 22:01    Předmět: Citovat

Mikop napsal:
citace:
Pro začátek - stíněný ethernet kabel není 5e, ale 6. Kategorie 5e nemá stínění. Ale to je jenom detail.


Balů, myslím, že to není pravda. Hádat se nebudu, je to jen detail, ale takto se to prodává i používá, např. tady:
https://www.intelek.cz/cat_tree.jsp?dpath=Solarix%5CKabely+dr%C3%A1t%5CKategorie+5E%5CSt%C3%ADn%C4%9Bn%C3%A9
nebo zde na straně 9: https://www.kvelektro.cz/wp-content/uploads/2015/11/datove_kabely.pdf
V práci je používáme také. Pravda je, že stínění je jen celkové a ne jednotlivé páry.

PS. Není to žádná výtka. Naopak, je super, že tady někdo pomáhá ostatním. Čtu to tady rád. Člověk se alespoň z programování něco dozví.


Tak nakonec máme pravdu všichni. Kategorie 5e má provedení stíněné i nestíněné ...
Mám tady UTP Cat5e, proto jsem si myslel, že stíněná je až Cat6.
Dokonce i Cat6 je stíněná i nestíněná. Až Cat6A a výše je pouze stíněná.

Člověk se pořád učí ...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 781

PříspěvekZaslal: 18 červenec 2019, 21:33    Předmět: Citovat

evTOM napsal:
Mne islo len o to, ze preco sa prerusenie vykona viac krat, aj ked sa nestlacilo tlacidlo ani nic. Ze ci netreba nejak hardverovo osetrit dane vstupy, alebo napajanie, alebo co...


Tady těžko říct, čím by to mohlo být. Prudký nárůst odběru samožřejmě může být důvod, že mohlo zakolísat napětí. Až budu mít trochu času, kouknu do schématu, jak máš řešený napájení a jeho zablokování. Třeba se mi podaří něco z toho vykoukat.

evTOM napsal:
Este pre predstavu, jedno odoslanie dat do LED pasu pre aktualne 138ks LED trva 165600 ns + 80ns reset bit, t.j. 0.16568 ms.


To je celkem v pohodě. Pokud budeš mít periodu přerušení 10ms, klidně se v přerušení můžeš zdržet i několik ms. Záleží na tom, kolik toho má na starosti zbytek programu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Atlan
Profesionál
Profesionál


Založen: 4.2.2009
Příspěvky: 962

PříspěvekZaslal: 21 červenec 2019, 9:53    Předmět: Citovat

daj tam esterne pullup odpory a k tlacitku kondik 47n, sice to bude troska zataz na tlacita ale to zvladnu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
evTOM
Častý přispěvatel
Častý přispěvatel


Založen: 2.7.2013
Příspěvky: 33

PříspěvekZaslal: 21 červenec 2019, 21:00    Předmět: Citovat

Balů napsal:
Tady těžko říct, čím by to mohlo být. Prudký nárůst odběru samožřejmě může být důvod, že mohlo zakolísat napětí. Až budu mít trochu času, kouknu do schématu, jak máš řešený napájení a jeho zablokování. Třeba se mi podaří něco z toho vykoukat.


Ďakujem, snáď niečo vymyslíš...

Balů napsal:
To je celkem v pohodě. Pokud budeš mít periodu přerušení 10ms, klidně se v přerušení můžeš zdržet i několik ms. Záleží na tom, kolik toho má na starosti zbytek programu.


No toto neviem ako zistiť, koľko trvá cyklus programu. A tiež by ma zaujímalo, či keď trvá dlhšie prerušenie, ako sa správa procesor. Napr. časovače čítajú ďalej? A ak vznikne iné prerušenie, tak keď skončí to aktuálne, vykoná CPU hneď to, čo vzniklo počas prerušenia?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
evTOM
Častý přispěvatel
Častý přispěvatel


Založen: 2.7.2013
Příspěvky: 33

PříspěvekZaslal: 21 červenec 2019, 21:01    Předmět: Citovat

Atlan napsal:
daj tam esterne pullup odpory a k tlacitku kondik 47n, sice to bude troska zataz na tlacita ale to zvladnu.


Ďakujem, tiež som rozmýšlal, že tam pridať kondíky, len neviem či k pinu CPU alebo ku tlačidlu?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 781

PříspěvekZaslal: 21 červenec 2019, 21:39    Předmět: Citovat

Když už tam budeš dávat kondík, tak ho dej k pinu a do série s tlačítkem přidej ještě odpor tak cca 100 Ohmů.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Elektronika s mikrokontroléry, procesory Časy uváděny v GMT + 2 hodiny
Jdi na stránku Předchozí  1, 2
 
Strana 2 z 2
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můž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.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2019 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)