Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   1184 / 1203
(#) Bakman válasza alita hozzászólására (») Nov 16, 2022 /
 
Mivel nyitod ki a hex fájlt? Milyen programozó?
(#) alita válasza Bakman hozzászólására (») Nov 16, 2022 /
 
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.
(#) Hp41C válasza alita hozzászólására (») Nov 16, 2022 /
 
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.
(#) Elektro.on válasza alita hozzászólására (») Nov 16, 2022 /
 
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
(#) alita hozzászólása Nov 16, 2022 /
 
Köszönöm a válaszokat.
(#) diamik hozzászólása Nov 19, 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
(#) pipi válasza diamik hozzászólására (») 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...
(#) diamik válasza pipi hozzászólására (») Nov 19, 2022 /
 
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
(#) nedudgi válasza diamik hozzászólására (») Nov 19, 2022 /
 
Az "|" (AltGr + w) karakter kimaradt.
A hozzászólás módosítva: Nov 19, 2022
(#) proli007 válasza diamik hozzászólására (») 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
(#) diamik válasza proli007 hozzászólására (») 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
(#) Bakman válasza diamik hozzászólására (») Nov 19, 2022 / 1
 
A fordítónak elvileg mindegy.

0xF8 = 0b11111000
0x02 = 0b00000010
(#) proli007 válasza diamik hozzászólására (») Nov 19, 2022 / 1
 
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)
(#) diamik válasza proli007 hozzászólására (») Nov 20, 2022 /
 
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
(#) treshold hozzászólása Nov 22, 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ó?
(#) Bakman válasza treshold hozzászólására (») Nov 23, 2022 / 1
 
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.
(#) apromax hozzászólása Nov 27, 2022 /
 
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?
(#) sonajkniz hozzászólása Nov 28, 2022 /
 
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?
(#) Bakman válasza sonajkniz hozzászólására (») Nov 28, 2022 /
 
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.
(#) sonajkniz válasza Bakman hozzászólására (») Nov 28, 2022 /
 
Köszönöm.

Csak egy ötlet volt. Robotnak gondoltam távirányítónak.
(#) icserny válasza sonajkniz hozzászólására (») Nov 28, 2022 /
 
Esetleg ESP32-vel...
(#) sonajkniz válasza icserny hozzászólására (») Nov 28, 2022 /
 
Ennyit nem ér számomra, hogy belefogjak valami új megtanulásába csak ezért.
De köszönöm.
(#) majkimester válasza apromax hozzászólására (») Nov 28, 2022 /
 
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:
  1. int proba [len] __attribute__ ((section (".ydata"), aligned (Block_len)));


a data vagy ymemory memory space nevek, pl:

  1. int proba1 [len] __attribute__ ((space("data"), aligned (Block_len)));
  2. int proba2 [len] __attribute__ ((space("ymemory"), aligned (Block_len)));


Ez utóbbi helyett használható a _YDATA makró is: (MPLAB C30 user guide 4.6)

  1. int proba [len] _YDATA(Block_len);
(#) apromax válasza majkimester hozzászólására (») Dec 2, 2022 /
 
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.

  1. extern fractcomplex sigCmpx[FFT_BLOCK_LENGTH]           /* Typically, the input signal to an FFT  */
  2.     __attribute__ ((section (".ydata, data, ymemory"),  /* routine is a complex array containing samples */
  3.          aligned (FFT_BLOCK_LENGTH * 2 *2)));                   /* of an input signal. For this example, */
  4.                                                         /* we will provide the input signal in an */


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?
(#) majkimester válasza apromax hozzászólására (») Dec 4, 2022 /
 
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:

  1. unsigned long adat_memoriaba_kerul_section_nev_alapjan __attribute__ ((section(".ndata"))) = 0;
  2. unsigned long eepromba_kerul_space_alapjan __attribute__ ((space (eedata))) = 0;
  3. unsigned long eepromba_kerul_de_sajat_sectionbe __attribute__ ((space (eedata), section(".xxx"))) = 0;


Az előre definiált section-öknél más space megadása természetesen nem megengedett:

  1. unsigned long hibas_megadas __attribute__ ((space (eedata), section(".ndata"))) = 0;



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:

  1. extern fractcomplex sigCmpx[FFT_BLOCK_LENGTH];


Az igazi deklaráció a inputsignal_square1khz.c-ban van:

  1. fractcomplex sigCmpx[FFT_BLOCK_LENGTH] __attribute__ ((section (".ydata, data, ymemory"), aligned (FFT_BLOCK_LENGTH * 2 *2))) = = { ... };


És ez alapján ténylegesen az Y space-be teszi, az 1024 hosszú blokk:
  1. section                    address      alignment gaps    total length  (dec)
  2. -------                    -------      --------------    -------------------
  3. .icd                         0x800                0x50            0x50  (80)
  4. .ndata                       0x850                   0             0x6  (6)
  5. .ydata                      0x1c00                   0           0x400  (1024)


Ehelyett manapság inkább így használnám (kell hozzá a #include <p30Fxxxx.h>):

  1. fractcomplex sigCmpx[FFT_BLOCK_LENGTH] _YDATA(FFT_BLOCK_LENGTH * 2 *2) = { ... };


Vagy space és section-t megadva:

  1. fractcomplex sigCmpx[FFT_BLOCK_LENGTH] __attribute__ ((space (ymemory), section (".yadatok"), aligned (FFT_BLOCK_LENGTH * 2 *2))) = { ... };


Itt a section név akármi lehet, a space alapján rakja a Y területre.
(#) majkimester válasza apromax hozzászólására (») Dec 4, 2022 /
 
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.
(#) bitmixer hozzászólása Dec 7, 2022 /
 
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?
(#) apromax válasza majkimester hozzászólására (») Dec 8, 2022 /
 
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?

  1. fractcomplex sigCmpx[FFT_BLOCK_LENGTH] __attribute__ ((space (ymemory), section (".yadatok"), aligned (FFT_BLOCK_LENGTH * 2 *2))) = { ... };
(#) Bakman válasza bitmixer hozzászólására (») Dec 8, 2022 /
 
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
(#) majkimester válasza apromax hozzászólására (») Dec 8, 2022 / 1
 
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.
Következő: »»   1184 / 1203
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