Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Tudtommal Arduino-hoz nem kell feltétlen programozó, hogy kiolvasd, a "szokásos" USB-Serial átalakítóval is ki lehet olvasni. Tudtommal az Arduino Nano-ra rá van alapból építve ez az USB-serial átalakító, ezt éred el PC-ről, ha rádugod az USB-jét PC-re.
Elvileg ez a parancs működik (a -P után platformodtól függően azt a portot kell beírni, amin keresztül az Arduino látszik, pl COM1, COM2... /dev/ttyACM0, stb.):
vargham válaszához képest az a különbség, hogy ehhez nem kell plusz hardvert építened. Ha nagyon nem akarod elveszíteni a programot, akkor én ezt először egy másik ugyanolyan hardveren próbálnám ki, nehogy hibás paraméterezéssel felülírd pont amit ki akarsz olvasni... Még egy kiegészítés: ez akkor működik, ha az Arduinón a standard bootloader fenn van. Ezt is felülírhatta aki a terméket csinálta. Szerk.: a programtól függően előfordulhat, hogy az Eprom tartalmát is menteni kell, hogy visszaálljon az eredeti működés. Illetve akkor már a FUSE biteket is a teljesség kedvéért. Ez az összes nem felejtő állapottároló a csippen ismereteim szerint, ezek teljes mentése teljes backupnak számít. A hozzászólás módosítva: Nov 3, 2021
Sziasztok!
Segítségeteket szeretném kérni. Van egy 7 col-os kijelzőm Link amin képet szeretnék megjeleníteni SD kártyáról olvasva, ezzel nincs is semmi gond mert a kép megjelenik, viszont a kép pozícióját nem tudom változtatni, hiába írom át a "bmpDraw("helpnagy.bmp", 100, 100);" számokat, a kép mindig a bal felső sarokban jelenik meg. Tudnátok segíteni a probléma magoldásában?
A hozzászólás módosítva: Nov 8, 2021
A 172, 186 és 194 sorokat írd át erre:
Köszi szépen, működik
Azért le kellene ellenőrizni, hogy mi történik olyankor ha, az eltolások miatt a BMP területe túl nyúl a TFT területén?
Mert igy arra a területre is rajzolna a program. Ha ez zavaró? Akkor be lehet tenni ellenőrzést, minden rajzolás elé pl.:
A hozzászólás módosítva: Nov 9, 2021
Tényleg ki kellene próbálni, de szerintem ezt hardveresen megoldja. Nem hiszem hogy bajt csinál vele..
Le van az is kezelve, ha figyelmesen megnézed.
93. Sor ha teljesen kivül esne, akkor nem csinál semmit. 145-146 sor, ha részben kilógna, akkor csak a kepernyő területere eső részre mennek a ciklusok.
Igazad van!
Sziasztok!
Túlcsordulást szeretnék vizsgálni. Valahogy ki szeretném zárni, hogy egy változó értéke túlcsordulás esetén ellentétes előjelbe menjen át! Már az is segítene, ha valahogy gyorsan egyszerűen tudnám vizsgálni egy számról (long vagy int), hogy milyen az előjele, mert ha változott, akkor visszaállítanám az előjeltől függően max vagy min értékre. Segítségeteket köszönöm!
A hozzászólás módosítva: Nov 10, 2021
Nem teljesen értem. Ha előjeles dologról beszélünk, akkor egy sima if-fel vizsgálod, hogy kisebb-e mint 0, és ha igen, akkor beállítod a default értékét.
Bár célszerű lehet a túlcsordulást inkább megelőzni...
Teljesen igazad van, de bitet szerettem volna vizsgálni, amennyiben lehetséges, szerintem úgy gyorsabb lehetek. Körülbelül csak annyi kellene nekem, hogy hogyan tudnám mondjuk egy intnél az előjelbitet vizsgálni...
Tehát betenném az előjelbitet egy változóba, és azt vizsgálnám, hogy nem egyenlő, ezzel nem kellene kisebb nagyobb műveletekkel dolgoznom, else ágra menne stb...
Csak arra nincs ötletem sem, hogy hogyan tudom az előjelbitet kiszedni a változóból...
Nem lesz gyorsabb. A fordító gondoskodik róla, hogy a lehető legjobb gépi kód legyen a forrásodból. Nem igazán tudsz trükközni vele.
Csak elméletben, de nem javaslom:
Arduino-n az int 2 byte (nem mindenhol annyi), csak annyit kellene tenned, hogy a legfelső bitet megnézed. Ha az 1 akkor a szám negatív. (kettes komplemens-nek olvass utána)
Vagy ha úgy tetszik:
Hasonló módszert én gyakran használtam PIC assembly-ben több byte-os adatoknál annak ellenőrzésére, hogy a szám negatív-e, mert ott tényleg csak a legfelső byte legfelső bitjét kellett megnézni, ráadásul volt rá bit teszt utasítás. De őszintén szólva, a C fordító esetén nem fogsz nyerni vele semmit a vargham által javasolt megoldáshoz képest. Továbbá azt sem garantált egyik esetben sem, hogy az eredményed túlcsordult, amikor negatív eredményt kapsz, mert 0-ra is túlcsordulhat, nem csak negatívra és akár normális lehet a negatív eredmény is, ha mondjuk egy összeadásnál az egyik tag eleve negatív volt.
Szia,
Bővebben: Link Idézet: „int’s store negative numbers with a technique called (2’s complement math). The highest bit, sometimes referred to as the "sign" bit, flags the number as a negative number. The rest of the bits are inverted and 1 is added.” És asszem little endian. De baromi egyszerű letesztelni. Fogsz egy intet (long, stb.), adsz neki értékekeket (1, 2, 3, -1, -2, -3) és kiiratod binárisan, egyből kibukik hol van az előjelbit.
Köszönöm! Ez lehet megoldja amit szeretnék.
Figyelj, mert mint írtam, az összeadás eredménye 0-ra is túlcsordulhat, egy szorzás eredménye meg simán pozitívra is: 300 x 300 = 90000, de te eredményül 24464-et fogsz kapni, ami pozitív, és amit nem tudsz így detektálni.
A processzor Carry flag-jét kellene megnézni a művelet után, de azt C-ben nem lehet.
Nagyon köszönöm! De ezek nálam már nagyon extrém kilengések. Sajnos mivel ez egy audió jel, a legnagyobb problémám, hogy egy túlcsordulás egy óriási impulzust generál, kb max amplitúdóval. Pedig, ha csak simán elveszne, ami több, észre sem lehetne venni...
És ha nem c, akkor meg tudnám nézni a carry flaget? Mondjuk beágyazott assemly kóddal? A hozzászólás módosítva: Nov 10, 2021
Honnan jön az érték, ami túlcsordulást okozhat?
Egy audióbuffer hanghullámformákból. Néha elszabadul némelyik görbe, és maxérték felett számol. Bár itt most eltolási problémák is vannak, de ez a lényegen nem változtat...
A hozzászólás módosítva: Nov 10, 2021
Azt lehet tudni hogy mi viszi be a hibát? Ebben a konkrét esetben limitálnék mondjuk -255 -re (ex has, csak szemléltetésnek), és ami negatívabb, azt eldobnám/korrigálnám. De enné azért jobb lenne a hiba megjelenésénél megcsípni!
Nem voltam egyértelmű. A jelet ADC-vel méred vagy valamilyen más módon jutsz az értékekhez?
1. Nem lesz gyorsabb.
2. Kevésbé olvasható. Pont ezért tiltják a biztonsági előírások (MISRA, HIC, stb), hogy előjeles típuson bitműveleteket végezzünk. Persze téged nem kötelez semmi, de általában is érdemes megfogadni az ajánlásokat.
Ez egy Due, van rajta egy Dac ami kap egy buffert. A kép konkrétan Audacityel készült, de hallható is a túlcsordulás. Sajnos a hiba sokhelyről jöhet. Vagy alapvetően a modulátor amplitúdója nagy, vagy a reverb algoritmus gerjed fel, teljesen mindegy, ha túlcsordulás van a buffer változómban azt el kellene kapnom...
Nem lenne megoldás a bemenő jelet osztani és nagyobb felbontású ADC-t használni? Így nem lehetne túlcsordulás.
Tegyük fel hogy elkaptad. Akkor mit tennél vele? Hangnál behallatszik minden anomália nem?
Egyébként én a jel meredekségét figyelném, ha túl nagy az amplitúdóváltozás túl rövid idő alatt, akkor trigger van.
Nem értem én se a problémát. Ha kisebb, mint nulla, eldobjuk. Hogy ez most 1 vagy 3 órajel, olyan mindegy. Sima if és kész.
|
Bejelentkezés
Hirdetés |