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í

 
Zjednodušenie kódu PIC12F629 HEARTBEAT

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip
 
Skyline35
Účastník
Účastník


Založen: 4.6.2016
Příspěvky: 10
Bydliště: Budmerice, Slovakia

PříspěvekZaslal: 22 září 2018, 22:26    Předmět: Zjednodušenie kódu PIC12F629 HEARTBEAT Citovat

Všetkým prajem dobrý deň. Potrebujem pomoc s PIC12F629 a zjednodušiť kód. Chcem urobiť efekt HEARTBEAT v MPLab-e a s jazykom C. Urobil som kód, no zaberá mi až 17% pamäte... Viete ho niekto napísať jednoduchšie, poprípade aj vysvetliť, ktorá inštrukcia čo robí? Prosím Iba jazyk C


kód:


#include <htc.h> 
#include <pic12f629.h> 
#include <stdio.h> 
#define _XTAL_FREQ 4000000 
#pragma config FOSC = INTRCIO // Oscillator Selection bits (INTOSC oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN) 
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) 
#pragma config PWRTE = OFF // Power-Up Timer Enable bit (PWRT disabled) 
#pragma config MCLRE = OFF // GP3/MCLR pin function select (GP3/MCLR pin function is digital I/O, MCLR internally tied to VDD) 
#pragma config BOREN = ON // Brown-out Detect Enable bit (BOD enabled) 
#pragma config CP = OFF // Code Protection bit (Program Memory code protection is disabled) 
#pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled) 

void delay ( int a) 
   { 
      for(int x=0;x<a;x++) 
         { 
            NOP(); 
         } 
   } 


int a,b; 

void main(void) 

   TRISIObits.TRISIO2=0;             //GP2 výstup
   GPIObits.GPIO2=0;                //Reset GP2

while(1)                         //nekonečná slučka
   { 
      a=100;                   //pociatocna hodnota premennej
   
      for(b=0;b<100;b++)             // 100x opakuj cyklus
         { 
            GP2=0; 
            delay(a);
            GP2=1; 
            delay(b); 
            a--;                //odrataj 1 od A
         }
      
      for(b=100;b>0;b--)             //100x opakuj cyklus
         { 
            GP2=0; 
            delay(a); 
            GP2=1; 
            delay(b); 
            a++;             //prirataj 1 k A
         } 
   } 
}


Ďakujem za reakcie


Naposledy upravil Skyline35 dne 06 říjen 2018, 22:03, celkově upraveno 3 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

 
Billy Bob Bean
Profesionál
Profesionál


Založen: 21.9.2009
Příspěvky: 310
Bydliště: OLOMOUC - BRNO

PříspěvekZaslal: 22 září 2018, 23:28    Předmět: Citovat

místo intu pro A a B použít unsigned char. Pokud nebudeš používat větší konstanty jak 255.

Jinak, úplně nejlepší by bylo si to napsat v assembleru, kor pro tenhle mikro pic.

_________________
Stavím UPSky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 149

PříspěvekZaslal: 23 září 2018, 10:17    Předmět: Citovat

V první řadě bych se ptal jestli vůbec ví co dělá, tedy že se jedná o PWM atd...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Skyline35
Účastník
Účastník


Založen: 4.6.2016
Příspěvky: 10
Bydliště: Budmerice, Slovakia

PříspěvekZaslal: 25 září 2018, 11:03    Předmět: Citovat

Billy Bob Bean => Dal som tam char a trochu to upravil, dostal som sa na hranicu 9%, čo sa mi stále zdá na tak jednoduchý kód priveľa.

Mahoney=> presne o to sa mi jedná, urobiť PWM na chipe, ktorý nedisponuje PR2 registrom, ten podľa všetkého, čo som sa dočítal, treba na originál funkciu PWM... Dá sa PWM na tomto PICe urobiť aj inak ako som napísal ja?

_________________
WA +421903718119
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 149

PříspěvekZaslal: 25 září 2018, 11:38    Předmět: Citovat

