Fórum témák
» Több friss téma |
Mivel nyitod ki a hex fájlt? Milyen programozó?
A programozó PICkit 2,2.61 verzió.
A hex fájlt átmásolom a WORD Pad-ra és megnyitom,de közvetlenül is megnyitható ha jobb egérrel rá kantitok és választom a megnyitást. Mint ahogy írtam teljesen más számok és betűk jelennek meg a programozón és a megnyitott fájlon. Hogy rendben van-e ez a kettősség ez számomra nem mond semmit.A programozón végig futott a zöld csík ami azt jelenti számomra,hogy sikeres a programozás.Az ellenőrzés is azt mutatta.
Szia!
Több lehetőség is van az eltérésre: - A fordító csak azokat a területeket szerepelteti a hex állományban, amire kódot/adatot helyezett el, a pickit2 minden területet megjelenít, exportál. - A betöltött kód kiolvasás védett, programozás után kiolvasott és kiexportált területmindenn utasítása nop (0x0000). Egy-két kép segíthet eldönteni, melyikkel is van dolgod.
Szia!
Az oka az, hogy a programozóban cím szerint jelenik meg. Itt egy kis háttér infó! A hozzászólás módosítva: Nov 16, 2022
Sziasztok, ugyan nem PIC a téma, de belevág. Tudnátok segíteni ennek a kódrésznek az értelmezésében? Tanultam régen alapszinten PIC-et programozni, de sajnos már nem emlékszem rá. A kóddal a pwm frekvenciát lehet beállítani, simulinkben, arduino uno esetén.
TCCR1B = TCCR1B&0 × F8 0 × 02 Köszönöm A hozzászólás módosítva: Nov 19, 2022
Nem értelmezhető, mert felesleges szóközök vannak benne, és valami karakter meg hiányzik...
TCCR1B = TCCR1B & 0×F8 0×02 Vagy megtréfált ahonnan letöltötted, és az "&0xf8" valami speciális karakter aminek a hexa kódja jelent meg...
Valószínűleg igazad van, mert egy cikkben van benne. Engem az elv érdekelne. Csináltam egy fotót a kódról. Remélem ez segít.
Köszi
Az "|" (AltGr + w) karakter kimaradt.
A hozzászólás módosítva: Nov 19, 2022
Hello!
TCCR1B xxxx xxxx AND F8 xxxx x000 OR 02 0000 0010 TCCR1B xxxx x010 Vagy is letörli a regiszter alsó három bitjét, majd a b1 bitet beállítja. Ha ez volt a kérdés. A hozzászólás módosítva: Nov 19, 2022
Szia,
a TCCR1B a regiszter, ezt tudom. Ha jól ertem a 0xf8 jelenti, hogy a regiszter melyik bitjeit, a 0x02 pedig, hogy mire állítjuk. Ha bináris formában írom be, az ugyanúgy jó lehet? Köszi
A fordítónak elvileg mindegy.
0xF8 = 0b11111000 0x02 = 0b00000010
Az & (AND) kimaszkolja a biteket. Vagy is ahol 1 van, azt változatlanul hagyja, ahol 0 van, azt nullára állítja.
Az | (OR) kapcsolatnál, ahol 0 a bitérték, azt nem változtatja, ahol 1 van, azt egyre viszi. (beállítja)
Köszönöm mindenkinek a segítséget. Kipróbáljuk majd élesben, aztán meglátom, mire jutok.
![]() A hozzászólás módosítva: Nov 20, 2022
Kb 6 évet kihagytam és leragadtam még az MPLAB IDE-nél és most tanulom ezt a MPLAB X IDE meg X IPE-t,
Röviden el tudná magyarázni valaki hogy mi a különbség illetve melyik mire való?
IDE: maga a fejlesztőkörnyezet.
IPE: programozni és programot kiolvasni a kontrollerből, pár extrával. Ugyanakkor az IDE is tudja programozni és olvasni a kontrollereket.
C30 Compiler kapcsán érdeklődnék.
int proba [len] __attribute__ ((section (".ydata, data,ymemory"), aligned (Block_len))); Fenti sorban section 3 paramétereit miként kell értelmezni? Azt látom hogy Y Data RAM ba mutat, de pontosan hogyan?
Kedves fórumtársak!
Egy új ötletem megvalósíthatóságáról szeretném a véleményeteket kérni, illetve ha megvalósítható, akkor a segítségeteket. Van egy ilyen bluetoothos távvezérlőm mobiltelefonhoz, és az az ötletem támadt, hogy én ezt másra szeretném használni, mégpedig egy ilyen bluetooth modul segítségével. Valamilyen PIC-es megoldással rá lehet-e venni ezeket az eszközöket az egymással való kommunikációra, és ha igen, hogyan?
A leírás szerin nem fog menni: Bővebben: Link. A távirányító HID protokollal rendelkezik, a HC-05 modul pedig csak a Serial protokollt ismri.
Köszönöm.
Csak egy ötlet volt. Robotnak gondoltam távirányítónak.
Ennyit nem ér számomra, hogy belefogjak valami új megtanulásába csak ezért.
De köszönöm.
Idézet: „int proba [len] __attribute__ ((section (".ydata, data,ymemory"), aligned (Block_len)));” Biztos, hogy helyes ez a megadás? Hol szerepel így? A section-nek egy paramétere van a section name, pl. így helyes:
a data vagy ymemory memory space nevek, pl:
Ez utóbbi helyett használható a _YDATA makró is: (MPLAB C30 user guide 4.6)
Igen, engem is a paraméterlista zavar. Egy FFT mintaprogram volt ahol találtam. A hozzá tartozó változókat nem is helyezi látszólag sehova.
El tudnád magyarázni a section(), elletve space() mit csinál pontosan? Mi a különbség space("data") és space("ymemory") között?
A space mondja meg, hogy melyik memória területre kerüljön az adat.
Ez többek között lehet: data - általános adat memória code - program memória és több más is, de dspic-nél még van három fontos (eszköz specifikus): eedata - EEPROM-ba kerül xmemory - X terület, gyakorlatilag ugyanaz mint a data csak ki van zárva belőle az Y terület ymemory - Y terület A section név az szabadon választott, azt használsz ami tetszik, de vannak előre definiált section-ök, amik a nevük alapján a megfelelő space-be kerülnek, ha ilyet használsz, akkor nem kell megadni a space-t. .text - program memória .ndata - adat memória stb. Példák:
Az előre definiált section-öknél más space megadása természetesen nem megengedett:
Letöltöttem és is a példát, és szépen lefordul 3.23-as verzióval. A paraméterlista az szerintem valami nagyon régi dolog, és ma már nem használatos, mert a jelen dokumentáció nem említi. Ha hibásan adom meg akkor az unrecognized old-style section flag warning-ot adja, ez is arra utal, hogy már régi megadási forma. Ami a beidéztél main_FFTExample.c-ben van, abban nem is kell megadni a section/space-t, mert ott extern-ként van definiálva. Ott akár ki is lehet törölni, mert a fordító figyelmen kívül hagyja:
Az igazi deklaráció a inputsignal_square1khz.c-ban van:
És ez alapján ténylegesen az Y space-be teszi, az 1024 hosszú blokk:
Ehelyett manapság inkább így használnám (kell hozzá a #include <p30Fxxxx.h>):
Vagy space és section-t megadva:
Itt a section név akármi lehet, a space alapján rakja a Y területre.
Idézet: „Mi a különbség space("data") és space("ymemory") között?” dsPIC-nél vannak a normál utasítások, amik az egész adat memóriát címezhetik, ott a data space-t lehet használni, és vannak DSP utasítások, amik a memória két külön területéről párhuzamosan tudnak adatot olvasni, ez a két terület az X és Y terület. Az X ugyanaz mint a data kivéve az Y terület. Az FFT rutin használja a DSP utasításokat, ezért kell neki az Y terület.
Sziasztok!
Kósza híreket hallottam arról, hogy bizonyos PIC típusok kódvédelmét egyesek sikeresen feltörték. Konkrétan 16F864-ról szóltak a hírek. Nem tudom, hogy a különböző PIC családoknál a kódvédelem különböző módon van-e megoldva, de szeretnék ebben tisztábban látni. Szerintetek kacsa ez a hír, vagy lehet alapja?
Köszönöm a részletes választ!
Fogok még csinálni változóelhelyezési próbákat, és megnézem a gyakorlatban ott találom-e őket ahol gondolom. Ha további kérdésem lesz remélem fordulhatok ismét bizalommal feléd. Ami most kérdeznék, hogy az alábbi példában section (".yadatok") megadása mi célt szolgál, tekintve azt már meghatároztuk, hogy SigCmpx az ymemory -ban kap majd helyet?
Vagy van alapja, vagy kacsa, ezek az "állítólag" kezdetű hírek. Ha valakik nagyon akarják (és bírják anyagilag), akkor ettől biztosabbra mennek. Lemaratják az félvezetőről a tokot, majd úgy olvassák ki a memóra tartalmát.
Tudtommal utóbbira is vagy egy (fél)megoldás, egy extra lapkát rögzítenek több ponton a konkrét félvezető lapka fölé, hogy fizikailag ne lehessen csak úgy, tűkkel kiolvasni a programmemória tartalmát. Nagy valószínűséggel csak idő és pénz kérdése, hogy ezt a kupakot levakarják, már ha megéri, egyszerű mikrokontrollereknél kb. felesleges pénzkidobás. Ezt keresd: decapping ic
A section (".yadatok") megadása opcionális. Ha nem adod meg akkor generál egy véletlen nevet neki. Ha megadod, akkor esetleg több változó esetén csoportosíthatod őket külön külön section-ba, de gyakorlatban ez ritkán ritkán kell.
|
Bejelentkezés
Hirdetés |