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í 

Programování PICů v C (XC8)
Jdi na stránku Předchozí  1, 2, 3  Další
 
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
forbidden



Založen: Feb 14, 2005
Příspěvky: 8977
Bydliště: Brno (JN89GF)

PříspěvekZaslal: pá prosinec 09 2016, 10:50    Předmět: Citovat

To nevím, ale píšou tam, že když si budu platit Pro verzi, tak budu mít až o 60 % menší kód. Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
rnbw



Založen: Mar 21, 2006
Příspěvky: 33939
Bydliště: Bratislava

PříspěvekZaslal: pá prosinec 09 2016, 10:51    Předmět: Citovat

Takze nema... Neexistuje pre tieto PICy nahodou aj GCC?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
forbidden



Založen: Feb 14, 2005
Příspěvky: 8977
Bydliště: Brno (JN89GF)

PříspěvekZaslal: pá prosinec 09 2016, 10:55    Předmět: Citovat

To nevím, já dělal vždy v tom MPLABu, akorát jsem do toho doinstaloval ten XC8 překladač, abych mohl dělat i v Cčku.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
Wolfik



Založen: Jul 28, 2009
Příspěvky: 1090

PříspěvekZaslal: pá prosinec 09 2016, 11:58    Předmět: Citovat

musíš si zprovoznit vývojové prostředí s nějakým GNU GCC překladačem.

A taky doporučuju pořádně se naučit Céčko srkz na skrz na PC. A také pojmy jako je linker, make, makefile, křížová kompilace...Začínat s Cčkem na mcu bez předchozích zkušenosti na PC je dost na prd
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
forbidden



Založen: Feb 14, 2005
Příspěvky: 8977
Bydliště: Brno (JN89GF)

PříspěvekZaslal: pá prosinec 09 2016, 13:21    Předmět: Citovat

Tak asi před dvěma lety jsem trošku začal s C++ na PC, ale potřeboval jsem jen udělat jednu konzolovou aplikaci na komunikaci s COM portem. Pak už jsem na to zas nešáhl. Nemám ambice v tom být dobrej, jen umět alespoň základy a případně se doučovat, co bude třeba, za pochodu.
GCC je nějakej free překladač? MPLAB se mi líbí, že je celkem komfortní a provázanej a vše tak nějak funguje. Akorát je to děsnej moloch, je to v javě a žere 1,3 GB RAMky. Shocked

Asi jsem našel GCC fo PIC, ale je ve fázi plánování. Moc se mi nechce začínat s něčím novým, nevyzkoušeným a místo hledání chyb v programu hledat chyby v překladači.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
Wolfik



Založen: Jul 28, 2009
Příspěvky: 1090

PříspěvekZaslal: pá prosinec 09 2016, 15:15    Předmět: Citovat

koukám, že s těma open source toolchainama pro Microchip to je pěkne naprd...
jediný, co mi něco říká je SDCC (ve vedlejším vláknu myslím nějaká uživatelka portila Linux na Z80)
tady jsou nějaký příklady
https://github.com/diegoherranz/sdcc-examples

Ale je to stále v testovací fázi, takže určitě nic pro tebe Very Happy

Jinak jak už jsem psal. Ty sice začínáš na "nejjednodušších" mikrokontrolérech, ale zároveň mrtě zastaralých. Na tvým místě bych se koukl po modernějších PIC8, AVR8, STM8 či NXP8 mcučkách, kde máš volně dostupný neomezený toolchain. Ten MPLAB je free, ale je to pomalá za*raná Java se zadrátovanými toolchainy v sobě.

Ještě k těm konstantám jenom ve Flashce...seš si tak jistej, že to kompiler dělá? Přečetl sis obsah datové paměti po spuštění programu?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Wolfik



Založen: Jul 28, 2009
Příspěvky: 1090

PříspěvekZaslal: pá prosinec 09 2016, 15:21    Předmět: Citovat

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



Založen: Feb 14, 2005
Příspěvky: 8977
Bydliště: Brno (JN89GF)

PříspěvekZaslal: pá prosinec 09 2016, 18:34    Předmět: Citovat

