Fórum témák
» Több friss téma |
Pontosan nem tudom de egyéb időkből az látszik, hogy a BCD szétbontás tized annyi idő alatt lezajlik, mint a modulo és osztás függvények egymás utáni használata.
y1=x MOD 10 x=x/10 y2=x MOD 10 x=x/10 y3=x MOD 10 stb.
A futási idő nagyban függ az osztás megvalósításától:
- 16 bit / 8 bit osztás: számjegyenként kb 16 -szot fut le egy 16 bites kivonás és esetleg egy összeadás valamint 1 léptetés. - Sorozatos kivonás: max 6535 -ször fut le a 16 bites kivonás és az esetleges 16 bites összeadás. Szerencsésebb előbb 10000 -et, majd 1000 -et, majd 100 -at és végül 10 -et levonogatni. Ekkor 59999 esetén kb. 40 kivonás kell, de ekkor a kód hosszú. - A belinkelt BCD -re alakítás egyszerre csinálja meg a 10 helyiértékre és csak 32 szer fut le egy 5 -ös ciklust. Ráadásul "skálázható", azaz átírható rövidebb szó hosszúságra (8, 16, 24 bitre), de nagyobbra is. Más: A C -ben megírt y1=x % 10; x = x / 10; műveletsor kétszer végzi el az osztást, pedig a hányados és a maradék is előáll már az első végrehajtása után. Idézet: „A C -ben megírt y1=x % 10; x = x / 10; műveletsor kétszer végzi el az osztást,” Ha ez a sorrend, akkor igen, viszont a stdlib-ben ott vannak a div(), udiv() függvények. Egy struktúrában visszaadják mindkét értéket.
Sziasztok!
Programoznék egy PIC12F683-t és a mikroc a fordításkor hibát jelez a rele =1; sornál. " Assigning to non-lvalue 'GP0' ". Mi a probléma?
Sziasztok!
Bár a kérdésre nem jött válasz, megoldódott a probléma. Meg kellett a regisztert is nevezni és úgy már lefordult és működik is az áramkör. Vagyis a portra való hivatkozás a következő: GPIO.GP5 és így tovább.
Sziasztok!
Két PIC között szeretnék hardveres SPI kommunikációt összehozni, de valahogy nem sikerül a lényegét felfognom. Csináltam már hasonlót korábban, de ott digitális potmétert kezeltem SPI-vel és nem számított, hogy mit küld a szolga, csak a küldött adat volt a fontos, a szolga végrehajtotta a feladatot és kész. Most viszont az egyik PIC által mért 2db ADC értéket kellene fogadni és kijelezni. Az ADC érték 10 bites, tehát összesen 4 bájtot kellene fogadni és azonosítani valahogy a fogadott adatot, hogy az tulajdonképpen melyik. Az sem teljesen világos, hogy a master küld egy bájtot és a szolgának is kötelezőn kell küldeni valamit és a masternek fogadni azt, ha kell, ha nem?
Használhatsz UART-ot is ha nem ragaszkodsz a szinkron kommunikációhoz (és van szabad UART).
Egyébként nem kell válaszoljon a SLAVE.
Csak azért lenne érdekes ez most, mert később szeretnék RF modult használni ami szintén SPI-n kommunikál és jó lenne megérteni.
Ha konkrét kérdés van, válaszolok én is ha tudok.
Egyébként meg érdemes megnézni bármelyik SPI-n kommunikáló IC, szenzor, egyéb eszköz adatlapját, szinte minden kiderül belőle. Idézet: „Az ADC érték 10 bites, tehát összesen 4 bájtot kellene fogadni és azonosítani valahogy a fogadott adatot, hogy az tulajdonképpen melyik.” Legyen a két 10 bites adat bitjei ABCDEFGHIJ ill. LMNOPQRSTU 4 byte -ba csomagolnám az alábbi módszerrel: 100ABCDE 101FGHIJ 010LMNOP 011QRSTU A vett adat 7..5 bitjeiből tudhatod, melyik adat melyik helyiértékű darabja. Idézet: „Az sem teljesen világos, hogy a master küld egy bájtot és a szolgának is kötelezőn kell küldeni valamit és a masternek fogadni azt, ha kell, ha nem?” Igen, küldenie kell valamit. A masternek el kell vennie (de eldobhatja) mielőtt új adat vételét indítaná. Próbálj előbb egy SPI EEProm -ot kezelni.
Sziasztok!
Ez szerintetek mitől lehet: Ha ki szeretném számoltatni a PIC-el az SSP1ADD értékét, akkor az hibásan kerül beállításra (0xFF kerül bele). Ha elé beszúrok egy töréspontot és végig léptetem, akkor jó érték kerül kiszámításra és jól is kerül bele az SSP1ADD-be.
Próbáltam már minden féle sorrendben, változóba bele írni és onnan az SSP1ADD-be, de mindnél ugyan ez a helyzet. Nem értem hol téved el a dolog. Tudom a számolásra így figyelmeztetést dob ( implicit signed to unsigned conversion), de ha megszűntetem akkor is ugyan így viselkedik. PIC16F18857 - MPLABX v5.15 és XC8 v2.05
Nem tudom minden C fordítónál így van-e, de amiket eddig PIC-re használtam azok katasztrofálisan kezelik a különböző méretű változókkal végzett műveleteket.
Néha typecast segít, néha az sem. Szóval
Egyébként tré megoldás, de annyiszor volt már problémám 32 biten végzett számításoknál, hogy még tovább szoktam bontani:
A hozzászólás módosítva: Márc 30, 2019
Valami ilyesmi lehetett. Épp most sikerült megoldanom. Átraktam a számolást az UART adatfogadáshoz és jó lett. Igaz amíg nem nulláztam a változót, itt sem volt jó. Talán még a NOP sem kell, csak benne maradt.
Sziasztok!
Mitől lehet az, hogy a PIC egyszerűen nem akarja vezérelni az I2C perifériáját? Többek által kipróbált kóddal nem tudom beüzemelni. Egy PIC18F25Q10-ről van szó és hiába állítom a SEN bitet 1-re, nem húzza le az SDA lábat, semmit nem csinál. Próbáltam többféle felhúzóval, többféle SLAVE eszközzel, és a netről egy csomó példaprogrammal, és másik PIC-kel is.
Hali!
Ha már ezt sem hajlandó megcsinálni, akkor a port beállítások körül lesz a gond. Bemenetnek állítottad az SCL, SDA lábakat? PPS-t beállítottad?
A 18F25Q10 esetében a SCL1 és az SDA1 "remappable" azaz konfigurálható lábakon van. A lábkiosztásnál van egy apró megjegyzés:
Idézet: „This is a bidirectional signal. For normal module operation, the firmware should map this signal to the same pin in both the PPS input and PPS output registers.” Azaz kimenetnek és bemenetnek is be kell állítani ugyan azt a lábat a modul működéséhez. Meg kell csinálni mind a SCL1 mind a SDA1 kivezetésre.
Köszönöm mindkettőtöknek! Belőttem a PPS biteket és látszik szkópon, ahogy rángatja lefelé a vonalat a master. Több hónapja szenvedek vele. Nagyon hálás vagyok! Tudtam én a megvételkor, hogy túl komoly eszköz lesz ez kezdésnek!
Konstans számoknál az UL végződés szokott segíteni abban, hogy a fordító ne 16 bites számokkal számolja az általa számolandó értékeket. Pl:
vagy
Ha van a PIC-ben PPS, akkor számítani kell rá, hogy megszivat. Sokszor át kell olvasni, az App Note-okat is érdemes megnézni. Nekem utoljára új nyákot kellett gyártatni, mert teljesen abban voltam, mint az előzőleg használt PIC-nél, hogy oda konfigurálom a perifériát, ahová akarom a PPS-el. Aztán kiderült, hogy ennél az MSSP-t csak a PORTB-re vagy C-re lehet.
Üdv!
Egy rövid kérdés: telepítettem az MPLAB IPE-t, IDE-t nem. Egy pillanatra felugrik a fekete keretes ablak, de belépni nem tudok és eszközt kiválasztani sem. Így pont az nem derül ki, amiért telepítettem, hogy áll a Snap ez ügyben. ![]() Köszönöm!
Windows alatt ki lehet ügyeskedni. Ha nem mozdítod tovább az egeret, akkor ott marad és ha gyorsan legörgeted, akkor már látszani fog.
Egyébként támogatva van, igaz sárgával.
Köszi! Feltelepítettem win-re is, de azonnal le is szedtem. 4GB helyet foglal egy mezei programozó szoftver ?!
A Java miatt Cross-Platform, így nem hiszem, hogy Linux alatt kevesebb lenne. Másrészt pedig a 4GB nem adatmennyiség manapság. Azért elég sok eszközt kezel ahhoz, hogy meglegyen a mérete. De a Java miatt is akkora, amekkora.
Értem én, hogy java, de telepítve van mindkét rendszer alatt. Nem kell minden java-s program telepítésekor hozzászámolni a méretét.
A Java az már ilyen ... a LIN/WIN meg nem is tud és egymás szoftver készletéről és nem foglalkozik egymással , természetes hogy feltelepül a hiányzó komponens mindkét OS alá
![]()
A Java már csak ilyen...
Tegyél fel a Win -re még egy Eclipse -t, valami másik fejlesztőt.. Annyi Java -d lesz, ahány fejlesztőt felteszel. Miért is kellene ugyan az a verzió a programoknak... Talán részvényük van a háttértér gyártóknál. A PICkit2 elviszi a Atmel SAM, AtXMega családok kívül az egészet 8 megabyte helyfoglalással. 1 : 500 A hozzászólás módosítva: Ápr 2, 2019
Ebben igazad van, bár a Linux-on nem láttam, hogy másik java-t rakott volna fel. Valójában ezért dühöngök, mert az új avrmega 0-ás sorozatot szeretném programozni, de nem akarok újra drága ICE programozót venni. Ezeknél a friss programozóknál pedig egy év alatt sem sikerült egy nyamvadt UPDI protokolt összehozni.
Most win-es gép előtt vagyok. Revo Uninstaller: Atollic Truestudio (eclipse): 2 GB, MCUXpesso IDE (eclipse): 1.28 GB, STCubeProgrammer(java): 5.98 MB, MPLAB IPE: 4.56 GB....
Akárt azt is jelenthet. Vagy azt, hogy nem jó család van kiválasztva menüből.
|
Bejelentkezés
Hirdetés |