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   443 / 1210
(#) mrobi válasza Zserigta hozzászólására (») Aug 27, 2013 /
 
Az általad választott chip 2 db hardveres PWM modullal rendelkezik. Ha ennél több kell, akkor vagy választasz egy másik chip-et vagy megoldod szoftveres úton.
(#) Zserigta válasza vicsys hozzászólására (») Aug 28, 2013 /
 
Linket tudnál adni?
Előre is köszi!

Az igaz, hogy csak 1 CCP és 1 ECCP modulja van, de a kézikönyvében a PIC16F887-nek miért van az írva, hogy a P1A, P1B, P1C, P1D az PWM kimenet?
Elég megtévesztő, ha csak 2-t lehet igazán arra használni.
(#) pgabor2 válasza Zserigta hozzászólására (») Aug 28, 2013 /
 
Szia! Ezek a kimenetek DC motor hídkapcsolású meghajtására használhatók (keress rá a FULL-BRIDGE kifejezésre).
(#) icserny válasza Zserigta hozzászólására (») Aug 28, 2013 /
 
Idézet:
„a PIC16F887-nek miért van az írva, hogy a P1A, P1B, P1C, P1D az PWM kimenet?”
Mert ezek tényleg PWM kimenetek. De nem függetlenek, azaz nem lehet külön-külön szabályozni a kitöltési tényezőjüket. Bővebb ismertetésüket lásd az adatlapban!
(#) vicsys válasza Zserigta hozzászólására (») Aug 28, 2013 /
 
(#) cmdnetwizard hozzászólása Aug 28, 2013 /
 
Sziasztok!
Szeretnék kérdezgetni néhány apróságot, amiket nem találtam meg gugli barátom segítségével...

Alap felállásom a PIC16F628A, CCS C nyelven, MPLAB fejlesztőkörnyezettel...
Kérdéseim meg a következőek:
- Melyik portokat tudom megszakításra használni? Azt kiolvastam a lábkiosztásról, hogy az RB0 erre való, de ezen kívül van még ilyen láb?
- Valamint ezt milyen "#int_xxx" elöljáróval tudom meghívni?
- Illetve, hogy a CCP1-et hogy tudom normálisan beállítani?

A válaszokat előre is köszönöm!
Akár egy magyar nyelvű, vagy könnyen érthető angol nelvű leírás is megfelelne ezekre...
(#) vilmosd válasza cmdnetwizard hozzászólására (») Aug 28, 2013 /
 
A PIC IT leirasokat a DS40044D.PDF doksi 107. oldalatol talalod meg. A 107. oldaltol leir minden IT forrast.
A CCS-C helpjeben eleg boven (mintakkal) le van irva az INT_XXX forrasok kezelese. A CCS-C mintapeldakban is talalhato ilyen pelda.
A CCP modul hasznalatara szinten talalsz peldat a help-ben.
MPLAB alatt a CCS help elerheto a "Build All" ikon melletti kerdojelre kattintassal.
(#) cmdnetwizard válasza vilmosd hozzászólására (») Aug 28, 2013 /
 
Köszönöm!
A helpben megtaláltam elég sok mindent, amit még kérdeztem volna!
(#) pjg válasza cmdnetwizard hozzászólására (») Aug 28, 2013 /
 
Milyen help-ben?
(#) cmdnetwizard válasza pjg hozzászólására (») Aug 28, 2013 /
 
A CCS help-ben... MPLAB-ban...
(#) kovacs gabor daniel hozzászólása Aug 29, 2013 /
 
Sziasztok! Van itthon egy pic18f2550-es IC-m. Szeretnek belőle késziteni egy volt és ampermérőt egy 16x2 lcd használatával, mivel láttam hogy elég egyszeű programozni ezt a pic-et. Lehetséges evel a pic-el? Esetleg tudtok valami kapcsolást vagy programot hozzá? Kezdő vagyok még ezen a téren.
(#) szdani hozzászólása Aug 29, 2013 /
 
Sziasztok!
Mplab x-ben szeretnék uart kommunikációt létrehozni egy 16F1937-el, küldeni tudok, de amikor fogadni kéne akkor megáll mint a szög. Valaki látott már ilyen hibát?
(#) cmdnetwizard hozzászólása Aug 29, 2013 /
 
Sziasztok!
Van egy olyan problémám, hogy a programom a writeCommand() fv.-nél kiakad... Pontosabban nem fut tovább...

  1. #include <16F628A.h>
  2.  
  3. #fuses INTRC_IO, NOWDT, PUT, NOPROTECT, NOBROWNOUT, MCLR, NOLVP, NOCPD
  4. #use delay(clock=4000000)
  5.  
  6. #byte PORTA = 0x05
  7. #byte PORTB = 0x06
  8.  
  9. void initLCD();
  10. void writeData(char c);
  11. void writeCommand(char c);
  12. void wait();
  13.  
  14. #int_EXT
  15. void EXT() {
  16.         /*if (bit_test(PORTB, 3)) {
  17.                 LCD_BL = 0;
  18.                 output_low(PIN_B3);
  19.         } else {
  20.                 LCD_BL = 1;
  21.                 output_high(PIN_B3);
  22.         }*/
  23. }
  24.  
  25. void main() {
  26.         set_tris_a(0b00000000);
  27.         set_tris_b(0b00000001);
  28.        
  29.         ext_int_edge(L_TO_H);
  30.         enable_interrupts(INT_EXT);
  31.         enable_interrupts(GLOBAL);
  32.                
  33.         output_high(PIN_B3);
  34.         delay_ms(500);
  35.         initLCD();
  36.         while (true) {
  37.                 /*output_high(PIN_B3);
  38.                 delay_ms(500);
  39.                 output_low(PIN_B3);*/
  40.                 delay_ms(500);
  41.         }
  42. }
  43.  
  44. void initLCD() {
  45.         //writeCommand(0x33);
  46.         //delay_ms(100);
  47.         PORTA = 0x02;
  48.         output_high(PIN_A7);
  49.         delay_us(20);
  50.         output_low(PIN_A7);
  51.         wait();
  52.         writeCommand(0x28);
  53.         wait();
  54.         writeCommand(0x0F);
  55.         wait();
  56.         writeCommand(0x01);
  57.         wait();
  58.         writeData('A');
  59.         wait();
  60.         writeData('A');
  61.         wait();
  62.         writeData('A');
  63.         wait();
  64.         writeData('A');
  65.         wait();
  66.         writeData('A');
  67.         wait();
  68.         writeData('A');
  69. }
  70.  
  71. void writeData(char c) {
  72.         PORTA = 0x40 + (c / 16);
  73.         output_high(PIN_A7);
  74.         delay_us(20);
  75.         output_low(PIN_A7);
  76.         delay_us(100);
  77.         PORTA = 0x40 + (c % 16);
  78.         output_high(PIN_A7);
  79.         delay_us(20);
  80.         output_low(PIN_A7);
  81.         delay_us(100);
  82. }
  83.  
  84. void writeCommand(char c) {
  85.         PORTA = c / 16;
  86.         output_high(PIN_A7);
  87.         delay_us(20);
  88.         output_low(PIN_A7);
  89.         delay_us(100);
  90.         PORTA = c % 16;
  91.         output_high(PIN_A7);
  92.         delay_us(20);
  93.         output_low(PIN_A7);
  94.         delay_us(100);
  95. }
  96.  
  97. void wait() {
  98.         output_high(PIN_B3);
  99.         while(!input(PIN_B0)) {
  100.                 delay_ms(1);
  101.         }
  102.         output_low(PIN_B3);
  103. }


Namost, a PORTA<0:3>-on van az LCD DB<4:7>-e, az RS vonal az az RA6, és az E az pedig az RA7...

A hiba leírása a következő:
A 47. és az 50. sor között kiadom az LCD-nek, hogy váltson át 4 bites üzemmódba, utána várom a felhasználó (azaz az ujjam) beavatkozását (50. sor), és mikor a writeCommand() fv.-hez (51. sor) ér a program, valami misztikus történik, és nem érkezik el a végrehajtás a következő wait() fv.-hez (52. sor)...

Egy kis segítséget szeretnék kérni a a problémámra...
Köszönöm!
(#) vilmosd válasza cmdnetwizard hozzászólására (») Aug 29, 2013 /
 
Kommenteld ki a 31. sort. Mivel az IT kezelo fvenyed ures, ott elakad.
(#) cmdnetwizard válasza vilmosd hozzászólására (») Aug 29, 2013 /
 
Köszi! Megvan, de még mindig randomra áll be az LCD indításkor, mert vagy egysoros, vagy kétsoros, vagy kiírja az 'A' betűket, vagy nem...
(#) cmdnetwizard válasza cmdnetwizard hozzászólására (») Aug 29, 2013 /
 
Megvan, a megvalósító mechanizmus volt a hibás...
Meló után felrakom a jót, ha érdekel valakit!
További szép napot!
(#) svandras0404 hozzászólása Aug 29, 2013 /
 
Üdv Mindenkinek
Egy kis segítséget szeretnék kérni.
asm-el szeretnék megszakítást programozni.
A progit megírtam, de hiba miatt nem fordítja le.
Az ORG 0x004 cím nem tetszik neki. csak ezt írja hibának más gond nincs, de nem értem mi a gond.
Ezt írja:

Executing: "C:\Program Files\Microchip\MPASM Suite\mplink.exe" /p16F887 "adc.o" /u_DEBUG /z__MPLAB_BUILD=1 /z__MPLAB_DEBUG=1 /o"adc.asm.cof" /M"adc.asm.map" /W
MPLINK 4.43, Linker
Device Database Version 1.9
Copyright (c) 1998-2011 Microchip Technology Inc.
Error - section '.org_1' can not fit the absolute section. Section '.org_1' start=0x00000004, length=0x00000a1e
Errors : 1

Link step failed.
----------------------------------------------------------------------
Debug build of project `C:\Users\andras\Documents\ASM\repkond2\adc.asm.mcp' failed.
Language tool versions: MPASMWIN.exe v5.46, mplink.exe v4.44, mplib.exe v4.44
Preprocessor symbol `__DEBUG' is defined.
Thu Aug 29 21:12:58 2013
----------------------------------------------------------------------
BUILD FAILED

Előre is köszönöm.
(#) nedudgi válasza svandras0404 hozzászólására (») Aug 29, 2013 /
 
Valahol már definiáltál valamit arra címre. A programot látva több segítséget tudunk adni.
(#) Lvone hozzászólása Aug 29, 2013 /
 
Sziasztok!

Vettem még régen egy Pickit2-t egy demo boarddal, amin egy 16F887 volt. Szépen programozgattam, ment is minden, de a mostani projekthez elfogyott a RAM. Így lecseréltem a chipet egy 18F46K80-ra. Programozó fájlját frissítettem, így felismeri. Írtam egy progit, ami PORTA-n egy ledet kivillantana. De nem teszi.
Belső OSC-ot használnék, 8Mhz-re konfigolva. A Vcap-ra rátettem egy akkora kondit, mint ami Vdd és Vss közt van. Mást nem piszkáltam. Programozás megy, verify ok.
A kód:
  1. void main()
  2. {
  3.  OSCCON = 0b11100000;
  4.  ODCON = 0;
  5.  INTCON = 0;
  6.  INTCON2 = 0;
  7.  INTCON3 = 0;
  8.  ANCON0 = 0;
  9.  ANCON1 = 0;
  10.  CM1CON = 0;
  11.  CM2CON = 0;
  12.  ADCON0 = 0;
  13.  ANCON1 = 0;
  14.  
  15.  TRISA=0b11111101;
  16.  TRISB=0b11111111;
  17.  TRISC=0b11111111;
  18.  TRISD=0b11111111;
  19.  
  20.   while(1)
  21.   {
  22.     PORTA=0b00000010;
  23.   }
  24. }
A hozzászólás módosítva: Aug 29, 2013
(#) mps válasza Lvone hozzászólására (») Aug 29, 2013 /
 
Szia! A config biteket hogy állítottad?
A 18-asoknál ne PORTA, hanem LATA-t használj ha írni akarod a portot. Persze ez nem csak az A-ra igaz.
(#) Lvone válasza mps hozzászólására (») Aug 29, 2013 /
 
Konfig:
  1. CONFIG1L   :$300000 : 0x0015
  2. CONFIG1H   :$300001 : 0x0008
  3. CONFIG2L   :$300002 : 0x007F
  4. CONFIG2H   :$300003 : 0x007C
  5. CONFIG3H   :$300005 : 0x0089
  6. CONFIG4L   :$300006 : 0x0091
  7. CONFIG5L   :$300008 : 0x000F
  8. CONFIG5H   :$300009 : 0x00C0
  9. CONFIG6L   :$30000A : 0x000F


Köszi a tippet! LAT-al is próbáltam előtte, nem ment. Próbáltam így is, így se. Konfigot átfutom én is még egyszer. Az egész hosszan van leírva. Amúgy MikroC-t használok, a progiban legördülősből lehet választani, de ezt írja ki a végén, amit bemásoltam.
A hozzászólás módosítva: Aug 29, 2013
(#) icserny válasza svandras0404 hozzászólására (») Aug 30, 2013 /
 
Idézet:
„Error - section '.org_1' can not fit the absolute section. Section '.org_1' start=0x00000004, length=0x00000a1e”
Itt inkább a hosszával van probléma. A linker állomány (16f887_g.lkr) szerint a kódlapok 0x07ff méretűek, tehát nem fér bele 0xa1e hosszú kód.
(#) Lvone válasza Lvone hozzászólására (») Aug 30, 2013 /
 
A megoldás a topic tetején volt. Kérek egy fekete pontot. A 16F887-es demopanelen az MCLR láb nem volt felhúzva. De az úgy működött. Most felhúztam, így megy ezzel a piccel is.
(#) icserny válasza Lvone hozzászólására (») Aug 30, 2013 /
 
Idézet:
„A Vcap-ra rátettem egy akkora kondit, mint ami Vdd és Vss közt van.”
Ez pontosan mit jelent? Az adatlap szerint 10 µF "low-ESR" (< 5 Ohm ) kerámia vagy tantál elko kell a VCAP lábra.
A hozzászólás módosítva: Aug 30, 2013
(#) usane hozzászólása Aug 30, 2013 /
 
Hello!

A következő projekthez kellene egy kis segítség. Elsődlegesen ki kellene választanom a megfelelő PIC-et. Hosszú project lesz, de a kiválasztáshoz ugye a későbbi feladatok is kellenek.
Megvalósítandó:
Eleinte:
- Van kb 25 digit bemenet, de legyen inkább 30.
- Lesz egy 4x20 karakteres LCD kijelző vezérelve.
- RTC óra.
- A bemenetek et fogja figyelni a program, és kiirni az aktuális fázist az LCD-re. Illetve a bemeneteknek billentyűzet funksiója is lesz, 3 váltó gomb segítségével ASCII (később esetleg bővített karakterbevitel)
Később megvalósítandó:
- USB kommunikáció. Master oldalit is tudjon (pendrive).
- WIFI és/vagy ethernet.
- Text fájlok tárolása, tehát kell valami memóriabővítés, erre SPI, I2C portok kellenek.
- bemenetekkel kb megegyező kimenet.
- DFC77 modul.

Szóval ez egy vezérlődoboz lenne, ami kijelezné, a megnyomott gombok függvényében éppen hol tart egy aktuális vezérelt fázis,(Megnyomott gombok motorok sebességét jelentik egy gépen, mérni nem kell , meghatározottl.)kiegészítve az aktuális idővel, esetleg meddig rartott az előző ha megnyomnak egy ujabb gombot.Később ezeket nemcsak az LCD-re hanem maradandó memóriában is el kellene tárolni, másolni pendrive és memória között. Még később hálózati kommunikációval másolni ide-oda. Legvégül a memóriába másolt adatokkal kellene a bemenetekkel megegyező kimenetet vezérelgetni.
Remélem sikerült érthetően megfogalmaznom. Szóval a kiválasztásban kéne most egy kis segítség.
A digitális ki-bemenetek száma nem nagyon meghatározó, mert kódoló/dekódolóval csökkenthető, bár a többi feladathoz úgyis olyan PIC kell aminek van bőven lába.
Amit nem tudok eldönteni, hogy szabad-e minden egyebet a PIC-re bízni,(USB,óra,ethernet..) vagy inkább mindhez egy arra a feladatra kitenyésztett állatot kéne rábiggyeszteni és mellé egy sok I2C és SPI-vel rendelkező PIC-et odarakni. Ja és jó lenne ha max. TQFP64 lenne, mert azzal még elboldogulok nyák és forrasztás terén, a TQFP100 már sztem igencsak necces.
Én egy 32 bitex MX6-os PIC-re gondoltam.
Mi a véleményetek?
(#) Sp1k3 hozzászólása Aug 30, 2013 /
 
Hali mindenkinek!
Egy projektem során belefutottam abba a problémába, hogy egy Pic-et kellene 18-24V közötti feszültségre illesztenem, illetve csak a kimenetét elsősorban.
tehát egy ttl áramkörhöz szeretnék 24v-os kimenetet, lehetőleg nem tranzisztorral.
1.8-3-5v -os levelshiftereket találtam, de nagyobb feszültségűt sajnos nem.
Mellékeltem egy képet, ahol ez a probléma egy fet-el van áthidalva, de konkrétan 3.3-5v között. Működhet ez 5-24v között is?
Sajnos nincsenek itthon fetek, nemtudok kísérletezni.
A válaszokat előre is köszönöm!
(#) icserny válasza usane hozzászólására (») Aug 30, 2013 /
 
A kezdő topikba kicsit túl ambíciózus ez a projekt!
Idézet:
„Amit nem tudok eldönteni, hogy szabad-e minden egyebet a PIC-re bízni..”
Én biztosan nem úgy csinálnám. Pl. a ~$20 TP-Link WR-703N kapásból tudja az Ethernet, WiFi és USB host kezelését, akkor minek kínlódni vele?

Idézet:
„Később ezeket nemcsak az LCD-re hanem maradandó memóriában is el kellene tárolni, másolni pendrive és memória között.”
Az USB pendrive helyett talán egyszerűbb SD kártyát kezelni.

Idézet:
„Én egy 32 bitex MX6-os PIC-re gondoltam.”
Arra is gondolni kell, hogy az USB, Ethernet, fájlkezelés feladatait milyen oprenszer (RTOS) és middleware komponensek (TCP-IP, FAT-FS, USB könyvtárak) fogják majd lekezelni? Érdemes megnézni például az AN1264 alkalmazási mintapéldát.
(#) usane válasza icserny hozzászólására (») Aug 30, 2013 /
 
Valóban ambíciózus, de hát így halad előre az emberiség
A köv kérdést majd a haladó topicba intézem.
És ezt a routert ethernettel kötnéd a pichez? A hálózati kommunikáció valóban jobb lenne így, de az usb-t nem macerás így megoldani?
Ami az SD kártyát illeti, tudom, hogy egyszerűbb kezelni, de a pendrive meg jobban felhasználóbarát, bedugod meg kihúzod. Ismerős metódus
Majd átnézem az alkalmazási példákat mindenképpen ha odajutok, mostanában folyton a netet túrom információkat kutatva.
(#) proba válasza Sp1k3 hozzászólására (») Aug 30, 2013 /
 
Ha csak kimenet kell, miért nem jó a tranzisztor ( vagy a vele hasonlóan bekötött FET) ?
Lehet invertál, de ha a mikrovezérlő a kimenet egyszerűen fordítva vezérled.
(#) icserny válasza usane hozzászólására (») Aug 30, 2013 /
 
Idézet:
„És ezt a routert ethernettel kötnéd a pichez?”
jaj, dehogy! UART (a PCB-n elérhető) vagy USB (utóbbi esetben szükség lesz egy USB HUB-ra is, hogy a pendrive számára is maradjon lyuk). Ez esetben a PIC csak a nyomógombokat és az LCD-t kezelné, az alkalmazás a routeren futna (OpenWRT alatt).
Következő: »»   443 / 1210
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