Fórum témák

» Több friss téma
Fórum » Arduino
 
Témaindító: groening, idő: Szept 28, 2008
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   754 / 755
(#) Jonni hozzászólása Nov 19, 2022 /
 
Vannak esetek amikor elég lenne byte tipusú változót használni (pl pinek deklarálásában) de sokan az int -et használják. Szerintetek mikor érdemesebb inkább byte-ot használni? Mivel a byte csak 1 bájt az int meg kettő ezért számit-e pl a gyorsaság terén ? Mikor ajánlott és mikor nem byte-ot használni?
(#) tbarath válasza Jonni hozzászólására (») Nov 19, 2022 /
 
Ha Atmega chip-ekről beszélünk, akkor duplán is érdemes. Egyrészt 8 bites, tehát ez jól megy neki. Másrészt kevés bennük a memória, amiből minél kevesebbet használsz egy byte-nyi tartalomra, annál több marad másra.
(#) Jonni válasza tbarath hozzászólására (») Nov 19, 2022 /
 
Idézet:
„Ha Atmega chip-ekről beszélünk”

Van nekem jobb is (ARM®32-bit Cortex®-M4 CPU) de maradhatunk az atmegánál.
És milyen esetnél mondod azt , hogy inkább int mint byte?



(0 alatti értéknél és 255 feletti értéknél nem használható a byte )
(#) Josi777 válasza Jonni hozzászólására (») Nov 19, 2022 / 1
 
A Pin-ek deklarálásakor a változó nem fordul bele a kódba, az bármilyen lehet, semennyit nem fog elfoglalni a RAM-ból.
Az int valójában nem 2 byte, hanem változó méretű egész, csak az int default definíciója előjeles 2 byte-os.
Igen, számít a mérete a memória foglalásnál és a sebességnél is. A 8 bites aritmetika sokkal gyorsabb, mintha 16 bites számokkal kellene számolni. De szerintem nem fogod észrevenni a különbséget a programkód végrehajtásában.
(#) Jonni válasza Josi777 hozzászólására (») Nov 19, 2022 /
 
Köszi! És szerinted mikor nem érdemes byte változót használni?
(#) Josi777 válasza Jonni hozzászólására (») Nov 19, 2022 / 1
 
Amikor a 0-255 tartományon kívül eshet bármilyen számítási művelet. Pl. analogRead() 2 byte-os. De szerintem nem nagyon kell vele foglalkozni, a nagyobb hosszúságúként kell deklarálni. Az Arduino fordítója blokkokban kezeli a memória foglalást, a változók típusával eléggé nehéz optimalizálni.
Amúgy miért kérdezed, van valamilyen konkrét probléma, ami miatt optimalizálni kellene?
(#) Jonni válasza Josi777 hozzászólására (») Nov 19, 2022 /
 
Nincs konkrét probléma, csak arra törekszek, hogy a program is meg a hardver is minnél hatékonyabb legyen.



Azt hittem az int cseréje (már ahol lehet) byte-ra nagy változást hoz
(#) András123 hozzászólása Nov 19, 2022 /
 
Sziasztok ! Segítséget szeretnék kérni , egy CNC vel kapcsolatos arduinó projektem megoldásához. Nem tudom hogy mennyire ismeritek a MACH3 CNC vezérlő programot. Van ebben a programban egy lehetőség arra , hogy a MODBUS rendszer segítségével , külső vezérlő gombokat és egyéb kezelő egységeket csatlakoztathassunk egy Arduinó , analóg vagy digitális bemenetein keresztül szoftweresen a MACH 3 kezelőprogramhoz. Konkrétan azt szeretném elérni, hogy az Arduino A0 és A1 analóg lábához kötve 2 darab potméterrel vezérelhessem a CNC gép előtolási sebességét megmunkálás közben. Ugyanakkor szeretnék a D2 ,D3,D4 digitális lábaira nyomógombos kapcsolókat szerelni ,aminek a segítségével megállíthatnám vagy indíthatnám a megmunkálás folyamatát. Sikerült a netről letöltenem ,mások által megírt sketcheket, amivel mind a két művelet működik, de sajnos csak külön külön , eltérő MODBUS beállításokkal. A problémám az hogy az eltérő beállítások kellenek a MODBUS konfigurálásánál a potméteres feladathoz és a nyomógombos feladathoz. Azt szeretném elérni hogy az arduinóra egy olyan program legyen megírva ,ami ötvözi a két feladat működéséhez szükséges adatokat ,és azonos beállítást alkalmazhassak a MODBUS konfigurálásánál ahhoz , hogy a kétfajta feladat együtt működhessen. Nagyon örülnék ha valaki hozzá értő ebben segíteni tudna.
(#) Kera_Will válasza Jonni hozzászólására (») Nov 19, 2022 /
 
Idézet:
„(pl pinek deklarálásában)”

Idézet:
„számit-e pl a gyorsaság terén ?”


Ha számít a állapotváltozás gyorsasága kimeneti pinek esetében, akkor érdemesebb direkt, a port regisztereken keresztül elérni a portok bitjeit.
Nem a sima digitalwrite() függvénnyel.
Kb.:sokszorosan gyorsabb lesz digitalwrite: ~4usec , másik esetben ~64nanosec.
Van erről 1 tutorial is csak nem rémlik a linkje.
no közben megvan:

Arduino direkt port elérés

másik direkt port bit elérést bemutató oldal
A hozzászólás módosítva: Nov 19, 2022
(#) Kovidivi válasza 444Tibi hozzászólására (») Nov 19, 2022 /
 
Az a fő probléma, hogy úgy állítod be a kérdésed, mintha érdekelne a téma, és szeretnéd magadnak megcsinálni, majd utána kiderül, hogy valakit keresel, aki csokiért sörért ezt neked leprogramozza. Na erre van az apróhirdetés részleg! Ha soha sem peogramoztál, akkor ne vágj bele ebbe a projektbe. Ha simán ráraknál egy 7S BMS-t az akksipakkodra, és a kimenetét figyelnéd, vagy a kimeneti FET-eket meghajtó kis SMD félvezetőket, pontosan azt kapnád, ami neked kell. Túlfesz., túlmerítés védelem. Minek ide Arduino, hogy aztan kalibrálnod kelljen az ADC-t, meg feleslegesen fogyasszon? Ha analóg áramkörökkel jól boldogulsz, akkor seperc alatt átalakítasz egy 7S BMS-t, a csokit meg sört pedig eltudod fogyasztani, nem kell postáznod sem! Amúgy is túl sok lenne a postaköltsége egy tálca sörnek, meg szegény postásbácsi, gondoljunk rá is! Főleg, ha külföldre postáznád, még vámot is kellene fizetned.
A hozzászólás módosítva: Nov 19, 2022
(#) Jonni válasza Kera_Will hozzászólására (») Nov 20, 2022 /
 
Hi

Igazából a pinek deklarálását csak 1 példának szántam . Elolvastam a cikket de talán nem kell enyire túlbonyolitani a kódot.




Esetleg ha lessz olyan feladat ahol indokolt ott majd jó lessz
(#) mateatek válasza Jonni hozzászólására (») Nov 20, 2022 / 1
 
Itt van pár Arduino-s kód kiváltása. Kisebb lesz, gyorsabb és áttekinthető marad a kódod.

  1. // --- PIN MODE: OUTPUT  ---
  2.  
  3.   DDRD |= _BV (0); // pinMode (0, OUTPUT);
  4.   DDRD |= _BV (1); // pinMode (1, OUTPUT);
  5.   DDRD |= _BV (2); // pinMode (2, OUTPUT);
  6.   DDRD |= _BV (3); // pinMode (3, OUTPUT);
  7.   DDRD |= _BV (4); // pinMode (4, OUTPUT);
  8.   DDRD |= _BV (5); // pinMode (5, OUTPUT);
  9.   DDRD |= _BV (6); // pinMode (6, OUTPUT);
  10.   DDRD |= _BV (7); // pinMode (7, OUTPUT);
  11.   DDRB |= _BV (0); // pinMode (8, OUTPUT);
  12.   DDRB |= _BV (1); // pinMode (9, OUTPUT);
  13.   DDRB |= _BV (2); // pinMode (10, OUTPUT);
  14.   DDRB |= _BV (3); // pinMode (11, OUTPUT);
  15.   DDRB |= _BV (4); // pinMode (12, OUTPUT);
  16.   DDRB |= _BV (5); // pinMode (13, OUTPUT);
  17.   DDRC |= _BV (0); // pinMode (A0, OUTPUT);
  18.   DDRC |= _BV (1); // pinMode (A1, OUTPUT);
  19.   DDRC |= _BV (2); // pinMode (A2, OUTPUT);
  20.   DDRC |= _BV (3); // pinMode (A3, OUTPUT);
  21.   DDRC |= _BV (4); // pinMode (A4, OUTPUT);
  22.   DDRC |= _BV (5); // pinMode (A5, OUTPUT);
  23.  
  24. // --- PIN MODE: INPUT  ---
  25.  
  26.   DDRD &= ~_BV (0); // pinMode (0, INPUT);
  27.   DDRD &= ~_BV (1); // pinMode (1, INPUT);
  28.   DDRD &= ~_BV (2); // pinMode (2, INPUT);
  29.   DDRD &= ~_BV (3); // pinMode (3, INPUT);
  30.   DDRD &= ~_BV (4); // pinMode (4, INPUT);
  31.   DDRD &= ~_BV (5); // pinMode (5, INPUT);
  32.   DDRD &= ~_BV (6); // pinMode (6, INPUT);
  33.   DDRD &= ~_BV (7); // pinMode (7, INPUT);
  34.   DDRB &= ~_BV (0); // pinMode (8, INPUT);
  35.   DDRB &= ~_BV (1); // pinMode (9, INPUT);
  36.   DDRB &= ~_BV (2); // pinMode (10, INPUT);
  37.   DDRB &= ~_BV (3); // pinMode (11, INPUT);
  38.   DDRB &= ~_BV (4); // pinMode (12, INPUT);
  39.   DDRB &= ~_BV (5); // pinMode (13, INPUT);
  40.   DDRC &= ~_BV (0); // pinMode (A0, INPUT);
  41.   DDRC &= ~_BV (1); // pinMode (A1, INPUT);
  42.   DDRC &= ~_BV (2); // pinMode (A2, INPUT);
  43.   DDRC &= ~_BV (3); // pinMode (A3, INPUT);
  44.   DDRC &= ~_BV (4); // pinMode (A4, INPUT);
  45.   DDRC &= ~_BV (5); // pinMode (A5, INPUT);
  46.  
  47. // --- DIGITAL WRITE: HIGH  ---
  48.  
  49.   PORTD |= _BV (0); // digitalWrite (0, HIGH);
  50.   PORTD |= _BV (1); // digitalWrite (1, HIGH);
  51.   PORTD |= _BV (2); // digitalWrite (2, HIGH);
  52.   PORTD |= _BV (3); // digitalWrite (3, HIGH);
  53.   PORTD |= _BV (4); // digitalWrite (4, HIGH);
  54.   PORTD |= _BV (5); // digitalWrite (5, HIGH);
  55.   PORTD |= _BV (6); // digitalWrite (6, HIGH);
  56.   PORTD |= _BV (7); // digitalWrite (7, HIGH);
  57.   PORTB |= _BV (0); // digitalWrite (8, HIGH);
  58.   PORTB |= _BV (1); // digitalWrite (9, HIGH);
  59.   PORTB |= _BV (2); // digitalWrite (10, HIGH);
  60.   PORTB |= _BV (3); // digitalWrite (11, HIGH);
  61.   PORTB |= _BV (4); // digitalWrite (12, HIGH);
  62.   PORTB |= _BV (5); // digitalWrite (13, HIGH);
  63.   PORTC |= _BV (0); // digitalWrite (A0, HIGH);
  64.   PORTC |= _BV (1); // digitalWrite (A1, HIGH);
  65.   PORTC |= _BV (2); // digitalWrite (A2, HIGH);
  66.   PORTC |= _BV (3); // digitalWrite (A3, HIGH);
  67.   PORTC |= _BV (4); // digitalWrite (A4, HIGH);
  68.   PORTC |= _BV (5); // digitalWrite (A5, HIGH);
  69.  
  70. // --- DIGITAL WRITE: LOW  ---
  71.  
  72.   PORTD &= ~_BV (0); // digitalWrite (0, LOW);
  73.   PORTD &= ~_BV (1); // digitalWrite (1, LOW);
  74.   PORTD &= ~_BV (2); // digitalWrite (2, LOW);
  75.   PORTD &= ~_BV (3); // digitalWrite (3, LOW);
  76.   PORTD &= ~_BV (4); // digitalWrite (4, LOW);
  77.   PORTD &= ~_BV (5); // digitalWrite (5, LOW);
  78.   PORTD &= ~_BV (6); // digitalWrite (6, LOW);
  79.   PORTD &= ~_BV (7); // digitalWrite (7, LOW);
  80.   PORTB &= ~_BV (0); // digitalWrite (8, LOW);
  81.   PORTB &= ~_BV (1); // digitalWrite (9, LOW);
  82.   PORTB &= ~_BV (2); // digitalWrite (10, LOW);
  83.   PORTB &= ~_BV (3); // digitalWrite (11, LOW);
  84.   PORTB &= ~_BV (4); // digitalWrite (12, LOW);
  85.   PORTB &= ~_BV (5); // digitalWrite (13, LOW);
  86.   PORTC &= ~_BV (0); // digitalWrite (A0, LOW);
  87.   PORTC &= ~_BV (1); // digitalWrite (A1, LOW);
  88.   PORTC &= ~_BV (2); // digitalWrite (A2, LOW);
  89.   PORTC &= ~_BV (3); // digitalWrite (A3, LOW);
  90.   PORTC &= ~_BV (4); // digitalWrite (A4, LOW);
  91.   PORTC &= ~_BV (5); // digitalWrite (A5, LOW);
  92.  
  93. // --- DIGITAL READ  ---
  94.  
  95.   x = (PIND & _BV (0)) == 0; // digitalRead (0);
  96.   x = (PIND & _BV (1)) == 0; // digitalRead (1);
  97.   x = (PIND & _BV (2)) == 0; // digitalRead (2);
  98.   x = (PIND & _BV (3)) == 0; // digitalRead (3);
  99.   x = (PIND & _BV (4)) == 0; // digitalRead (4);
  100.   x = (PIND & _BV (5)) == 0; // digitalRead (5);
  101.   x = (PIND & _BV (6)) == 0; // digitalRead (6);
  102.   x = (PIND & _BV (7)) == 0; // digitalRead (7);
  103.   x = (PINB & _BV (0)) == 0; // digitalRead (8);
  104.   x = (PINB & _BV (1)) == 0; // digitalRead (9);
  105.   x = (PINB & _BV (2)) == 0; // digitalRead (10);
  106.   x = (PINB & _BV (3)) == 0; // digitalRead (11);
  107.   x = (PINB & _BV (4)) == 0; // digitalRead (12);
  108.   x = (PINB & _BV (5)) == 0; // digitalRead (13);
  109.   x = (PINC & _BV (0)) == 0; // digitalRead (A0);
  110.   x = (PINC & _BV (1)) == 0; // digitalRead (A1);
  111.   x = (PINC & _BV (2)) == 0; // digitalRead (A2);
  112.   x = (PINC & _BV (3)) == 0; // digitalRead (A3);
  113.   x = (PINC & _BV (4)) == 0; // digitalRead (A4);
  114.   x = (PINC & _BV (5)) == 0; // digitalRead (A5);
A hozzászólás módosítva: Nov 20, 2022
(#) Jonni válasza mateatek hozzászólására (») Nov 20, 2022 /
 
Ahha... Azt megirnád , hogy pl a blink hogy nézne ki ha ezekkel lenne kihelyetesitve?
(#) proba válasza Jonni hozzászólására (») Nov 20, 2022 /
 
Miért?
setup

DDRB |= _BV (5);

loop

{
delay(xx)
PORTB &= ~_BV (5);
delay(xx)
PORTB |= _BV (5);
}
A hozzászólás módosítva: Nov 20, 2022
(#) Jonni válasza proba hozzászólására (») Nov 20, 2022 /
 
Na ezt kipróbálom majd.
(#) mateatek válasza Jonni hozzászólására (») Nov 20, 2022 /
 
Azt is megnézheted, hogy proba által küldött kód mekkora, és az eredeti, Arduino-s. Lesz különbség.
(#) dragon073 hozzászólása Nov 20, 2022 /
 
Kedves Tagok!
Szeretnék segítséget kérni , esp8266(esp-01) 2 db ds18b20 szenzor adatait kellene elküldenem a thingspeak oldalra , 1 db ot sikerült összehoznom, nem vagyok programozó és igazából nem is értek hozzá!
Így ez a feladat is elég nagy kihívás volt számomra ,
Nincs valakinek ehez megfelelő kapcsolási rajza és programja ?
Nem lennék hálátlan , nagyon megköszönném .
A napkollektorom hőmérsékleteit kellene megfigyeni mivel nem tarózkodunk ott ahol a kollektor van.
Hálás lennék ha valaki tudna ebben segíteni nekem .
Köszönettel
Gábor
Mod: ***** email cím törlve.
A hozzászólás módosítva: Nov 20, 2022
Moderátor által szerkesztve
(#) Jonni válasza dragon073 hozzászólására (») Nov 20, 2022 /
 
Hello

Itt van egy részlets leirás arról amit akarsz , ott van a source kód is , annyi különbséggel hogy ő nem a thingspeak oldalra küldi az adatot hanem ha jól látom Web Serverre. Ha csak 2 dallas sensort kapcsolsz hozzá akkor 1-es láb =GND, 2-es láb= dataout, 3-as láb = +5V vagy +3.3V-al is elmegy. Majd a 2-es és 3-as láb kőzé kötsz egy 4,7K ellenállást, majd mindkét szenzor 2-es lábát bekötöd az esp D2-es lábára de ez is le van irva az oldalon.

Idézet:
„1 db ot sikerült összehoznom,”

Miből? Hogy?
(#) dragon073 válasza Jonni hozzászólására (») Nov 20, 2022 /
 
Köszönöm szépen a választ
1 db ot sikerült összehoznom ami 1 szenzort kezel :
dataout az esp-01 GPIO2 es lábán van
(#) tbarath válasza Jonni hozzászólására (») Nov 20, 2022 /
 
Idézet:
„Azt hittem az int cseréje (már ahol lehet) byte-ra nagy változást hoz”

Nagyot nem, de sokszor csak egy kicsin múlik az, hogy valami már pont jó, vagy még pont nem jó. Az adott uC adatlapján szinte biztosan megtalálod, hogy hány órajel alatt végez el adott változóval adott műveletet, de többszörös különbség is elhanyagolható, ha pármillió órajelenként végzel el pár ilyen műveletet.
(#) Jonni válasza dragon073 hozzászólására (») Nov 20, 2022 /
 
És ezzel kóddal müködik?
(#) dragon073 válasza Jonni hozzászólására (») Nov 20, 2022 /
 
Igen ,ezzel 1 db ds18b20 működik
de sajna nekem 2 hőérzékelő kell
(#) Jonni válasza dragon073 hozzászólására (») Nov 20, 2022 / 1
 
Az oldalon igy használnak több szenzort egyszerre



Használod agetDeviceCount()módszer a DS18B20 érzékelők számának lekérésére az adatsorban.

numberOfDevices = sensors.getDeviceCount();
AzgetAddress()módszer megkeresi az érzékelők címét:

if(sensors.getAddress(tempDeviceAddress, i)){
A cím minden érzékelő esetében egyedi. Így minden érzékelő azonosítható a címe alapján.

Ezután használja agetTempC()metódus, amely argumentumként elfogadja az eszköz címét. Ezzel a módszerrel megkaphatja a hőmérsékletet egy adott érzékelőtől:

float tempC = sensors.getTempC(tempDeviceAddress);
A hőmérséklet Fahrenheit-fokban történő meghatározásához használhatja agetTemF(). Alternatív megoldásként átválthatja a Celsius-fokozatban mért hőmérsékletet Fahrenheit-re a következőképpen:

DallasTemperature::toFahrenheit(tempC)
(#) Massawa válasza dragon073 hozzászólására (») Nov 20, 2022 / 1
 
Valoszinü a ds18b20-s mintaprogramját használod ( ahogy Jonni is ajánlotta), az mindegyik DS-t egymás után olvassa le ( általában tempC-be van a hömérséklet.)
Neked ezt át kell irnod, hogy a megfelelö DS IDhez tartozo hömérsékletet külön változokba mentse el, azaz legyen temp0 meg temp1.
Akkor egyszerre lesz jelen mindkét hömérséklet és lehet öket küldeni ahova akarod.
A hozzászólás módosítva: Nov 20, 2022
(#) Massawa válasza Massawa hozzászólására (») Nov 20, 2022 /
 
Ket ilyen sort kell beillesztened a Dallasba

Temp0=sensors.getTempCByIndex(0);
Temp1=sensors.getTempCByIndex(1);
(#) asch válasza Jonni hozzászólására (») Nov 21, 2022 / 1
 
> Azt hittem az int cseréje (már ahol lehet) byte-ra nagy változást hoz
Az adott változóval végrehajtott utasítások valóban legalább kétszer gyorsabbak lesznek, azonban a legtöbb esetben ez alig számít. Akkor kezd el számítani, amikor a feladat megközelíti az adott kontroller képességeinek a határait. A legtöbb programban a kontroller az idő 99%-ban várakozik valamilyen eseményre és teljesen lényegtelen a program teljesítménye. A jó programozó tudja, hogy mikor számít mégis a teljesítmény és akkor minden optimalizációt meg tud tenni. Ezért nem haszontalan ismerni, hogy milyen ASM kódra fordul le ami programot írsz, és annak milyen a futás idejű időzítése.
Érdemes az stdint.h-ban definiált típusokat használni: int8_t, uint8_t, int16_t, uint16_t, int32_t stb.: ennek az az előnye, hogy minden platformon pontosan ugyanakkora a tárolási egység, és pontosan ugyanúgy fog működni függetlenül attól, hogy 8 bites, vagy 32 bites mikrovezérlőre fordítod-e le a programodat. Ezeken a típusokon belül pedig én a legszűkebbet szoktam választani ami ábrázolni tud mindent amire szükségem van. Első szempont, hogy helyes legyen a program és a második, hogy hatékony.
(#) Jonni válasza asch hozzászólására (») Nov 21, 2022 /
 
Köszi

Idézet:
„Akkor kezd el számítani, amikor a feladat megközelíti az adott kontroller képességeinek a határait.”

Itt a Flash tárterületére gondolsz?

Idézet:
„Érdemes az stdint.h-ban definiált típusokat használni: int8_t, uint8_t, int16_t, uint16_t, int32_t stb.:”


Erre tudnál egy rővid példát irni?
(#) sargarigo válasza Jonni hozzászólására (») Nov 21, 2022 / 2
 
Szerintem inkább arra gondolt, amikor realtime videójelet renderelsz, és számít minden egyes órajel
(#) asch válasza Jonni hozzászólására (») Nov 22, 2022 / 1
 
Idézet:
„Itt a Flash tárterületére gondolsz?”

Program tárterületre, RAM-ra és futásidőre is. Mindig arra kell optimalizálni, ami elfogy.
Idézet:
„Erre tudnál egy rővid példát irni?”

Például ebben a topikban fentebb írtam egy példát, ami időbélyegekkel számol, ott az uint32_t van unsigned long helyett használva: https://www.hobbielektronika.hu/forum/topic_post_2526582.html#2526582
Annak a megoldása, hogy egy program minden fordítóval fordítva pontosan ugyanúgy működjön sajnos ennél összetettebb probléma, a platformfüggetlen típusok használata önmagában nem oldja meg. Programozok professzionálisan is mikrovezérlőre, és ott a MISRA-C szabványt használjuk. Ez egy olyan szabálykészlet, amit betarva a programkód bármilyen C fordítóval fordítva pontosan ugyanúgy fog működni. Egyszerűnek hangzik, de sajnos egyáltalán nem triviális ezt elérni, a MISRA szabvány maga sokszor tíz oldal és nem triviális megérteni sem. Szerencsére automatikus ellenőrzők vannak, amik betartatják, mert szabad szemmel könnyű benézni. Az alap probléma az, hogy amikor a C nyelvet tervezték, akkor még másképpen gondolkodtak, nem ez volt fontos, és emiatt a C szabvány tele van kellemetlen megoldásokkal. Például az előjeles számok átfordulása nem specifikált, akármit adhat. Ezt a legtöbben nem is tudják, nekem is mellbevágó volt amikor először hallottam, annyira triviális, hogy a 32767 után a -32768 jön. De sajnos ez minden általam ismert platformon így van, de a szabvány szerint meg nem.
A fentebbi linkelt hozzászólásomba írt példa például szerintem nem felel meg a MISRA-C-nek, mert egy kifejezésben keveredik egy előjeles és az előjel nélküli érték. Explicit castolni kellene a millis() értékét előjel nélkülire.

Az Arduino mivel C++ alapú, ezért örökli ezeket a problémákat. Eleve az Arduino könyvtári függvények a platfromfüggő típusokkal vannak megadva, ami nagyon gagyi. Példa: https://www.arduino.cc/reference/en/language/functions/time/millis/ ugye unsigned long van megadva típusnak. Utána le is van írva, hogy kb 50 naponta körbefordul. De azt már nem írja le, hogy ha egy platformon 64 bit az unsigned long, akkor mit kell ennek a számlálónak csinálni? Pláne, hogy 32 bites vezérlőkre is van Arduino, ahol szerintem az int már 32 bites, a long pedig 64 bites szokott lenni. Szerencsére csak ATMEGÁn Arduinoztam eddig, úgyhogy nem is kell tudnom hogy mi ennek a problémának a megoldása.
(#) Gafly válasza asch hozzászólására (») Nov 22, 2022 / 1
 
Igazad van.
Profi környezetben illik adni SoC-ot (Statement of Compliance), hogy melyik szabvány melyik verziójával kompatibilis. Ja, meg az összes felhasznált free and open source szoftvert is illik verzió szerint nevesítve felsorolni, beleértve a copyright szöveget is.
Idézet:
„8) Portable OpenSSH contains the following additional licenses:

a) md5crypt.c, md5crypt.h

"THE BEER-WARE LICENSE" (Revision 42):
<phk@login.dknet.dk> wrote this file. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp”
A hozzászólás módosítva: Nov 22, 2022
Következő: »»   754 / 755
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem