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   666 / 1207
(#) Lamboo válasza foxi63 hozzászólására (») Ápr 26, 2015 /
 
Megadtam neki:
#include <pic12f508.h>
Le is fordul, ha kikommentelem a sort.
(#) foxi63 válasza Lamboo hozzászólására (») Ápr 26, 2015 / 1
 
Esetleg ne kacsacsőr közé tedd, hanem idézőjel közé a header nevet, esetleg nyisd meg a fájlt és nézd meg pontosan, hogy valóban létezik GPIObits.GP0 vagy máshogy van definiálva. Nekem már volt midkét problémám igaz c18 alatt. ja... #define sor végén nincs pontosvessző!
A hozzászólás módosítva: Ápr 26, 2015
(#) killbill válasza Lamboo hozzászólására (») Ápr 26, 2015 / 1
 
A #define sor vegerol vedd le a ';'-t!
Mert ha nem veszed le, akkor a behelyettesites ez lesz:

motor_a=1; --> GPIObits.GP0;=1;
(#) Lamboo hozzászólása Ápr 26, 2015 /
 
Köszönöm mindkettőtöknek! Tényleg a pontosvessző volt a gond.
(#) Zsolt2 hozzászólása Ápr 28, 2015 /
 
Sziasztok.
16bits dsPIC33EP512MU810 mikrovezerlon XC16 kompilerrel szeretnek osszeadast vegezni, ahol az egyik valtozo elejel nelkuli a masik elojeles. A kerdes az volna, hogy ha negativ szamot vonok ki, akkor hogyan tudnak megbizonyosodni, hogy nem volt tulcsordulas? (pozitiv iranyba nem lehet tulcsordulas ugyanis mindket szam maximalis erteke 2^14.
(#) devergo74 hozzászólása Ápr 28, 2015 /
 
Sziasztok.
Olvasgatva, kérdezgetve a fórumon, arra jutottam hogy kezdésnek ez a 'felépítés ' lesz megfelelő számomra tanulásnak a pic programozás terén.
Mplab x-c nyelv-pickit2+hozzá próbapanel. Valakinek valami véleménye,az elgondolásomra?
(#) Buvarruha válasza devergo74 hozzászólására (») Ápr 28, 2015 /
 
Igazából nem hülyeség a PK3 és a debugolás, csak meg kellett tanuljak együtélni az MPLAB hibáival, viszont így elég hasznos, sokmindent javítgattam a programjaimon, ha pedig kezdetnek nem akarsz debugolni, akkor lehet belőle csinálni pickit2-t amivel ugyanúgy tudsz programozni, indítani stb mint a PK2-vel. Ja és előny még, hogy a 3 többféle PIC-et tud programozni.
A hozzászólás módosítva: Ápr 28, 2015
(#) devergo74 válasza Buvarruha hozzászólására (») Ápr 28, 2015 /
 
Értem, akkor a sorrendben a pickit2-t kell 3-ra cserélni. Tudsz az Mplab-helyett valami jobbat, ajánlani kezdésnek? Mert nem igazán vágom.
(#) Buvarruha válasza devergo74 hozzászólására (») Ápr 28, 2015 /
 
Eddig CCSC-ben írtam a programokat, most is az van bepluginolva az mplab-ba, vannak előnyei és hátrányai is a ccsc-nek, de kezdésnek nem rossz, mert egyszerű, persze én is roki programozó vagyok.

A sorrend alatt arra gondoltam, hogy kezdhetsz a PK3-al, ha most vennék programozót, akkor már a 3-at venném.
(#) devergo74 válasza Buvarruha hozzászólására (») Ápr 28, 2015 /
 
Köszi, mindenkitől lehet tanulni valamit.
(#) killbill válasza Zsolt2 hozzászólására (») Ápr 28, 2015 /
 
Van erre PIC C topic... Mindazonaltal, ha egy osszeadasban (es barmilyen matematikai muveletben) elojeles es elojel nelkuli operandusok szerepelnek, akkor az elojelesbol elejel nelkuli operandus lesz. Osseadas eseten ezert az eredmeny is elojel nelkuli lesz. De nem ertem a kerdest. Eloszor osszeadasrol beszelesz, aztan kivonasrol.
(#) Zsolt2 válasza killbill hozzászólására (») Ápr 29, 2015 /
 
Elirtam, osszeadasrol szol a kerders. Bemasolom a kodreszletet, hogy jobban ertheto legyen a kerdes.
  1. uint16_t a = 20, c;
  2. uint16_t b= -21; ....
  3. c = a+b; //ebben az esetben a c erteke legyen nulla

Ez volna a muvelet, amit el kell vegezni, viszont ugy, hogy az eredmeny sose csorduljon tul nullan. Ha elojel nelkulinek veszi igy midket valtozot, akkor tipuskenyszeritessel megoldhato, viszont akkor is tulcsordulas lesz. Van valakinek javaslata, hogy lehetne megoldani?
(#) don_peter válasza Zsolt2 hozzászólására (») Ápr 29, 2015 /
 
Bár nem teljesen értem a kérdést és lehet rossz felé gondolkodom, de tegyél egy feltételt az eredmény elé.
Gondolom itt az lenne a lényeg, hogy ne csorduljon túl nullánál pozitív irányban igaz?
  1. c = (a+b) < 0 ? (a+b) : 0;
Így c változó értéke nem lehet nagyobb nullánál, ha az eredmény több mint nulla.

Közben újra átolvasva, látom, hogy az eredmény a megadott adatok alapján nulla kellene lennie, ebben az esetben a típusmódosítókkal tudsz variálni még, de ettől még lehet használni a feltételt amit írtam...

Esetleg egy másik szélsőségesebb példát is tudnál írni a megértés kedvéért?
Akár egy pozitívot?
Milyen adatok lehetnek a változókba?
Az egyik mindig pozitív a másik negatív?
A hozzászólás módosítva: Ápr 29, 2015
(#) killbill válasza Zsolt2 hozzászólására (») Ápr 29, 2015 /
 
Mivel a 'c' valtozo is elojel nelkuli, ezert soha nem lesz kisebb erteku, mint 0. Egesz egyszeruen 65535 lesz, a fenti pelda eseteben. Mar onmagaban megbukik a dolog ott, hogy az uint16_t b = -21; A b sem lesz soha negativ. Ha beletoltesz -21-et, akkor 65515 lesz benne. Ezert elojel nelkuli.
(#) usane hozzászólása Ápr 29, 2015 /
 
Üdv!

Pic12F1572 EUSART -ot bütykölöm, és nem értek valamit.
Egy pic18F14k50 küldözgeti ugyanazt a byte-ot 5ms delayyel. A byte értéke most nem is léyneg.
A 12F veszi.
Idézet:
„Immediately after all data bits and the Stop bit have
been received, the character in the RSR is transferred
to the EUSART receive FIFO and the RCIF interrupt
flag bit of the PIR1 register is set.”

Idézet:
„The RCIF interrupt flag bit will be set when there is an
unread character in the FIFO, regardless of the state of
interrupt enable bits.”

Na mármost, a startbit biztosan megérkezik, mert az RCIDL bebillen. Framing error sincs, mert azt is leteszteltem, tehát a stop bit is megjön.
Az megszakítás engedélyek is beállítva: RCIE,PEIE,GIE.
Kérdés, miért nem billen be az RCIF bit?
Biztos én nem értek valamit, csak azt nem tudom mit.
(#) balint730 hozzászólása Ápr 29, 2015 /
 
Sziasztok.
Egy PIC 16f887 helyett egy 16f877A PIC-et kaptam mi a különbség a kettő között? Az adatlapját nem nagyon tudtam értelmezni. Miben tud többet és miben kevesebbet a 877-es?
(#) ktamas66 hozzászólása Ápr 29, 2015 /
 
Sziasztok!

Van egy 16f1788-as PIC-em, ahol a másodlagos I2C portot szeretném használni kijelző meghajtásra, de ez pont a ICSP lábakon van (RB6-7). Belekavarhatnak ezek egymás dolgaiba, vagy inkább alakítsam ki a nyákot úgy, hogy a kijelző a programozás idejére leválasztható legyen.
(#) Buvarruha válasza balint730 hozzászólására (») Ápr 29, 2015 /
 
Néhány dologgal több van a 887-ben, ha megnézed a lábkiosztásukat látod, hogy néhány lábon van több funkció (több komparátor stb.), de általában amire a 887 jó, arra a 877A is megfelel.
(#) balint730 válasza Buvarruha hozzászólására (») Ápr 29, 2015 /
 
LCD kijelzőt szeretnék vezérelni, vezeték nélküli adóvevőt meg hasonlókat.
A komparátort milyen gyakran és mihez szokták használni?
Valamint az mit jelent h van kapacitív érintő csatornája (capacitive touch channel) egy PIC-nek?
Köszönöm a segítséget
(#) Buvarruha válasza balint730 hozzászólására (») Ápr 29, 2015 /
 
Ez már meghaladja képességeimet. De a komparátor felhasználási módjaira magad is rákereshetsz, de a kérdésből felteszem, hogy nem lesz rá szükséged.
(#) Hp41C válasza balint730 hozzászólására (») Ápr 29, 2015 /
 
A különbségek nagy vonalakban:
AD kezelés, analóg lábak beállítása, regiszterkiosztás.
A hozzászólás módosítva: Ápr 29, 2015
(#) Buvarruha válasza Hp41C hozzászólására (») Ápr 30, 2015 /
 
Ja igen, az analóg lábak és beállítás CCSC-ben, a mai napig nem működik minden órajel és felbontás a 887-el és 4620-al, szóval ebből szempontból (ccsc) a 77-es jobb.
(#) sonajkniz hozzászólása Ápr 30, 2015 /
 
Sziasztok!
Egy fórumtárs kérésére készítettem egy kis segítséget az adatmemória használatához PIC18-ra.
Úgy gondolom, másokat is érdekelhet, ezért feltöltöm.
  1. ;*******************************************************************************
  2. ;*                      Ram kezelése adattárolásra                             *
  3. ;*******************************************************************************
  4.  
  5.  
  6. ;Vegyünk példának, egy analóg érték beolvasását és letárolását
  7. ;Az analóg beállításait most nem taglalom.
  8. ;Előszőr határozzuk meg, a memóriát honnan akarjuk elkezdeni írni.
  9. ADATTAROLAS
  10.     CLRF    FSR0H
  11.     MOVLW   D'101'
  12.     MOVWF   FSR0L
  13. ;Ezzelmeghatároztuk, hogy a 101-es címen kezdünk el írni. Azért x1, mert bár a
  14. ;processzor 0-val kezdi a címzéseket, az ember nem.  
  15. ;A mérés megkezdéséhez a program egy jelre vár.
  16. ADAT_INDIT
  17.     BTFSC   PORTA,0       ;Ez lessz egy nyomógomb
  18.     GOTO    $-2
  19.     BSF     ADCON0,GO
  20.     BTFSC   ADCON0,GO
  21.     GOTO    $-2
  22.     MOVFF   ADRESH,POSTINC0
  23. ;A gomb megyomására megtörténik a mérés, és letárolódik az első memóriacímre.
  24. ;A POSTINC0 utasítás végzi a tárolást, majd 1-el megnövel FSR0 értékét.
  25. ;Ezután ellenőrízzük, hogy a gomb elengedése megtörtént-e. Ezt pergésmentesí-
  26. ;téssel tesszük.
  27.     BTFSC   PORTA,0
  28.     CLRF    0x0           ;Ez egy számláló a pergésmentesítéshez
  29.     INCFSZ  0x0
  30.     GOTO    $-6
  31.     GOTO    ADAT_INDIT
  32. ;Gyakorlatilag megvagyunk a tárolással, viszont csináltunk egy végtelen ciklust.
  33. ;Ezért a programunkat úgy kell módosítani, hogy ebből ki tudjon lépni.
  34. ;Használjunk tehát mondjuk egy 3 állású kapcsolót a B porton
  35. ;Ennek értelmében programunk így módosul:
  36. MAIN
  37.     BTFSC   PORTB,0
  38.     GOTO    ADATTAROLAS
  39.     BTFSC   PORTB,1
  40.     GOTO    ADATOLVASAS
  41.     BTFSC   PORTB,2
  42.     GOTO    BARMI_EGYEB
  43.     GOTO    MAIN
  44. ADATTAROLAS
  45.     CLRF    FSR0H
  46.     MOVLW   D'101'
  47.     MOVWF   FSR0L
  48. ADAT_INDIT
  49.     BTFSS   PORTB,0       ;Figyeljük a kapcsolót
  50.     GOTO    MAIN
  51.     BTFSC   PORTA,0       ;Figyeljük a nyomógombot
  52.     GOTO    $-6
  53.     BSF     ADCON0,GO
  54.     BTFSC   ADCON0,GO
  55.     GOTO    $-2
  56.     MOVFF   ADRESH,POSTINC0
  57.     BTFSC   PORTA,0
  58.     CLRF    0x0          
  59.     INCFSZ  0x0
  60.     GOTO    $-6
  61.     GOTO    ADAT_INDIT
  62. ;Most már ki tudunk lépni a tárolásból, és átmenni az olvasásra.
  63. ;VIGYÁZAT!! Ha egyszer innen kilép a program, majd újra belép, felülírja az adatokat.
  64. ;Ha ezt el akarjuk kerülni, a következőt kell tennünk.
  65. ;Inicializálásnál megadni
  66.     CLRF    0x1
  67.     MOVLW   D'101'
  68.     MOVWF   0x2
  69. ;Ezek lesznek az íráskori pozíció tárolók.
  70. ;Ezután a program így módosul:
  71. MAIN
  72.     BTFSC   PORTB,0
  73.     GOTO    ADATTAROLAS
  74.     BTFSC   PORTB,1
  75.     GOTO    ADATOLVASAS
  76.     BTFSC   PORTB,2
  77.     GOTO    BARMI_EGYEB
  78.     GOTO    MAIN
  79. ADATTAROLAS
  80.     MOVFF   0x1,FSR0H     ;Betöltjük a letárolt pozíciókat
  81.     MOVFF   0x2,FSR0L
  82. ADAT_INDIT
  83.     BTFSS   PORTB,0       ;Figyeljük a kapcsolót
  84.     GOTO    MAIN
  85.     BTFSC   PORTA,0       ;Figyeljük a nyomógombot
  86.     GOTO    $-6
  87.     BSF     ADCON0,GO
  88.     BTFSC   ADCON0,GO
  89.     GOTO    $-2
  90.     MOVFF   ADRESH,POSTINC0
  91.     BTFSC   PORTA,0
  92.     CLRF    0x0          
  93.     INCFSZ  0x0
  94.     GOTO    $-6
  95.     MOVFF   FSR0H,0x1      ;Letároljuk a pozíciókat.
  96.     MOVFF   FSR0L,0x2    
  97.     GOTO    ADAT_INDIT
  98. ;Íly módon kilépés-visszalépés esetén folytatólagos lessz az adattárolás.
  99. ;Az adaqtok kiolvasása mindíg az elejéről kezd:
  100. ADATOLVASAS
  101.     CLRF    FSR0H
  102.     MOVLW   D'101'
  103.     MOVWF   FSR0L
  104. OLVASAS_INDIT
  105.     BTFSS   PORTB,1       ;Figyeljük a kapcsolót
  106.     GOTO    MAIN
  107.     BTFSC   PORTA,0       ;Figyeljük a nyomógombot (használhatjuk ugyanazt)
  108.     GOTO    $-6
  109.     MOVFF   POSTINC0,LATC ;A kiolvasott adatot kiírjuk a C portra
  110.     BTFSC   PORTA,0
  111.     CLRF    0x0          
  112.     INCFSZ  0x0
  113.     GOTO    $-6
  114.     GOTO    OLVASAS_INDIT
  115. ;Azonban arra is van lehetőség, hogy visszafelé olvassuk ki az adatokat.
  116. ADATOLVASAS
  117.     MOVFF   0x1,FSR0H     ;Betöltjük a letárolt pozíciókat
  118.     MOVFF   0x2,FSR0L
  119. OLVASAS_INDIT
  120.     BTFSS   PORTB,1       ;Figyeljük a kapcsolót
  121.     GOTO    MAIN
  122.     BTFSC   PORTA,0       ;Figyeljük a nyomógombot (használhatjuk ugyanazt)
  123.     GOTO    $-6
  124.     MOVFF   POSTDEC0,LATC ;A kiolvasott adatot kiírjuk a C portra
  125.     BTFSC   PORTA,0
  126.     CLRF    0x0          
  127.     INCFSZ  0x0
  128.     GOTO    $-6
  129.     GOTO    OLVASAS_INDIT
  130. ;Most a POSINC0 helyett POSTDEC0-t használunk. Azaz nem incrementáljuk, hanem
  131. ;decrementáljuk (1-el csökkentjük) FSR0 értékét.
(#) lastewer hozzászólása Máj 1, 2015 /
 
Sziasztok!

Kellene egy kis segítség , váltottam 16f877a ról 18F4520 -ra és akadt egy kis problémám.

0-7 - ig , D lábakra kötöttem ledeket (előtét ellenállással) , a D0 ás lábat tökéletesen tudom kapcsolni , viszont ha a D2-es lábat kapcsolnám, akkor nem jelzi hogy fel lenne kapcsolva.

Illetve , ha felkapcsol a D2 es láb és közben felkapcsolom a D0ás lábat , akkor kikapcsol a D2 es is.

Mellékeltem egy kis videót :Letöltés

A forrás ide vonatkozó része:
  1. void main()
  2. {
  3.  
  4.   PORTA = 0 ;
  5.   PORTB = 0 ;
  6.   PORTD = 0 ;
  7.  
  8.   TRISB = 0; // B lábak kimenetre állítva
  9.   TRISD = 0; // D lábak kimenetre állítva
  10.  
  11.  
  12.  
  13.   /*
  14.    * starts ENC28J60 with :
  15.    * reset bit on RC0
  16.    * CS bit on RC1
  17.    * my MAC & IP address
  18.    * full duplex
  19.    */
  20.   SPI1_Init();
  21.   SPI_Ethernet_Init(myMacAddr, myIpAddr, Spi_Ethernet_FULLDUPLEX) ;
  22.  
  23.   while(1)
  24.   {                            // do forever
  25.     /*
  26.      * if necessary, test the return value to get error code
  27.      */
  28.     SPI_Ethernet_doPacket() ;   // process incoming Ethernet packets
  29.    
  30.  
  31.     /*
  32.      * add your stuff here if needed
  33.      * Spi_Ethernet_doPacket() must be called as often as possible
  34.      * otherwise packets could be lost
  35.      */
  36.   }
  37.  
  38. }
(#) lastewer válasza lastewer hozzászólására (») Máj 1, 2015 /
 
Megvan a hiba
(#) Buvarruha válasza lastewer hozzászólására (») Máj 3, 2015 /
 
Írd le légyszíves a megoldást, hogy tanuljanak a jövő nemzedékei, no meg én. Én 4620-at próbáltam multkor és szotyiztam rendesen a lábakkal amiken többminden is lehet, gondolom ilyesmi gond volt.
(#) lastewer válasza Buvarruha hozzászólására (») Máj 3, 2015 /
 
Szia!

Az volt a gond , hogy rosszul raktam a próbapanelen az ellenállást.

(Volt egy sáv, ami már eleve összekötötte a ledet egy az egyben , az ellenállásom megkerülve.)

Tudna mutatni nekem valaki , egy egyszerű interrupt-os megszakítást ? MikroC-ben (18f4520 ra).
A hozzászólás módosítva: Máj 3, 2015
(#) cross51 válasza lastewer hozzászólására (») Máj 3, 2015 /
 
Hello!
MikroC megszakításra példák:
Bővebben: Link egyik lehetőség Bővebben: Link másik lehetőség.
A hozzászólás módosítva: Máj 3, 2015
(#) brato válasza NeXTeL hozzászólására (») Máj 6, 2015 /
 
Üdv!

Szerinted ezen a képen mit látni?
Írd le a típusát!
Olvasd a sárga részt!
(#) eSDi válasza NeXTeL hozzászólására (») Máj 6, 2015 /
 
Üdv!

Sajnos a 16C PIC-ek egyszer írhatóak, ha nincs rajtuk ablak (ez esetben UV fénnyel lehetne törölni). Szóval ha bontásból származik, akkor nem tudod már használni.
A JDM égető nem tudná égetni és a JDM a modern gépekkel már nem működik, egyébként is ajánlatos jól elkerülni. Helyette egy PICKit2 klón építését/vásárlását ajánlom.
Következő: »»   666 / 1207
Bejelentkezés

Belépés

Hirdetés
XDT.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