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   894 / 1203
(#) steweo hozzászólása Jan 14, 2017 /
 
Sziasztok, olyanra lennek kíváncsi, hogy egy adott impulzusra (mely kb 2mp és 12v) lehet-e csinalni, hogy masik kimeneten megjelenik ugyan az az impulzus es 10mp utan egy kovetkező lábon egy másik szintén 12v os jel, viszont az nem megy csak 3mp et (vagy amíg egy negyedik labra nem érkezik egy jel ami viszont folyamatos es valtozó) , viszont az első folyamat tart a kovetkező 12v os impulzusig.
Itt egész pontosan autó távindításról lenne szó, hogy a 4. jel ami a fordulatszammérőtől érkezik és az letiltja utána az önindítót. 1 jel a gyújtás es a 10mp amíg a mptor készen áll az indításra, ott akár a check engie lámpa elalvására is lehetne kötni. Ha valaki segítene véghezvinni a projektet azt megköszönném.
(#) pajti2 válasza david10 hozzászólására (») Jan 15, 2017 /
 
A sima C forrást első körben object-re (.o) fordítja a compiler, és abból a linker gyárt egy futtatható firmware-t (.bin). Kérés esetén lista file gyanánt (.lst) a linker dob assembly dumpot is. A firmware külön programmal átkódolható hex-re (.hex), ami a pickit bemeneti állománya, azt tudod feltölteni a pic-re. Mplab akár egy lépésben csinálja az egészet, ott lehet, hogy pár dolog el van rejtve a szemed elől, de a folyamat ugyan az.
(#) Bakman válasza steweo hozzászólására (») Jan 15, 2017 /
 
A feladat könnyedén megoldható, itt inkább az autó biztonságos indítása a kérdéses: sebességbe van, kézifék, esetlegesen túl hideg motor, mi történjen, ha elsőre nem indul el, meddig köszörüljön egy próbálkozás alatt és még egy csomó dolog, ami nem jut eszembe.
A hozzászólás módosítva: Jan 15, 2017
(#) david10 válasza pajti2 hozzászólására (») Jan 15, 2017 /
 
Köszönöm a válaszokat!
Idáig csak Arduino-t programoztam, a C alapok mennek, de még PIC-re nem fordítottam programot.
Ma összekötöttem az LCD-t a programozóval és felprogramoztam rá a gyári HEX fájlt, az LCD müködik.
Csak annyival szerettem volna kiegészíteni, hogy ha a 12-es láb fel van huzva 5V-ra, akkor az eepromot töltse meg FF-el és írja ki, hogy RESETED.

Ez a videó alapján megprobálom feltelepíteni majd lefordítani a forráskódot. Ha valamiben elakadod, akkor még írok.
(#) kissi válasza pajti2 hozzászólására (») Jan 15, 2017 /
 
Az object file-okat meg lehet nézni valamivel ( pl. milyen függvények, milyen paraméterekkel vannak benne, vagy ez már itt nem kinyerhető ?! ) ?!
(#) nedudgi válasza kissi hozzászólására (») Jan 15, 2017 /
 
Egy HxD, vagy hasonló bináris fájlnézegetővel valószínűleg megtalálhatók a külső hivatkozások, publikus definícók, szöveges formában. Meg kell próbálni.
(#) david10 válasza david10 hozzászólására (») Jan 15, 2017 /
 
A második videó alapján mindent ugy csináltam, ahogyan ott mutatta, de amikor rákattintok a Build-ra egy csomó hibát ír ki.
A hozzászólás módosítva: Jan 15, 2017

serlcd2.rar
    
(#) nedudgi válasza david10 hozzászólására (») Jan 15, 2017 /
 
Ilyen hosszú szöveget nem illik egy fórumba írni. Mellékletként, vagy a kód gombbal légy szíves!
(#) Hp41C válasza david10 hozzászólására (») Jan 15, 2017 /
 
Goooooogle -be "pic16F88 c compiler #pragma ramdef" beírva egyből megadja a fordítót: CC5X
(#) david10 válasza nedudgi hozzászólására (») Jan 15, 2017 /
 
Elnézést kérek, de egy csomó szöveggel együtt lemaradt a [/code] parancs. A moderátort megkérem, hogy törölje ki a hozzászolásból.

Hp41C: Kiprobálom a CC5X-et.
A hozzászólás módosítva: Jan 15, 2017
(#) david10 válasza Hp41C hozzászólására (») Jan 15, 2017 /
 
Feltelepítttem ez a leírás szerint, de fordításkor ezt a hibaüzenet kaptam:
  1. CLEAN SUCCESSFUL (total time: 914ms)
  2. make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
  3. make[1]: Entering directory 'C:/Users/David/MPLABXProjects/SPlcd.X'
  4. make  -f nbproject/Makefile-default.mk dist/default/production/SPlcd.X.production.Hex
  5. make[2]: Entering directory 'C:/Users/David/MPLABXProjects/SPlcd.X'
  6. "C:\Users\David\Desktop\cc5x\CC5X.EXE"   ../../Desktop/serlcd/serlcd-v2_7_2line_10MHz.c
  7. CC5X Version 3.5G, Copyright (c) B Knudsen Data, Norway 1992-2016
  8.  --> FREE edition, 8-16 bit int, 24 bit float, 32k code, reduced optim.
  9. ../../Desktop/serlcd/serlcd-v2_7_2line_10MHz.c:
  10. Warning ../../Desktop/serlcd/serlcd-v2_7_2line_10MHz.c 844: Condition (or parts of it) is always false
  11.  (This is superfluous code that can be removed - check for application bugs)
  12.  Chip = 16F88
  13.  RAM : -------- -------- -------- -------- ======== =7...... ........ ........
  14.   40h: ........ ........ ........ ........ ......** ******** =******* ********
  15.   80h: -------- -------- -------- -------- ........ ........ ........ ........
  16.   C0h: ........ ........ ........ ........ ........ ........ -------- --------
  17.  100h: -------- -------- ******** ******** ******** ******** ******** ********
  18.  140h: ******** ******** ******** ******** ******** ******** -------- --------
  19.  180h: -------- -------- ******** ******** ******** ******** ******** ********
  20.  1C0h: ******** ******** ******** ******** ******** ******** -------- --------
  21. RAM usage: 151 bytes (10 local), 217 bytes free
  22.  Optimizing - removed 19 instructions (-1 %)
  23.  File 'serlcd-v2_7_2line_10MHz.occ'
  24. Warning ../../Desktop/serlcd/serlcd-v2_7_2line_10MHz.c 775: Read-modify-write sequence on the same PORT may fail
  25.  (Two consecutive instructions modifying the same PORT may fail depending on
  26.  execution speed and load (fall/rise times) on the port pins. Option -wf will
  27.  remove this warning)
  28. Warning ../../Desktop/serlcd/serlcd-v2_7_2line_10MHz.c 782: Read-modify-write sequence on the same PORT may fail
  29. Warning ../../Desktop/serlcd/serlcd-v2_7_2line_10MHz.c 783: Read-modify-write sequence on the same PORT may fail
  30. Warning ../../Desktop/serlcd/serlcd-v2_7_2line_10MHz.c 788: Read-modify-write sequence on the same PORT may fail
  31. Warning ../../Desktop/serlcd/serlcd-v2_7_2line_10MHz.c 793: Read-modify-write sequence on the same PORT may fail
  32. Warning ../../Desktop/serlcd/serlcd-v2_7_2line_10MHz.c 799: Read-modify-write sequence on the same PORT may fail
  33. Warning ../../Desktop/serlcd/serlcd-v2_7_2line_10MHz.c 977: Read-modify-write sequence on the same PORT may fail
  34. Warning ../../Desktop/serlcd/serlcd-v2_7_2line_10MHz.c 987: Read-modify-write sequence on the same PORT may fail
  35. Warning ../../Desktop/serlcd/serlcd-v2_7_2line_10MHz.c 1006: Read-modify-write sequence on the same PORT may fail
  36. Warning ../../Desktop/serlcd/serlcd-v2_7_2line_10MHz.c 1010: Read-modify-write sequence on the same PORT may fail
  37. Warning ../../Desktop/serlcd/serlcd-v2_7_2line_10MHz.c 1014: Read-modify-write sequence on the same PORT may fail
  38. Warning ../../Desktop/serlcd/serlcd-v2_7_2line_10MHz.c 1032: Read-modify-write sequence on the same PORT may fail
  39. Warning ../../Desktop/serlcd/serlcd-v2_7_2line_10MHz.c 1037: Read-modify-write sequence on the same PORT may fail
  40.  File 'serlcd-v2_7_2line_10MHz.hex'
  41.  Codepage 0 has 1463 word(s) :  71 %
  42.  Codepage 1 has    0 word(s) :   0 %
  43. Total of 1463 code words (35 %)
  44.  * Estimated CODE SIZE of full optimization: 1170 code words (-20 %)
  45. "C:\Program Files (x86)\Microchip\MPLABX\v3.50\mpasmx\mplink.exe"  
  46. make[2]: *** [dist/default/production/SPlcd.X.production.Hex] Error 1
  47. make[1]: *** [.build-conf] Error 2
  48. make: *** [.build-impl] Error 2
  49. MPLINK 5.08, LINKER
  50. Device Database Version 1.34
  51. Copyright (c) 1998-2011 Microchip Technology Inc.
  52. Syntax:   mplink { cmdfile | [objfile] | [libfile] | [option] } ...  
  53.   'cmdfile' is the name of a linker command file.              
  54.        All linker command files must have the extension '.lkr'
  55.   'objfile' is the name of an assembler or compiler generated object file.
  56.        All object files must have the extension '.o'.          
  57.   'libfile' is the name of a librarian created library file.  
  58.        All library files must have the extension '.lib'.      
  59.   'option'  is a linker command line option described below.  
  60.  
  61. Linker command line options:                                  
  62.    /o <filename>    : specify output file 'filename', default is 'a.out'  
  63.    /m <filename>    : create map file 'filename'                          
  64.    /l <pathlist>    : list of directories to search for library/object files
  65.    /k <pathlist>    : list of directories to search for linker command files
  66.    /n <length>      : number of lines per listing page (0 = no pagination)
  67.    /h, /?           : show this help screen                  
  68.    /a <hexformat>   : specify format of hex programming file  
  69.                     : valid formats are INHX8M, INHX8S, INHX32
  70.    /d               : do not create listing file              
  71.    /w               : do not invoke MP2COD (no .COD or .LST file)
  72.    /x               : do not invoke MP2HEX (no .HEX, .HXL, or .HXH file)
  73.    /q               : quiet mode operation (display no warnings or errors)
  74.    /v               : verbose mode operation (display all warnings and errors)
  75.    /u <sym[=value]> : define linker script symbol and optionally assign value to it
  76.    /g               : generate the report file for stack analysis
  77.    /i               : generate the .LST file and no .COD file
  78.    /r <memoryrange> : reserve the specified program or data memory region
  79.                        For reserving program memory :
  80.                           /r ROM@<startaddress>:<endaddress>
  81.                        For reserving data memory :
  82.                           /r RAM@<qualifier>:<startaddress>:<endaddress>
  83.                        Where, qualifier is either ACCESS, SHARE or GPR
  84.                        Start/end addresses are specified in hex with 0x prefix
  85. nbproject/Makefile-default.mk:119: recipe for target 'dist/default/production/SPlcd.X.production.Hex' failed
  86. make[2]: Leaving directory 'C:/Users/David/MPLABXProjects/SPlcd.X'
  87. nbproject/Makefile-default.mk:84: recipe for target '.build-conf' failed
  88. make[1]: Leaving directory 'C:/Users/David/MPLABXProjects/SPlcd.X'
  89. nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
  90.  
  91. BUILD FAILED (exit value 2, total time: 3s)
(#) patrik81 hozzászólása Jan 15, 2017 /
 
Sziasztok!
Néhány információra lenne szükségem.Azt szeretném,hogy amikor megszakítás jön,akkor belép a rutinba,majd ott kikapcsolja a megszakítást,és kiírja a kijelzőre a 0x45-öt,de csak 0xFD jön másodpercenként a második adattól,mert az első jött adat a 0xFF.Ha a GIE megszakítást nullázom a rutinban,akkor meg semmilyen adat nem jön,pedig előtte az is be volt kapcsolva.
  1. void main()
  2. {
  3.     TRISC=TRISA=0;
  4.     ANSEL=0;
  5.     ANSELH=0;
  6.     SPBRG = 25; //9600 baud,PIC16F690,4MHz belső órajel
  7.    
  8.     RCSTA = 0x90;
  9.     TXEN = 1;
  10.     BRGH = 1;
  11.  
  12.     PIE1bits.RCIE = 1;
  13.     INTCONbits.PEIE = 1;
  14.     INTCONbits.GIE = 1;
  15. }
  16. void interrupt gps()
  17. {
  18.     if(PIR1bits.RCIF)
  19.     {
  20.         while(!RCIF);
  21.         ch=RCREG;
  22.         if (OERR || FERR)
  23.         {
  24.             SPEN = 0;
  25.             SPEN = 1;
  26.         }
  27.         INTCONbits.PEIE = 0;
  28.         //INTCONbits.GIE = 0;
  29.         while(!TXIF);
  30.         __delay_ms(1000);
  31.         TXREG=0x45;
  32.     }
  33. }
(#) Moderátor hozzászólása david10 hozzászólására (») Jan 15, 2017
 
Máskor figyelj jobban oda, mit csinálsz!
(#) Hp41C válasza patrik81 hozzászólására (») Jan 15, 2017 / 1
 
  1. void main()
  2.     {
  3.         TRISC=TRISA=0;
  4.         ANSEL=0;
  5.         ANSELH=0;
  6.         SPBRG = 25; //9600 baud,PIC16F690,4MHz belső órajel
  7.        
  8.         TXEN = 1;
  9.         BRGH = 1;
  10.         RCSTA = 0x90;
  11.      
  12.         PIE1bits.RCIE = 1;
  13.         INTCONbits.PEIE = 1;
  14.         INTCONbits.GIE = 1;
  15.        while (1);
  16.     }
  17.     void interrupt gps()
  18.     {
  19.         if(PIR1bits.RCIF)
  20.         {
  21.             while(!RCIF);
  22.             ch=RCREG;
  23.             if (OERR || FERR)
  24.             {
  25.                 SPEN = 0;
  26.                 SPEN = 1;
  27.             }
  28.             PIE1bits.RCIE = 0;
  29.              while(!TXIF);
  30.              TXREG=0x45;
  31.         }
  32.     }
A hozzászólás módosítva: Jan 15, 2017
(#) patrik81 válasza Hp41C hozzászólására (») Jan 15, 2017 /
 
Szuper!És ha csak a 13. vett adatot akarom kiíratni,mert a GPS elég sok adatot küld?
(#) Hp41C válasza patrik81 hozzászólására (») Jan 15, 2017 /
 
1. A GPS által küldött NMEA0183 sorok elején $ karakter van. Kell egy számláló, amit a $ érkezésekor 12 -ra állítunk. Minden karakter vételekor csökkentjük a számláló értékét, ha 0 lett, a vett karattert elküldjük. Ha megint $ jön, kezdjük előlről.
2. Veszünk két buffert. Minden sikeresen vett karaktert beírunk ebbe a vételi bufferbe és jelezzük a főprogramnak, hogy új karakter jött. Az adási megszakítás megvizsgálja az adási buffert. Ha van benne elköldendő adat, elküldjük, csökkentjük a tárolt karakteret számát. Ha nincs köldendő, letiltjuk az adási megszakítást.
A főprogram kiszedi a vételi bufferből a karaktereket, kibogarássza a számára értékes adatokat a vett NMEA táviatból, feldolgozza, az elküldendő adatokat az adási buffer-be írja. Minden karakter beírásakor engedélyezi az adási megszakítást.
(#) patrik81 válasza Hp41C hozzászólására (») Jan 15, 2017 /
 
Azt próbáltam,hogy a megszakítás előtt várok egy kicsit,majd azután akartam kiíratni a vett jelet,de semmi reakció.
  1. unsigned char ch;
  2. void main()
  3. {
  4.     TRISC=TRISA=0;
  5.     ANSEL=0;
  6.     ANSELH=0;
  7.     SPBRG = 25; //9600 baud,PIC16F690,4MHz
  8.    
  9.     TXEN = 1;
  10.     BRGH = 1;
  11.     RCSTA = 0x90;
  12.  
  13.     PIE1bits.RCIE = 1;
  14.     INTCONbits.PEIE = 1;
  15.     INTCONbits.GIE = 1;
  16.  
  17.     __delay_ms(1);      //ido a megszakitashoz
  18.     PIE1bits.RCIE = 0;
  19.     __delay_ms(1000);   //ido a kiiratashoz
  20.     while(!TXIF);
  21.     TXREG=ch;
  22.     while(1);
  23. }
  24. void interrupt gps()
  25. {
  26.     if(PIR1bits.RCIF)
  27.     {
  28.         while(!RCIF);
  29.         ch=RCREG;      
  30.         if (OERR || FERR)
  31.         {
  32.             SPEN = 0;
  33.             SPEN = 1;
  34.         }
  35.     }
  36. }
A hozzászólás módosítva: Jan 15, 2017
(#) pajti2 válasza kissi hozzászólására (») Jan 15, 2017 /
 
Fogalmam sincs, mire lenne az jó neked. Egy object file temérdek sok szimbolum hivatkozassal van tele, mert meg nincsenek beleirva a vegleges cimek. Például van egy fuggvenyed, azt becsomagolja indexelve, es ha mashonnet van oda hivatkozas, oda a jump-hoz berakja a szimbolum hivatkozast - es nem a tenyleges cimet. A cimeket a linker pakolja bele, amikor eldonti, milyen sorrendben masolja bele a vegleges allomanyba a fuggvenyeket egymas utan. A sorrend például olyasmire is jo lehet, hogy egy adott program részen belül nagyon sűrűn hívott függvény call far ptr helyett call near ptr-t is kaphasson, mert az gyorsabb, és a függvények adott sorrendje mellett kapni tud olyan helyet is a memóriában, hogy éppen elérhető legyen mindenhonnét. Na olyasmi és hasonlók miatt az object még nem kész program, hanem temérdek sok "bedobozolt" erőforrás. Hogy éppen valamelyik 8 bites pic esetében nincsenek külön call címke típusok, attól az object egy ősrégi megörökölt szerkezet, és a toolchain még ugyan úgy épül fel, maximum az adott sdk-ban átdrótoznak pár használaton kívüli részt.

Ami neked inkább kellhet, dobj a linkerből egy assembly dumpot. Ott már a kész címeken nézhetsz meg mindent. A linker helpje írni fogja, hogyan paraméterezheted fel arra is. Linkerje válogatja.
(#) kissi válasza pajti2 hozzászólására (») Jan 15, 2017 /
 
Köszi Neked és nedudgi kollégának is a segítő sorokat, majd nézegetem !
(#) nedudgi válasza kissi hozzászólására (») Jan 15, 2017 /
 
Most találtam:
DS51288H a Microchip dokumentum neve. Ez tartalmazza a COFF fájl leírását. (Appendix A)
A hozzászólás módosítva: Jan 15, 2017
(#) kissi válasza nedudgi hozzászólására (») Jan 15, 2017 /
 
Szia!

Köszi, de ha jól látom, akkor ez már az 'o' fájlok felhasználását írja le...( ha jól tudom, akkor a linker eredményeként ) !
A hozzászólás módosítva: Jan 15, 2017
(#) nedudgi válasza kissi hozzászólására (») Jan 15, 2017 /
 
Ezt már nem tudhatom, mert nem használok C-t.
(#) tsab válasza don_peter hozzászólására (») Jan 16, 2017 /
 
Szia!

SPI is van közte: Példák

Üdv.
(#) don_peter válasza tsab hozzászólására (») Jan 17, 2017 /
 
Köszi, közben meglett, hogy miért nem működött.
Csak Mplab hiba volt..
(#) hapci válasza kriszrap hozzászólására (») Jan 17, 2017 /
 
Látom, nem sok válaszod érkezett. Én C-ben nem vagyok otthon, de gyanítom, hogy ki kell egészíteni a programodat - legalábbis az én érzékelőm is egy kis csavarral adja vissza a hőfokot, bár az adatlap alapján először én is így kezdtem...
Ami frankón működik, azt a kommentek alapján már meg tudod írni.
(#) diginewl hozzászólása Jan 18, 2017 /
 
Tiszteletem a PIC szakértőknek!
Egy outsider kérdez...
Ha valaki szakít időt erre a kérdésre, akkor csak igennel/nemmel válaszoljon a többit nem nagyon fogom érteni. Modellvasutazáshoz szervóvezérlőkhöz (váltóállítás) vannak egyszerű PIC-es kapcsolások a neten. Ehhez a PIC-hez vettem kínából pic programmert.
Annyit jelezett felém egy fórumtárs a hobbivasúton, hogyha feltöltöm a hex filét a pic-be akkor figyeljek, hogy az eredeti órajel maradjon benn a pic-ben (Oscal?).

A pic író ezt a két kérdést tette fel nekem írás előtt. Mind a kettőre NEM-el válaszoltam. Aztán megírta. A pic-et kipróbáltam működik.
Kérdésem: így a pic eredeti órajelét (kalibrációs értékét) használja, jól csináltam az egészet? Vagy csak mázlim volt, hogy működik?
Köszönöm előre is a váalszt!
Newl
A hozzászólás módosítva: Jan 18, 2017

1.jpg

2.jpg
   
(#) pajti2 válasza diginewl hozzászólására (») Jan 18, 2017 /
 
Jól csináltad.

Ha rosszul is csináltad volna, kárt nem okoztál volna vele, újra próbálhatnád akárhányszor.
(#) kissi válasza diginewl hozzászólására (») Jan 18, 2017 /
 
Szia!

Jól csináltad !
(#) diginewl válasza kissi hozzászólására (») Jan 18, 2017 /
 
Köszönöm Mindkettőtöknek a választ!!!
(#) Hp41C válasza diginewl hozzászólására (») Jan 18, 2017 / 1
 
Új 12F629, 12F676 stb. a programtár legutolsó szavában tárolja a belső oszcillátor kalibrációs adatát és a konfigurációs szóban a band gap kalibrációt (bit 13 és bit 12).
A korrekt eljárás:
Csatlakoztatás a programozóhoz.
Kiolvasás, az említett két adat felírása, mentése.
Program betöltése a programozó memóriájába.
A programtár utolsó utasítását át kell írni a kiolvasott értékre. Az utasításnak egy retlw xx utasításnak kell lennie (0x34xx). Ugyanis azok a programok, amelyek felhasználják a kalibrációs adatot, egy call utasítással segítségével veszik elő az értéket és beírják az OSCCAL regiszterbe. Ha nem retlw utasítás programtár utolsó utasítása, a program tovább lép és újra a 0x0000 címre kerül.
A konfigurációs szóban az 13. és 12. bit átállítása a kiolvasottra.
Programozás.
Következő: »»   894 / 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