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   1185 / 1203
(#) majkimester válasza bitmixer hozzászólására (») Dec 8, 2022 /
 
Vannak invazív és nem invazív technikák, ITT olvashatsz róluk. Régi a cikk, de nem vesztette érvényét. Invazív módon (tok eltávolítása) gyakorlatilag a legtöbb kontrollerből kiolvasható a kód, de vannak olyanok amikhez még ez sem kell.
(#) patrik81 hozzászólása Dec 10, 2022 /
 
Sziasztok!

Tudnátok segíteni? Már többször használtam MPLAB X-et, most a v6.00, bár másikat is telepítettem, és akkor is ugyan az a hiba. Nincs rákötve semmi, csak egy alap programot akartam lefordíttatni vele. Ha kiveszem az interrupt részt, akkor hibátlanul lefordul, ha már benne van, akkor hibát ír ki. A tools menüben minden plug in-t feltelepítettem. A windosom új, azt is most telepítettem 11-re.
A program:
  1. #include <xc.h>
  2.  
  3. void interrupt Timer0()
  4. {
  5.    int ca;
  6. }
  7. void main(void)
  8. {
  9.     return;
  10. }


A hiba:

  1. make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
  2. make[1]: Entering directory 'C:/Users/patri/MPLABXProjects/ora3.X'
  3. make  -f nbproject/Makefile-default.mk dist/default/production/ora3.X.production.hex
  4. make[2]: Entering directory 'C:/Users/patri/MPLABXProjects/ora3.X'
  5. "C:\Program Files\Microchip\xc8\v2.40\bin\xc8-cc.exe"  -mcpu=16F690 -c   -mdfp="C:/Program Files/Microchip/MPLABX/v6.00/packs/Microchip/PIC16Fxxx_DFP/1.3.42/xc8"  -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -DXPRJ_default=default  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mdefault-config-bits   -std=c99 -gdwarf-3 -mstack=compiled:auto:auto     -o build/default/production/ora.p1 ora.c
  6. ::: advisory: (2049) C99 compliant libraries are currently not available for baseline or mid-range devices, or for enhanced mid-range devices using a reentrant stack; using C90 libraries
  7. ora.c:3:6: error: variable has incomplete type 'void'
  8. void interrupt Timer0()
  9.      ^
  10. ora.c:3:15: error: expected ';' after top level declarator
  11. void interrupt Timer0()
  12.               ^
  13.               ;
  14. 2 errors generated.
  15. (908) exit status = 1
  16. nbproject/Makefile-default.mk:107: recipe for target 'build/default/production/ora.p1' failed
  17. make[2]: Leaving directory 'C:/Users/patri/MPLABXProjects/ora3.X'
  18. nbproject/Makefile-default.mk:91: recipe for target '.build-conf' failed
  19. make[1]: Leaving directory 'C:/Users/patri/MPLABXProjects/ora3.X'
  20. nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
  21. make[2]: *** [build/default/production/ora.p1] Error 1
  22. make[1]: *** [.build-conf] Error 2
  23. make: *** [.build-impl] Error 2
  24.  
  25. BUILD FAILED (exit value 2, total time: 15s)
(#) Bakman válasza patrik81 hozzászólására (») Dec 10, 2022 / 1
 
Valahogy így:
  1. void __interrupt() interrupts(void) {
  2.  
  3.     if (PIR1bits.TMR2IF) {
  4.         PIR1bits.TMR2IF = 0;
  5.        
  6.         //kód
  7.  
  8.     }
  9.  
  10. }
(#) alita hozzászólása Dec 12, 2022 /
 
Szervusztok !

Windows 10-en PICKIT 2.61 programozóm van.A HEX fájl megnyitásával egyidőben megjelenik a
Code protect felírat.Kérdésem van mód,vagy valami trükk arra,hogy töröljem?
(#) Bakman válasza alita hozzászólására (») Dec 12, 2022 /
 
Átírod a konfig biteket úgy, ahogy szeretnéd, majd elmented a hex fájlt. Mindezt a PICKit2 programban. Lásd melléklet. Utolsó lépés: File menü -> Export Hex
(#) alita válasza Bakman hozzászólására (») Dec 12, 2022 /
 
Ezt én is észrevettem korábban,hogy amikor beírom az IC-t,akkor kiírja a rendes számát,de
amikor beírom a HEX-t és megnyitom,teljesen más számot ír ki.Én is konfiguráltam a biteket
míg ki nem írta a helyes számot,majd kattintás a save-ra.De ezután megint protect,és teljesen eltérő számot ír ki.Már arra is gondoltam,hogy nincs-e letiltva a közzé tett program és hiába
próbálkozom.Megadom a PIC számátIC16F877A és küldöm a hex fájlt,hátha Te szóra tudod bírni.
(#) Bakman válasza alita hozzászólására (») Dec 12, 2022 /
 
A PICKit2 programban van egy apró hiba. Ha egyszer kiírja a "Code protect" szöveget (vagy hasonlót), akkor annak eltüntetéséhez újra kell indítani a programot, legalábbis nem akkor tűnik el, amikor kellene. Most nem tudom pontosan ellnőrizni, majd holnap délelőtt.
(#) Bakman válasza alita hozzászólására (») Dec 12, 2022 /
 
Tulajdonképpen milyen "számról" van szó? A PIC típusáról? A .hex fájl nem tartalmazza azt az infót, hogy milyen PIC-hez (ha egyáltalán PIC-hez) készült.

Mellékletben a módosított hex fájl, ebben a kódvédelem ki van kapcsolva.

A melléklet nagyobb méretű mint az eredeti, ez normális. Mentéskor a nem használt területeket is a .hex fájlba írja a PICKit2 program, az eredeti ezt nem tartalmazza. Ez a kód működését nem befolyásolja.
(#) alita válasza Bakman hozzászólására (») Dec 13, 2022 /
 
Szervusz !

A PIC típusa 16F877.

Köszönöm a segítséget és a tanácsokat.A küldött hex fájlt lementettem és hamarosan
megpróbálom.Az eredményről majd beszámolok.

Üdvözlettel :Alita
(#) Bakman válasza alita hozzászólására (») Dec 13, 2022 /
 
Arra figyelj, hogy a 16F877 és a 16F877A két különböző PIC típus.
(#) alita válasza Bakman hozzászólására (») Dec 13, 2022 /
 
Az előző levelemben helyesen írtam le a számátIC16F877A.
Pár perce a megküldött hex fájlal programoztam,és sikerrel jártam.A kiolvasásban és a hasonlításban ugyanazok szerepelnek.A protect eltünt !!

Kellemes Karácsony,és Boldog Új évet .

Még egyszer Köszönök mindent !

Alita
(#) patrik81 hozzászólása Dec 17, 2022 /
 
Sziasztok!

Időzítőt akartam csinálni, de a "t" regisztert 15 fölé nem tudtam vinni, mert akkor csak világított a led. Miért?
  1. #include <xc.h>
  2. int x,t;
  3. void main()
  4. {
  5.     TRISB7=0;  
  6.     while(1)
  7.     {
  8.         x++;
  9.         if(x==10000)
  10.         {
  11.             x=0;
  12.             t++;
  13.             if(t==15)
  14.             {
  15.                 t=0;
  16.                 if(RB7)
  17.                     RB7=0;
  18.                 else RB7=1;
  19.             }
  20.         }
  21.     }
  22. }
(#) Bakman válasza patrik81 hozzászólására (») Dec 17, 2022 /
 
  1. if(RB7)
  2.  RB7=0;
  3. else RB7=1;
Itt hiányoznak a kapcsos zárójelek. Így:
  1. if(RB7){
  2.  RB7=0;
  3.  } else {
  4.  RB7=1;
  5. }
Egyszerűsítve:
  1. if (t==15){
  2.  t=0;
  3.  RB7 = !RB7;
  4. }
(#) patrik81 válasza Bakman hozzászólására (») Dec 17, 2022 /
 
Nincs változás, "t==15"-ig jó, de 16-ot már nem fogad el. Akkor már nem villog a led.
Van még a TRISB7=0; alatt egy ASHELH=0; parancs is, a PIC16F690 miatt.
A hozzászólás módosítva: Dec 17, 2022
(#) Bakman válasza patrik81 hozzászólására (») Dec 17, 2022 /
 
A programodban, ha 't' változó eléri a 15-öt, akkor nullázódik.

t=0

Mitől menne 15 fölé? Nem értem a koncepciót.
(#) patrik81 hozzászólása Dec 17, 2022 /
 
Nem a t-t akarom feltétlen növelni, hanem a led villogását lassítani. Arra gondoltam, hogy egy változóban 10 ezerig számolunk, egy másik változóban tovább számolok, így lelassítom a led villogást, de nem sikerült teljesen, csak kb. 3 másodpercig mentem le, pedig 5 perces villogást szerettem volna.
(#) Bakman válasza patrik81 hozzászólására (») Dec 17, 2022 /
 
Mit értesz öt perces villogás alatt? Öt percig világít a LED, majd öt percig nem, és ez ismétlődik?
(#) patrik81 válasza Bakman hozzászólására (») Dec 17, 2022 /
 
Igen, 5 perc be, majd 5 perc ki. Rájöttem mi a baj Lehagytam a watchdog kikapcsolását a progiból.
(#) djadji hozzászólása Dec 29, 2022 /
 
Hello. Hogyan mérek PIC-kel áramerősséget? Szeretném tudni, hogy egy vezetéken mennyi áram folyik át (pl akksi töltő), de nincs ötletem hogyan lehet ezt PIC-kel. Tudna valaki tanácsot adni?
(#) Hp41C válasza djadji hozzászólására (») Dec 29, 2022 /
 
Egy kis értékű sönt ellenálláson kell átvezetni az áramot, a rajta eső feszültséget egy erősítővel 0 .. Vdd (a PIC tápfeszültsége) közötti értékre kell leképezni, hogy a PIC kontroller A/D modulja mérni tudja. A kapott digitális értékből vissza kell számolni fizikai értékre.
A hozzászólás módosítva: Dec 29, 2022
(#) kissi válasza djadji hozzászólására (») Dec 29, 2022 /
 
Szia!
Vagy a Hp41C kolléga által írt módszerrel vagy pl. ezek közül is választhatsz:Bővebben: Link !
(#) djadji válasza kissi hozzászólására (») Dec 29, 2022 /
 
Köszönöm mindenkinek. Meg kell emésztenem amit Hp41C mondott...
Olyan kábelt szeretnék építeni ami kikapcsolja az áramot ha a mobilom feltöltött és nem tölti tovább. Készen nem láttam ilyen eszközt. Erre jó lehet az áramérzékelés? Ha leesik 0ra (vagy 0 közelébe) akkor szétkapcsolja a relét, nem tölt tovább.
Ez müködhet, igye?
(#) Bakman válasza djadji hozzászólására (») Dec 29, 2022 /
 
Működhet, csak az a kérdés, mi értelme. Amíg ki nem húzod a kábelt a telefonból, addig az a töltőről fogyaszt, az akkut 100 %-on tartja.

Ha a 230 V-os oldalt akarod lekapcsolni, egyszerűbb, ha kapcsolós dugaljt használsz. Bekapcsoláskor a kontrollernek is kell valamilyen áramforrás, hogy behúzza a relét de ha nincs behúzva a relé, nem kap feszültséget a figyelő áramkör. Igaz, ez a probléma egy megfelelő nyomógombbal áthidalható.

A telefonok nem egyenletesen fogyasztanak a töltőből, a töltés vége felé lassítanak, mérni kell a felvett átamot a töltöttség függvényében, hogy figyelőt lehessen rá építeni.
A hozzászólás módosítva: Dec 29, 2022
(#) djadji válasza Bakman hozzászólására (») Dec 29, 2022 /
 
Az volna a terv, hogy ha a töltőkábelen az áram erőssége lecsökken (mert a telefon már alig vesz áramot, vagyis 100% közelében van), a PIC a töltőkábelen elhelyezett relét kikapcsolná, ezzel megszakítva a töltőkábelt és így a további töltést (a relé a töltő és a telefon között lenne) Vagyis 100%ig töltene, aztán kikapcs. Nem is kapcsolna vissza, csak a kövi rácsatlakozáskor, esetleg reset gomb után, vagy hasonló.

De közben az is eszembe jutott, hogy ha 100% közelében a töltés áramerőssége lecsökken, és ha ezzel az árammal tartanám a relét bekapcsolt állapotban, akkor a csökkenő áram miatt a relé egyszer csak kikapcsolna. Nem is kellene hozzá PIC, csak a töltőkábel 5V-jának kellene tartania a relét. Öntartó relé, vagy ilyesmi...
(#) Bakman válasza djadji hozzászólására (») Dec 29, 2022 /
 
A tervet értem, az értelmét nem látom.

Relé behúzótekercsét nem tudod belekötni az áramkörbe mert a töltés kb. azonnal leállna a nagy tekercsellenállás miatt.
(#) djadji válasza Bakman hozzászólására (») Dec 29, 2022 /
 
Nem dirketbe tervezném rávezetni. Valami vezérlést kellene csinálni. Mondjuk ez lenne a PIC és akkor nem kell tovább agyalni rajta
Értelme: éjszakára fel lehet tenni töltőre a telefont és nem fogja 100% és 99,99% között töltögetni folyton, hanem feltölti 100%-ra és kész, kikapcs. Reggelre merül 2-3 százalékot, de az belefér.
(#) Bakman válasza djadji hozzászólására (») Dec 29, 2022 /
 
Konkrét segítséghez elöször mérni kell, két dolgot:
A: hogyan változik (ha változik) a töltőfeszültség töltés közben.
B: hogyan változik a tölőáram töltés közben.

A mai USB-s töltők nagyobb feszültséget is adhatnak, mint 5 V, azt meg már nem bírják a mikrokontrollerek. Ránéztem az én telefontöltőmre, 9 V-ot is adhat (USB-C).
(#) icserny válasza djadji hozzászólására (») Dec 29, 2022 /
 
Egyszerűen megoldható egy időkapcsolós konnektorral, amivel tapasztalati alapon beállíthatod, hogy mennyi ideig töltsön (pl. 1 óra). Esetleg az időkapcsolót megcsinálhatod PIC-kel...
(#) djadji válasza Bakman hozzászólására (») Dec 29, 2022 /
 
Hopp, kösz. Azt hittem az fix 5V. Akkor erre is figyelnem kéne...
(#) sonajkniz hozzászólása Dec 30, 2022 /
 
Sziasztok!

Az lenne a kérdésem, be lehet-e valahogy úgy állítani a hardveres uartot, hogy nekem csak a vételi oldal kell (Rx), a (Tx) lábat kimenetnek szeretném használni.
Jelenleg a vétel megy szépen, ám a Tx láb folyamatos magas szinten áll, és LAT parancsal nem tudom kikapcsolni.
A kérdéses PIC a 18F14K22.

Köszönöm.
Következő: »»   1185 / 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