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í

 
Programování uC Microchip v C
Jdi na stránku Předchozí  1, 2, 3 ... 11, 12, 13
 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip
 
Mahoney
Profesionál
Profesionál


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

PříspěvekZaslal: 29 srpen 2018, 15:11    Předmět: Citovat

Tak samozřejmě že jsem si dělal hlavně legraci, nesmíš to hned brát tak vážně. Navíc tu nikdo nepopírá ani nijak nezpochybňuje že to byli machři, kteří dokázali za pomocí (na dnešní poměry dost omezeného) hardware i software a i jinak za dost omezených možností (například pohony, nosiče atd atd) předvádět neskutečné kousky (někdy i improvizační) a vytřískat z toho všeho doslova co se dalo.

Jinak pár zajímavostí, když už to tedy pitváme: Sondy sice mají malou RAM, ale mají magnetopáskovou jednotku, takže data si pro následné zpracování kam odkládat mají. Nikde jsem se nedočetl* rozlišení kamer, ale je třeba si uvědomit, že v té době to tak jako tak nebylo a ani nemohlo být "kdovíco" (samozřejmě také ve srovnání s dnešními poměry, tehdy to samozřejmě bylo to nejlepší co měli a tudíž velký pokrok, vždyť předtím se fotilo i ve vesmíru na filmy, s jejichž zpětnými návraty a vyzvedáváním byly samozřejmě neskutečné potíže).

Další věc je, že sondy toho dneska už moc nedělají, protože jednak za hranicemi sluneční soustavy v mezihvězdném prostoru víceméně nemají co (jen měření záření, některých částic a magnetického pole, kamery už k focení nepoužívají), a jednak s energií už na tom taky nejsou tak dobře jako byly na počátku misí, takže ani nemají dost energie pro všechny doposud provozuschopné přístroje. Další věcí je že komunikační prodleva je obrovská, například v roce 2011 byla u Voyageru 1 16,5 hodiny - na příjem dat to tolik nevadí, ale na zadávání nějakých povelů (nebo přímo přeprogramování) je to prodleva doslova šílená (x2, nejdřív tam a pak ještě zpátky) - nechtěl bych, děkuju pěkně.

https://voyager.jpl.nasa.gov/mission/status/

A navíc - Microchip C a MCU na tom stejně nepoužívají a nemají, takže jsme tak jako tak offtopic Wink
________________________________________
* Už jsem se ho dočetl - 800x800, tj. teoretických 0,64 Mpix max., ovšem nejsou to kamery ve smyslu, v jakém je známe dnes, jsou tvořeny fotodiodami, pohyblivými zrcadly a příslušnou optikou.

https://physics.stackexchange.com/questions/25005/cameras-in-voyager-probes
https://theskylive.com/voyager1-tracker
https://en.wikipedia.org/wiki/Voyager_1
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Martin
ATmega pouzivatel
ATmega pouzivatel


Založen: 5.1.2008
Příspěvky: 1520

PříspěvekZaslal: 21 září 2018, 4:28    Předmět: Citovat

Ďakujem za spresnenie Smile
Inak aj tak, magnetopásková pamäť na data - po 40 rokoch - nemám už poriadne funkčnú kazetu na ZX Spectrum ani po rokoch dvadsiatich Smile
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: 323
Bydliště: OLOMOUC - BRNO

PříspěvekZaslal: 09 říjen 2019, 14:02    Předmět: Citovat

Ahoj,

byl by mi někdo schopný vysvětlit jaký je rozdíl mezi tímto:
kód:

uint8_t dispNo;
uint8_t menChoice;

dispNo = menChoice + 1U;

a tímto:

kód:

uint8_t dispNo;
uint8_t menChoice;

dispNo = menChoice + 1;  // Bez toho U?




Dodělávám do kódu věci po jiném borcovi a ten tam stěma jednotkama U a UL dost kouzlí a vůbec mi to není jasné.

Pak se tam vyskytuje ještě jeden typ kouzla

kód:

#define CLEAR_COLOR_RGB(red,green,blue) ((2UL<<24)|(((red)&255UL)<<16)|(((green)&255UL)<<8)|(((blue)&255UL)<<0))

//Samotna funkce se pak vola s timto parametrem
EVE_Write32(CLEAR_COLOR_RGB(R,G,B));

Co je to za definici? Z toho vůbec nechápu, dokázal by mi to někdo zhruba prosím vysvětlit?
Děkuji

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

 
MiloPS3
Profesionál
Profesionál


Založen: 24.12.2008
Příspěvky: 899
Bydliště: LAZNE KYNZVART

PříspěvekZaslal: 09 říjen 2019, 16:37    Předmět: Citovat

Cau, mozna U- unsigned UL-unsigned long ? Treba,tohle vydim po1
Posledni je makro, neco jako kdyz si definujes I/O pin LED a pak to pouzivas misto porta.1

_________________
PIC,ASM / C , Mplab + CCS C Compiler
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Billy Bob Bean
Profesionál
Profesionál


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

