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 / 1184
(#) 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 (») Pé, 9:16 /
 
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 (») Vas, 18:30 /
 
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 (») Vas, 18:39 /
 
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.
Következő: »»   1184 / 1184
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