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í 

Pomoc s úpravou programu pro attiny 13

 
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
reher64



Založen: Jul 09, 2013
Příspěvky: 24

PříspěvekZaslal: ne říjen 14 2018, 20:21    Předmět: Pomoc s úpravou programu pro attiny 13 Citovat

Ahoj potřeboval bych trochu pomoc s vytvořením programu pro attiny 13 která bude řídit svářečku.
Funkce je jednoduchá 2 vstupy 3 výstupy
1 vstup je od tlačítka pro externí posuv drátu
2 vstup je od hořáku

Funkce sváření mi funguje jak má.
Při logické 1 od hořáku se sepne výstup pro plyn a udělá 1,5s předfuk plynu, dál se aktivuje výstup pro podavač a stykač trafa. Při logické 0 naběhne jakoby fáze ukončení svařování. Výstup pro podavač se vypne hned, 0,6s na to odpadne signál pro stykač trafa a 1,9s na to odpadne výstup pro plyn (dofuk plynu) To je vše ok. Jediné co tak mi připadá že při změně 0/1 chvilku přemýšlí co bude dělat. Sepnu vstup a 0,5-1s se nic neděje a pak už začne jak má ve správných časech, zrovna tak když vypnu svařování, tak cca 0,5-1s jak když čeká a pak začne už správně v časech ta fáze ukončení svařování. To ě trošku trápí.

Co ale nevím jak udělat je externí posuv. Vstup je jiný, ale výstup stejný. Tak jak mám teď napsaný program tak mi nefunguje ten výstup pb4 pro podavač. Když odstraním jakoby tlačítko ext posuvu, tak to funguje jak má. když ho tam dopíšu tak nejde ani jako externí posuv ani ve svářecí sekvenci.

Nevím zda jsem to napsal alespoň trochu srozumitelně, každopádně v programu to je vše vidět a s popisky. Dokázal by mi někdo pomoci, jen třeba napsat udělej tak, či onak, nebo že by přímo upravil program cokoli...

přikládám ve v balíku, je tam udělané pdf toho programu, tak komplet složka z atmel studia kde je vše.



zení 2.rar
 Komentář:

Stáhnout
 Soubor:  zení 2.rar
 Velikost:  39.71 kB
 Staženo:  238 krát

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



Založen: Sep 20, 2014
Příspěvky: 3328

PříspěvekZaslal: ne říjen 14 2018, 20:38    Předmět: Citovat

Tak jak to máš napsané, se ti program pořád točí v té while smyčce a stále dokola se ti spouští nebo ukončuje svařování, podle toho, jestli je tlačítko sepnuté nebo rozepnuté a stále se čeká tu 1,5s, tu 1,9s. Tak to asi fungovat nemá, ne?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
reher64



Založen: Jul 09, 2013
Příspěvky: 24

PříspěvekZaslal: ne říjen 14 2018, 20:50    Předmět: Citovat

Ne ne, tak určitě ne.

Funkce má být. Pokud je vstup od hořáku v logická 0 nic se neděje. Pokud přepne do 1 tak naběhne fáze svařování. Tj. aktivuje výstup pro plyn, čeká 1,5s a zapne k tomu výstup pro podavač a stykač trafa dále je vše zaplé dokud nepřijde na vstup 0, když přijde ta výstup pro podavač vypne okamžitě pak po O,6s vypne výstup stykače trafa a od toho po 1,9s vypne výstup plynu.

Druhá funkce je jen při například zavádění nového drátu. Takže tlačítko které jde na vstup pošle signál 1 a sepne se výstup pro podavač (stejný jako v sekvenci svařování, při logické 0 ten výstup vypne.

Mě funguje svařovací sekvence pokud do toho nenapíšu podmínku s tlačítkem. Jen mi přijde že při změně stav 0/1 chvilku spí než začne provádět ty operace, jinak sled operací a časů je ok, ale pokud dopíši to tlačítko posuvu, tak mi v svařovací sekvenci neaktivuje výstup pb4 pro ten posuv a neaktivuje mi ho ani když sepnu tlačítko posuvu. Je mi jasné že se tam totiž budou ovlivňovat ty 2logiky vstupu na stejný výstup, ale nevím jak to napsat aby to šlo, nikdy jsem si vlastní program nepsal.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
FHonza



Založen: Nov 20, 2012
Příspěvky: 1453
Bydliště: Praha

PříspěvekZaslal: po říjen 15 2018, 10:38    Předmět: Citovat

Musíš si v programu pamatovat v jakém stavu se právě nacházíš. Resp. jestli jsou obě funkce na sobě nezávislé, tak si musíš pamatovat stavy dva. A podle toho udělat stavový automat. Tím zároveň můžeš ošetřit i "debouncing" tlačítek.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
reher64



Založen: Jul 09, 2013
Příspěvky: 24

PříspěvekZaslal: po říjen 15 2018, 12:44    Předmět: Citovat

Chápu co tím asi chcete říct, bohužel do programu absolutně netuším jak to převést.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Crifodo



Založen: Oct 11, 2005
Příspěvky: 15005

PříspěvekZaslal: po říjen 15 2018, 20:13    Předmět: Citovat

vypadá to, že rovnou konkrétně programuješ a zabýváš se těmi vstupy a výstupy, neudělal si předem vývojový diagram, ze kterého by ti asi v některé chvíli bylo zřejmé, že tam potřebuješ nějaké pomocné proměnné, do kterých se bude ukládat snímání tlačítek a stav výstupů.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
lesana87



Založen: Sep 20, 2014
Příspěvky: 3328

PříspěvekZaslal: po říjen 15 2018, 20:20    Předmět: Citovat

Třeba nějak takhle:
kód:
int main(void)
{
   char vari_se;

   DDRB &= ~ (1<<PB0); // pb0 vstup tlačítko posuv pwm
   DDRB &= ~ (1<<PB1); //pb1 vstup spínač hořák
   DDRB |= (1<<PB2);   // pb2 výstup plyn
   DDRB |= (1<<PB3);  //pb3 výstup stykač trafo
   DDRB |= (1<<PB4);  //pb4 výstup pwm podavač
   vari_se = 0;         // nevari se

    while (1)
    {
      if ((PINB & (1<<PB1)) && !vari_se) // sepnuto tl. a nevari se
      {
         _delay_ms(20);
         if (PINB & (1<<PB1))      // nebyl to zakmit
         {
            PORTB |= (1<<PB2); // sepnutí výstup pb2 plyn
            _delay_ms(1500); // čekání 1,5s

            PORTB |= (1<<PB3); // sepnutí pb3 stykač trafo
         
            PORTB |= (1<<PB4); // sepnutí pb4 pwm podavač
            vari_se = 1;       // vari se
         }
      }
      
      if (!(PINB & (1<<PB1)) && vari_se)  // rozepnuto tl. a vari se
      {
         _delay_ms(20);
         if (!(PINB & (1<<PB1)))       // nebyl to zakmit
         {
            PORTB &= ~ (1<<PB4); // vypnutí pb4 pwm podavač
         
            _delay_ms(600);
            PORTB &= ~ (1<<PB3); // vypnutí pb3 stykač trafo
         
            _delay_ms(1900);
            PORTB &= ~ (1<<PB2); // vypnutí pb2 plyn
            vari_se = 0;         // nevari se
         }
      }
....
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
Strana 1 z 1

 
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.12 sekund