PříspěvekZaslal: 10 říjen 2019, 7:27    Předmět: Citovat

UL určitě není Unsigned Long. Borec to v programu používá za různýma číslama, převážně v #define header souborů.
#define vSize 0x1256UL // například...

Co dělá #define mi je jasné, ale už mi není jasné co má dělat za define něčeho
kód:
((2UL<<24)|(((red)&255UL)<<16)|(((green)&255UL)<<8)|(((blue)&255UL)<<0))

Asi budu muset ty definice trochu rozdráždit a podívat se co se mění...

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

 
MiloPS3
Profesionál
Profesionál


Založen: 24.12.2008
Příspěvky: 899
Bydliště: LAZNE KYNZVART

PříspěvekZaslal: 10 říjen 2019, 9:08    Předmět: Citovat

suffix
https://en.cppreference.com/w/cpp/language/integer_literal
https://www.geeksforgeeks.org/integer-literal-in-c-cpp-prefixes-suffixes/

_________________
PIC,ASM / C , Mplab + CCS C Compiler
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Billy Bob Bean
Profesionál
Profesionál


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

PříspěvekZaslal: 16 říjen 2019, 8:06    Předmět: Citovat

Díky, nevěděl jsem, že se to jmenuje suffix.
Takže zrovna v té definici co jsem tam hodil, tak se využívá poskládání těch suffixů pro vytvoření celé proměnné, resp. hodnoty co se přiřadí v #define.
Asi bych to řešil trochu jinak a jednodušeji pro mě. Very Happy

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

 
Martin
ATmega pouzivatel
ATmega pouzivatel


Založen: 5.1.2008
Příspěvky: 1520

PříspěvekZaslal: 16 říjen 2019, 10:44    Předmět: Citovat

Ono to má veľký zmysel.

Prekladaču sa povie, ako má tú premennú uložiť do pamäte (koľko bajtov má na ňu vyhradiť) a akým mechanizmom ju má ďalej používať.
Lebo hodnotu 1 by mohol uložiť (zdanlivo logicky) do jedného bajtu. Avšak jazyk C môže vo všeobecnosti preložiť program vrátane konštánt, ktorý je celý pri jeho behu uložený v RAM. A to je najčastejší prípad.
A tam už môže hrať zarovnanie napríklad na 4B veľký význam. Alebo pri samomodifikujúcich sa programoch (čo som sa ich voľakedy napísal pre Z80 Smile ) si môžem chcieť do miesta, kde je po preklade uložená nejaká konštanta (napríklad tá jednička) zapísať inú konštatnu, napríklad -4572198. Ako by mal prekladač bez použitia suffixu vedieť, ako má nakladať s hodnotou uloženou na danom mieste v pamäti a hlavne odkiaľ by mal vedieť, aká je tá konštatna bajtovo dlhá?

Takže zmysel suffixov pri konštatnách rozhodne je. Otázne je, či má dané nastavenie zmysel v Tvojom konkrétnom prípade. To už ale neskúmam Smile
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: 323
Bydliště: OLOMOUC - BRNO

PříspěvekZaslal: 16 říjen 2019, 12:15    Předmět: Citovat

Martin: Rozumím. Dá se pak takhle kouzlit a překladač tu proměnnou poskládá při překladu.
Já bych místo použití #define, jehož konstantu za mě poskládá překladač jednoduše zavolal funkci o 3 parametrech a pospojoval si ty vstupní proměnné ručně procesorově dokupy.
Nic proti ničemu, ale můj postup bere víc paměti a výkonu.

_________________
Stavím UPSky
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: 323
Bydliště: OLOMOUC - BRNO

PříspěvekZaslal: 22 říjen 2019, 10:16    Předmět: Citovat

Ještě mám další trochu komplikovanější dotaz, který je nad mé síly a dost dobře nechápu proč to kompilátor po mě chce takhle.

Mám velkej kus kódu kterej dělá API pro obsluhu FT800 s LCD.

Text se do toho posílá funkcí
kód:
API_CMD_TEXT(scrRows[lineIdx].x, scrRows[lineIdx].y, 14, 0, scrRows[lineIdx].lineStr);


scrRows[] je pole o 11 položkách podle počtu řádku, ale to zároveň struktura pojmenovaná jako aLine
kód:

typedef struct linet
{
   int16_t x;    //X position of text
   int16_t y;    //Y position of text
   char lineStr[30];   //Text string
}aLine;


Zdrojový data pro to co se má zobrazit na LCD pak jsou zadefinovaný takto:

kód:

static const aLine M9_L1 = {15, 120, "Text on LCD"};    //X position, Y position, Text

// pak vlastně co chci napsat tak stačí jen zkopírovat kvůli většímu množství různých textů ze struktury do struktury

scrRows[0] = M9_L1;   //Prekopirovani toho co chci zobrazit
API_CMD_TEXT(scrRows[0].x, scrRows[0].y, scrRows[0].lineStr);