Když napíšu const int x=5; tak bude uložená jen v programové paměti. Mám to vyzkoušený tak, že se po kompilaci ani nehne velikost zabrané datové paměti.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
mtajovsky



Založen: Sep 19, 2007
Příspěvky: 3697
Bydliště: Praha

PříspěvekZaslal: pá prosinec 09 2016, 18:44    Předmět: Citovat

forbidden napsal(a):
GCC je nějakej free překladač?
Smile ano je to free, protože GCC znamená GNU Compiler Collection. Je šířen pod licencí GNU GPL a tudíž free, protože GNU's Not Unix.

Je to asi jeden z nejznámějších překladačů vůbec, zahrnuje velké množství platforem od MCU až po velké stroje od Sun a HP. Na platformách s Linux asi nejpoužívanější kompilátor. PICy neznám a tak mě trochu zaráží, že nejsou v jeho portfoliu. V každém případě, pro platformu Atmel, STM8, STM32 je k dispozici. A taky pro všechny dnes užívané Intely a AMD.

forbidden napsal(a):
Když napíšu const int x=5; tak bude uložená jen v programové paměti. Mám to vyzkoušený tak, že se po kompilaci ani nehne velikost zabrané datové paměti.
Protože je to definováno jako konstanta. Ovšem:

char* hello = "Hello";

bude ležet jak v kódové paměti tak v RAM, kam se dostane pomocí start-up kódu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
forbidden



Založen: Feb 14, 2005
Příspěvky: 8977
Bydliště: Brno (JN89GF)

PříspěvekZaslal: pá prosinec 09 2016, 19:06    Předmět: Citovat

To právě nebude.
char *hello="hello"; - pouze paměť programu
char hello2 []="hello"; - pameť programu i dat

Mám to ověřený tou kompilací, po přidání prvního se velikost obsazené paměti dat nezmění.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
lesana87



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

PříspěvekZaslal: pá prosinec 09 2016, 19:55    Předmět: Citovat

A jak ten PIC16F628A k tomu řetězci v programové paměti přistupuje?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mtajovsky



Založen: Sep 19, 2007
Příspěvky: 3697
Bydliště: Praha

PříspěvekZaslal: pá prosinec 09 2016, 19:55    Předmět: Citovat

Tak to musí mít XC8 nějakou vychytávku. Protože přístup na data v programové paměti jsou jiné instrukce, než přístup na data v RAM. Potom čtení takového řetězce by se muselo překládat jinak. Například

char* hello1 = "Hello";
char hello2[6] = "Hello";

bude u AVR pořád v RAM. Pokud chceme dostat data do kódové paměti, použije se pro gcc syntaxe:

char hello2[6] PROGMEM = "Hello";

a přístup je taky jiný:
pro RAM: char treti_znak = hello[3];

pro FLASH: char treti_znak = pgm_read_byte(hello + 3); což se přeloží na instrukci LPM (load program memory).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
forbidden



Založen: Feb 14, 2005
Příspěvky: 8977
Bydliště: Brno (JN89GF)

PříspěvekZaslal: pá prosinec 09 2016, 20:00    Předmět: Citovat

lesana87 napsal(a):
A jak ten PIC16F628A k tomu řetězci v programové paměti přistupuje?


Jen pro čtení samozřejmě.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
lesana87



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

PříspěvekZaslal: pá prosinec 09 2016, 20:01    Předmět: Citovat

Ale jak ho z té programové paměti čte?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
forbidden



Založen: Feb 14, 2005
Příspěvky: 8977
Bydliště: Brno (JN89GF)

PříspěvekZaslal: pá prosinec 09 2016, 20:09    Předmět: Citovat

To přesně nevím, nicméně já se v programu k té proměnné hello chovám stejně jak k hello2. Respektive já to zatím jen vypisoval na display pomocí printf (hello);
Hele, zatím s tím vším mám asi týden zkušeností, tak můžu být místy mimo. Very Happy
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
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
Jdi na stránku Předchozí  1, 2, 3  Další
Strana 2 z 3

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