Dá, ale přesně jak píše Billy - v assembleru. A nebo vzít nějaký PIC, který má HW PWM (např. 12F683, 12F1501, 12F1572... Ty poslední dva jmenované už jsou C optimized.

Jinak ještě prosímtě - kód patří do tagu CODE, takhle rozsypané to odmítám studovat (a asi nebudu sám).

A ještě jestli se dobře dívám, tak tam pracuješ pouze s proměnnou "b" a "a" nikde neměníš, zřejmě proto nemůžeš docílit toho plnění které by sis představoval. Při soft PWM musíš "cvičit" s oběma čekačkama najednou (v nepřímé úměře samozřejmě. V assembleru se na to používá COMF instrukce).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Skyline35
Účastník
Účastník


Založen: 4.6.2016
Příspěvky: 10
Bydliště: Budmerice, Slovakia

PříspěvekZaslal: 25 září 2018, 18:49    Předmět: Citovat

Ospravedlňujem sa za začiatočnícku chybu. Už som to opravil, dúfam, že je to čitateľné. Mne to PWM funguje, aspoň podľa LEDky. Prikladám video z YT https://youtu.be/tc_tYP23oN8

Premenné by mali pracovať obe, inak by mi LEDka plynulo nemenila intenzitu alebo sa mýlim?

Moja počiatočná otázka bola, či je v Cčku možné pri tomto PICe napísať môj kód jednoduchšie. Nechcem robiť v assemblery, tomu vôbec nerozumiem.

PIC12F1572 mi prišiel dnes, na tom chcem urobiť MOSFET regulátor na ovládanie otáčok ventilátora, ktorý bude chladiť extruder na tlačiarni. Tam sa potrápim, popravde s tým budem potrebovať naozaj obrovskú pomoc
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

 
Atlan
Profesionál
Profesionál


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

PříspěvekZaslal: 25 září 2018, 19:32    Předmět: Citovat

A ked vyhodis stdio.h tak kolko to zabera?

Aky prekladac mas do Cka? Pokial nieje plna verzia, free ma tu vlastnost ze dokonca kod zvecsuje.

Ak nezabudnem zajtra ti to prelozim a poviem kol o to zabera.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Skyline35
Účastník
Účastník


Založen: 4.6.2016
Příspěvky: 10
Bydliště: Budmerice, Slovakia

PříspěvekZaslal: 25 září 2018, 20:10    Předmět: Citovat

Robím to v MPLab-e, ale ako si spomínal, vo free verzií, nerobím s rým každý deň, tak platená za 800€ by ma asi zabila. Neviem, či treba spomenúť, že v ňom používam XC8 a všetko je to cez Pickit3 nahrávané, ale to sú asi zbytočné informácie...

Skúsim vyhodiť stdio.h, ale to asi až v piatok, padol mi systém a mam teraz toho dosť veľa na krku, tak to skôr nestihnem
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

 
Atlan
Profesionál
Profesionál


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

PříspěvekZaslal: 26 září 2018, 8:21    Předmět: Citovat

s int to ma 10,5% data{108} a 17,2 RAM{11}

A s char 6.9% data{71 slov}, 14,1% ram{9 bytes}

res 6.2% 63 slov a 8 bajtov ram ak je vsetko char
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Billy Bob Bean
Profesionál
Profesionál


Založen: 21.9.2009
Příspěvky: 310
Bydliště: OLOMOUC - BRNO

PříspěvekZaslal: 26 září 2018, 13:19    Předmět: Citovat

Pokud to nemá dělat ještě něco navíc, tak nevidím důvod tam mít navíc načtenou knihovnu htc.h.
Stačí jen nalinkovat xc.h

_________________
Stavím UPSky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 515

PříspěvekZaslal: 27 září 2018, 10:21    Předmět: Citovat

Hele Billy a to je ten kompilátor takovej shit, že nepozná, že z knihovny nevoláš žádnou funkci a jen tak přilinkuje celou knihovnu? Smile
_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
Atlan
Profesionál
Profesionál


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

PříspěvekZaslal: 27 září 2018, 18:28    Předmět: Citovat

Neni, linkuje len to co sa pouzije, ale ked uzivatel omylom nieco pouzije je lepsie to tam nemat uvedene.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 149

PříspěvekZaslal: 29 září 2018, 11:48    Předmět: Citovat

Mě by jen zajímalo, jestli celé tohle vlákno lze považovat za zahájení sezóny elektroniků a programátorů a jestli se teď tedy bude víc makat a bude tu živěji Very Happy
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Skyline35
Účastník
Účastník


Založen: 4.6.2016
Příspěvky: 10
Bydliště: Budmerice, Slovakia

PříspěvekZaslal: 16 říjen 2018, 15:48    Předmět: Citovat

Všetkým pekne ďakujem za ochotu a reakcie, myslím, že menšie to už urobiť nemôžem Smile
_________________
WA +421903718119
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

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 -> Microchip Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
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 © 2018 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)