Toto všechno funguje suprově, ale je to jako konstanta ve Flash paměti což já u některých věcí nepotřebuju. Potřebuju dynamicky měnit text a měnit jeho pozici. TAkže zkouším to zadefinovat jen jako
kód:
aLine M9_L1 = {Xpos, Ypos, "Text on LCD"};

A tady narážím na to, že kompilátor XC8 hlásí "Constant expression required"

Já s těma strukturama nemám vůbec zkušenosti a nepoužívám to. Teď musím a nemám tušení která bije.
Úplně ideálně bych potřeboval zobrazitelný text nasměrovat pointerem na pole se znakama, který budu pak dál měnit.
Naprd je, že do téhle knihovny nemůžu hrabat a musím ji použít jak je. Pak bych si to přepsal pro mě stravitelným způsobem.

Děkuji za radu, ztrácím se v tom.

_________________
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: 151

PříspěvekZaslal: 22 říjen 2019, 11:03    Předmět: Citovat

Na jakým PICu, má dost RAMky? Celej log z kompilace by nešel přiložit? To API pro FT800 se dá někde najít abychom se mohli mrknout, co vlastně očekává?
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: 323
Bydliště: OLOMOUC - BRNO

PříspěvekZaslal: 22 říjen 2019, 11:59    Předmět: Citovat

API sem hodit nemůžu komplet. Jen nějaký části by asi šly. To api je pak dál už v pohodě, teď se dívám, že nevím jak to funguje. Api očekává 5 parametrů a já jsem tam nakopíroval z jiné hotové části programu jen 3...


kód:
void API_CMD_TEXT(int16_t x, int16_t y, int16_t font, uint16_t options, const char* string)


Ono je právěže úplně na chuja toto. Já nahrazuju programátora z USA a ten není moc sdílnej, takže pomalu ten program louskám Confused

Běhá to na PIC18F87K90. RAMky mám zabrané jenom 38% v tom by problém být neměl.

Teď se dívám, že přímo v deklaraci funkce je pointer na text jako const.

Pak se někde používá:
kód:
API_CMD_TEXT(120,80,18,0,"Text na LCD");


Chybová hláška komplet
kód:

make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'C:/Projects/Microchip/Logger1245C.X'
make  -f nbproject/Makefile-default.mk dist/default/production/Logger1245C.X.production.hex
make[2]: Entering directory 'C:/Projects/Microchip/Logger1245C.X'
"C:\Program Files (x86)\Microchip\xc8\v2.05\bin\xc8-cc.exe"  -mcpu=18F87K90 -c  -fshort-double -fshort-float -memi=wordwrite -O1 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=default  -msummary=-psect,-class,+mem,-hex,-file  -ginhx032 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits   -std=c90 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o build/default/production/MenuMgr.p1 MenuMgr.c
"C:\Program Files (x86)\Microchip\xc8\v2.05\bin\xc8-cc.exe"  -mcpu=18F87K90 -c  -fshort-double -fshort-float -memi=wordwrite -O1 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=default  -msummary=-psect,-class,+mem,-hex,-file  -ginhx032 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits   -std=c90 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o build/default/production/FT800API.p1 FT800API.c
"C:\Program Files (x86)\Microchip\xc8\v2.05\bin\xc8-cc.exe"  -mcpu=18F87K90 -c  -fshort-double -fshort-float -memi=wordwrite -O1 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=default  -msummary=-psect,-class,+mem,-hex,-file  -ginhx032 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits   -std=c90 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o build/default/production/FT800.p1 FT800.c
"C:\Program Files (x86)\Microchip\xc8\v2.05\bin\xc8-cc.exe"  -mcpu=18F87K90 -c  -fshort-double -fshort-float -memi=wordwrite -O1 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=default  -msummary=-psect,-class,+mem,-hex,-file  -ginhx032 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits   -std=c90 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o build/default/production/Flash.p1 Flash.c
make[2]: *** [build/default/production/MenuMgr.p1] Error 1
make[2]: *** Waiting for unfinished jobs....
MenuMgr.c:148:20: error: (188) constant expression required
MenuMgr.c:148:26: error: (188) constant expression required
(908) exit status = 1
nbproject/Makefile-default.mk:179: recipe for target 'build/default/production/MenuMgr.p1' failed
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
make[2]: Leaving directory 'C:/Projects/Microchip/Logger1245C.X'
nbproject/Makefile-default.mk:91: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Projects/Microchip/Logger1245C.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

BUILD FAILED (exit value 2, total time: 723ms)


No takže asi zkusím sjednostit výpis textů přes ty struktury a doplním struktury na stejný počet položek jak očekává funkce API_CMD_TEXT...

_________________
Stavím UPSky
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 -> Microchip Časy uváděny v GMT + 2 hodiny
Jdi na stránku Předchozí  1, 2, 3 ... 11, 12, 13
 
Strana 13 z 13
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)