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   1130 / 1203
(#) Hp41C válasza Peet19 hozzászólására (») Aug 23, 2020 /
 
Two pics using one oscillator
Ha több PIC -et kell meghajtani, az oszcillátoros pic OSC2 kimenetére kell a meghajtó.
(#) Bakman válasza Hp41C hozzászólására (») Aug 23, 2020 /
 
Ha jól értem, a fórumozók nem jutottak dűlőre a Microchip ajánlása felett, mindössze volt pár sikeres kísérlet.
Idézet:
„Sometimes more than one device needs to be clocked from a single crystal. Since Microchip does not recommend connecting other logic to the PICmicro's internal oscillator circuit, an external crystal oscillator circuit is recommended.”
Valahol máshol is azt olvastam, nem ajánlott tovább terhelni az oszcillátor lábakat, nem erre lettek tervezve.
(#) Hp41C válasza Bakman hozzászólására (») Aug 23, 2020 /
 
A Microchip nem ajánlja, de mégis működik:
Idézet:
„I've done it, and quite successfully. What I did was to use one PIC with a conventional osc circuit, and connected OSC2 to an HC04 inverter, located very near the oscillator circuit. From there, I went to a bunch of other inverters on the same chip and used this to "fan out" the clock signals to another PIC (connected to OSC1), as well as other devices.”

A CMOS inverter bemenet nagy bemeneti ellenállással bír - ez nem jelenthet gondot a kristály meghajtása mellett. Egyetlen probléma lehet, a bemenet és a vezetékezés kapacitása. Ha megfigyeljük az ajánlott kristály bekötést, az találjuk, hogy az OSC2 kimenetre egy kondenzátor kapcsolódik. A CMOS bemenet kapacitását is bele kell számolni. Az elválasztó kapu kimenetét a többi kontroller külső órajelként fogadja.
A megoldás működik, de nem biztosítja azt, hogy a kontrollerek "tényleg" szinkronban járjanak. Ezt egyébként a közös külső oszcillátoros esetben sem biztosítja.
Teljesen elméleti a megoldás, hiszen egy CMOS tokot felhasznál, abból a külső quartz oszcillátoros megoldás is kijönne.
(#) Pali79 válasza Firefighter1 hozzászólására (») Aug 23, 2020 /
 
De csak ahhoz kell pwm ami változtatja a fényerejét, a többi csak sima ki vagy bekapcsolt állapotú, nem? Minek ehhez annyi pwm csatorna? Ahogy néztem a videót a szárny két végén lévő csak simán világít, az ilyen mehet egy kimenetre is.
(#) lastewer hozzászólása Aug 23, 2020 /
 
Sziasztok, segítenétek egy kicsit? (Pic16f628a - UART)

A lenti kóddal az a problémám, hogy ha megérkezik az on_cmt parancsom, akkor owerrun hiba lesz.

Miért?

Azt szeretném megcsinálni, hogy ha az RB7 es láb magas szinten van, akkor küldjön egy parancsot, majd nézze meg jött e vissza válasz. Ha jött és az a válasz jött amit várok, akkor tegye az RB7 - es lábat alacsonyra. Ha jött és nem az amit várok, akkor küldje újra a parancsot.

Ha nem jött vissza semmilyen válasz, akkor is küldje újra a parancsot.

  1. if (UART1_Data_Ready() == 1 ) /* Van kiolvasható karakter az UART-ban*/
  2.                              {
  3.                                      puffer[head]= UART1_Read(); /* Beolvassuk a beérkzett byte-ot a buffer
  4.                                      aktuális helyére*/
  5.                                      if (puffer[0]=='o')
  6.                                      {
  7.                                              head++; /* Csak akkor növeljük a buffer mutatót 1-el,
  8.                                              ha az első beérkező karakter az o betű */
  9.                                      }
  10.                                      if (head==5) // Adat összehasonlítás
  11.                                      {
  12.                                              head = 0;
  13.                                             // Ha van bekapcsoló parancs
  14.                                              if (Check_data(on_cmt))
  15.                                              {
  16.                                                UART1_send_string("done");
  17.                                                PORTB.F7 = 0;
  18.                                                     // UART1_send_string(on_cmt);
  19.                                                      //UART1_Write(13);
  20.                                                     // PORTB.F7 = 1;
  21.                                                      //delay_ms(1000);
  22.                                                     // PORTB.F7 = 0;
  23.                                              }
  24.                                              else
  25.                                              {
  26.                                                   delay_ms(2000);
  27.                                                   UART1_send_string(on_cm);
  28.                                              }
  29.                                              Del_buffer(); // Buffer törlést csinálunk
  30.                                      } // Adat összehasonlítás if vége
  31.  
  32.  
  33.                              }
  34.                              else
  35.                              {
  36.                              if(PORTB.F7 == 1)
  37.                               {
  38.                                 UART1_send_string(on_cm);
  39.                                  delay_ms(2000);
  40.                               }
  41.                              }
A hozzászólás módosítva: Aug 23, 2020
(#) Bakman válasza lastewer hozzászólására (») Aug 23, 2020 / 1
 
Overrun hiba elvileg akkor keletkezik, ha előbb telik meg a vételi buffer, minthogy kiolvasnád a tartalmát. Adattorlódás.
(#) foxi63 válasza Peet19 hozzászólására (») Aug 23, 2020 /
 
Szia!
A SETF utasítás a memória 1 elemét 255-re állítja .
SETF szel 255 re állítja a szel nevű regisztert .

Ha egy regiszter bitjeit akarod állítani, akkor a BSF BCF utasítást kell használni.
adatmozgatáshoz a W regisztert, végül is jól írtad.
A RXT -et 0x21 nek definiáltad, tehát az írási művelet a memórialap 33. regiszterére (0x21) fog vonatkozni.
(#) Peet19 válasza foxi63 hozzászólására (») Aug 23, 2020 /
 
Szia!
A SET-et még nem nagyon értem de átnézem mégegyszer. A BSF BCF az már tiszta. Még lenne egy pár kérdésem de inkább holnap fogalmaznám meg. Köszi a segítséget!
(#) Hp41C válasza Peet19 hozzászólására (») Aug 24, 2020 /
 
SET - változó definiálása a fordítóban. (Link: 4.57)
SETF - pic utasítás, ami a megnevezett memória rekeszt 0xFF = 255 -re állítja.
Bővebben: Link
(#) Firefighter1 válasza Pali79 hozzászólására (») Aug 24, 2020 /
 
Szia!
Igen... pontosan.
Nekem csak kettő pwm csati kell(ene) az egyik a piros "forgó fényt imitálja, a másik a fehér villanót, ezen kivül van még a piros és a zöld ( az mehet közös 1/0 kimenetre) és a leszallófények.
Tehát 2 kibe és kettő pwm amire pályázok...

De lehet hogy szégyen szemre meghátrálok és két kis PIC be - rakom bele a két pwm-et. A ket ki/be kimenetet meg a szervójelfigyelést pedig egy harmadikba
A hozzászólás módosítva: Aug 24, 2020
(#) Peet19 válasza Hp41C hozzászólására (») Aug 24, 2020 /
 
Értem már, köszönöm.
Még egy kérdésem lenne, mert Assembly mellett C-ben is tanulom, hogy hogyan tudom leellenőrizni egyetlen egy bit állapotát?
pl:
TRISA = 0x08; // ekkor gondolom az RA3. láb bement lesz, a többi meg kimenet
LATA = 0xF7; // itt mindegyik láb 1-es lesz kivéve az R3-at
Nem tudom még nem próbáltam, csak logikázok. Írjátok meg ha valamit nem jól csinálok.
A PORTA-val szeretném lekérdezni az R3 láb állapotát de nem tudom hogy kell.
Egy összehasonlítást talán meg tudnék csinálni de azzal nem sokra mennék mert a többi láb kimenetként funkcionál és bármilyen állapotban lehetnek. Ezért nekem csak az R3 láb értéke kellene.
Ezt hogy csináljam?
Persze a LATA -val meg szeretnék szintén csak 1 bitet állítani. Előre is köszönöm a segítséget!
Próbáltam assembly stílusban de nem sikerült.
(#) Bakman válasza Peet19 hozzászólására (») Aug 24, 2020 /
 
  1. TRISAbits.TRISA0 = 0;
  2. LATAbits.LATA0 = 0;
  3. if (PORTAbits.RA0 == 1).....
(#) Peet19 válasza Bakman hozzászólására (») Aug 24, 2020 /
 
Köszönöm, már tesztelem is

Ja, és még egy gyors kérdés. Létezik asm fordító a legújabb MPLABX-re? Windowsra tudom van az MPASM de Linuxot használok. Felraktam az XC8,XC16,XC32 fordítókat de asm-et sajnos nem találtam sehol hozzá.
Alapból meg nincs benne (szerintem).
(#) Hp41C válasza Peet19 hozzászólására (») Aug 24, 2020 /
 
MPLABX 5.40 out, MPASM dead
Helyette valami "pic-as" nevű van.... Vagy használj régebbi verziót.
A hozzászólás módosítva: Aug 24, 2020
(#) Peet19 válasza Hp41C hozzászólására (») Aug 24, 2020 /
 
Igen, megtaláltam a pic-as -t, de le van tiltva a config kód generátor. Szerintem alapból használhatatlan.
Köszi a linket most már értem. Nézek egy régebbi verziót.
(#) Peet19 válasza Peet19 hozzászólására (») Aug 25, 2020 /
 
Sziasztok!

Szeretném be #include -olni aPIC-nek a header fájlját de sehogy sem találja az MPLAB. Mit csinálok rosszul?
  1. #include <xc.h>
  2. #include <p18LF26K80.h>
  3. int main(){
  4.  
  5.  return 0;
  6. }
A hozzászólás módosítva: Aug 25, 2020
(#) pipi válasza Peet19 hozzászólására (») Aug 25, 2020 /
 
Szerintem felesleges. Az xc.h behívja az mplabban kiválasztott pic tipushoz tartozó headert
(#) lelkes amatőr hozzászólása Aug 27, 2020 /
 
Sziasztok,

Egy nagyon amatör kérdés: Ha egy nem használt gyári eszközből kiveszem a PIC-et, lehet újra programozni vagy ezek OTP-re vannak beállítva?
A hozzászólás módosítva: Aug 27, 2020
(#) icserny válasza lelkes amatőr hozzászólására (») Aug 27, 2020 /
 
Ha többször írható memóriájuk van (flash memória), akkor a teljes törlés alaphelyzetbe állítja, és újraírhatók.

Ha gyárilag OTP (csak egyszer írható) az eszköz, az a tipusjelzésből és az adatlapból kiderül.
(#) lelkes amatőr válasza icserny hozzászólására (») Aug 27, 2020 /
 
Akkor ez, at90s2313 ezek szerint felhasználható újra? "Flash on a monolithic chip"
A hozzászólás módosítva: Aug 27, 2020
(#) lelkes amatőr válasza lelkes amatőr hozzászólására (») Aug 27, 2020 /
 
A kérdésem háttere: van ilyen mechanikailag sérült panelom, amin at90s313 van. Nem értek a PIC-hez, gondoltam, hogy egy ilyenen próbálgaték egy-két egyszerű programocskát tanulásképp. Tudom, lehet már egész olcsón venni szinte bármilyet, de ez itt van elöttem ingyen.
Ami zavar kicsit, ezt találtam a leírásában: "On some devices, the lock bits will not erase at high VCC. In this situation, it will not be possible to reprogram the devices when the lock bits are set."
Ha nem használható akkor nem bajlódok a kiforrasztásával.
(#) benjami válasza lelkes amatőr hozzászólására (») Aug 27, 2020 /
 
Nem is kell érteni a PIC-hez, mert ez nem PIC. Attól hogy az MC felvásárolta az Atmelt még nem lett belőle PIC. Amúgy meg miért nem nézed meg az adatlapját ?
(#) lelkes amatőr válasza benjami hozzászólására (») Aug 27, 2020 /
 
Akkor már az elején elbuktam. Na, ennyit a PIC tudásomról. Kössz az információt.
(#) Bakman válasza lelkes amatőr hozzászólására (») Aug 27, 2020 /
 
Nyugalom, valahol el kell kezdeni!
(#) icserny válasza lelkes amatőr hozzászólására (») Aug 28, 2020 /
 
Elvileg 1000-szer újraírható. De sok értelmét nem látom egy ilyen egzotikus mikrovezérlővel bajlódni, amikor 2-3 dollárért már hozzádvágnak egy Arduino nanot (amiven szintén AVR mikrovezérlő van), amihez sokkal könnyebben találsz segítséget, ötletet, tananyagot.
(#) Georgee hozzászólása Szept 10, 2020 /
 
Sziasztok. Adott egy hibakód olvasó amiben PIC18F458-van és USB-n kommunikál. Vissza szeretném butítani a FW-t ami rajta van, de szeretnék egy biztonsági mentést készíteni a jelenlegi verzióról. Hogyan tudom USB-n keresztül lementeni a gépre a forrást? Köszönöm a válaszokat
(#) usane válasza Georgee hozzászólására (») Szept 10, 2020 /
 
Ha ez gyári akkor sehogy. Biztos, hogy olvasásvédett.
(#) Georgee válasza usane hozzászólására (») Szept 10, 2020 /
 
Kínai, csak nem merek ráfrissíteni. Csak ha letudom menteni a jelenlegi FW-t
(#) kissi válasza Georgee hozzászólására (») Szept 10, 2020 /
 
Szia!

A saját USB-s kommunikációján keresztül nem tudod, csak egy programozó készülék segítségével, ha nincs gyárilag a másolásvédelem bekapcsolva!
(#) Georgee válasza kissi hozzászólására (») Szept 11, 2020 /
 
Marad a pickit akkor. Csak el akartam kerülni ezt a megoldást. A másik kérdés, van egy hibás olvasóm is, amin PIC-t kéne cserélnem. 18F458 amit tenni kéne rá, de nekem 18LF458 van a fiókban. A kettő között van valami különbség, vagy amit a 18F458-ra írtak az rámehet a másikra?
Következő: »»   1130 / 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