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   593 / 1210
(#) don_peter válasza vicsys hozzászólására (») Nov 18, 2014 /
 
Vadi új a PIC és próbáltam másikkal is. (de mindjárt dobok be egy vadi újat a biztonság kedvéért)
Foglalatban van. Módosítottam az előző hsz-om azon látszik jobban a probléma.
Foglalatban van a PIC.
A hozzászólás módosítva: Nov 18, 2014
(#) vicsys válasza don_peter hozzászólására (») Nov 18, 2014 /
 
Egyelőre nincs jobb ötletem. Vizsgáld felül a szoftvert is.
(#) don_peter válasza vicsys hozzászólására (») Nov 18, 2014 /
 
A legminimálisabb program van benne.
Egy led villog.
És a célhardverben persze tökéletesen működik a PIC.
Ezzel a teszt áramkörrel lesz valami gubanc.
Most dobok be egy új PIC-et, hátha útközben megsérült..
Az érdekessége az, ha már nyúlok a D0 felé és kb 10-15cm-re megközelítem elkezd a program gyorsabban pörögni aztán ahogyan közelítek felé úgy egyre gyorsul. Fura
Készítek egy videót, ez kész
A hozzászólás módosítva: Nov 18, 2014
(#) cross51 válasza don_peter hozzászólására (») Nov 18, 2014 /
 
Esetleg nem lehet, hogy az oszcillátor nem jól van konfigurálva ?
(#) don_peter válasza cross51 hozzászólására (») Nov 18, 2014 /
 
Azt nem hinném, de igazad van, több szem többet lát:
  1. #pragma config PLLDIV   = 5         // PLL osztó 20 MHz-es kristályhoz
  2. #pragma config CPUDIV   = OSC1_PLL2  
  3. #pragma config USBDIV   = 2         // órajel forrása a 96MHz PLL/2
  4. #pragma config FOSC     = HSPLL_HS  // HS oszcillátor és PLL az USB-hez is
  5. #pragma config FCMEN    = OFF       // Fail Safe Clock Monitor tiltása
  6. #pragma config IESO     = OFF       // Belső/külső oszcillátor tiltása
  7. #pragma config PWRT     = ON        // Bekapcsoláskor 62 ms várakozás
  8. #pragma config BOR      = ON        // Brown our Reset engedélyezve
  9. #pragma config BORV     = 2         // Reset szint = 2,7 V
  10. #pragma config VREGEN   = ON        // VUSB belső stabilizátorról megy
  11. #pragma config WDT      = OFF       // Watchdog timer letiltva
  12. #pragma config WDTPS    = 256       // Watchdog utószámláló beállítása
  13. #pragma config MCLRE    = ON        // MCLR (reset) bemenet engedélyezve
  14. #pragma config LPT1OSC  = OFF       // T1OSC nagyobb teljesítményű üzemmód
  15. #pragma config PBADEN   = OFF       // PORTB<4:0> digitális I/O-ként inicializálódik
  16. #pragma config CCP2MX   = ON        // RC1 legyen a CCP2 kimenet
  17. #pragma config STVREN   = ON        // A verem túlcsordulása RESET-et okoz
  18. #pragma config LVP      = OFF       // Alacsonyfeszültségű programozás letiltva
  19. #pragma config ICPRT    = OFF       // Dedikált programozói kivezetés nincs
  20. #pragma config XINST    = OFF       // Extended Instruction Set
  21. #pragma config DEBUG    = OFF       // Háttér nyomkövetés letiltva, RB6/7 normál I/O
  22. #pragma config CP0      = ON        // Kódvédelem kikapcsolva
  23. #pragma config CP1      = ON
  24. #pragma config CP2      = ON
  25. #pragma config CP3      = ON
  26. #if defined(MCHPUSB_BOOTLOADER)     // A Boot blokkba csak ez a bootloader fér bele!
  27.         #pragma config CPB      = ON    // Boot Blokk kódvédelem bekapcsolva
  28. #else
  29.          #pragma config CPB      = OFF  // Boot Blokk kódvédelem kikapcsolva
  30. #endif
  31. #pragma config CPD      = OFF
  32. #pragma config WRT0     = OFF           // Írásvédelem bekapcsolva
  33. #pragma config WRT1     = OFF
  34. #pragma config WRT2     = OFF
  35. #pragma config WRT3     = OFF
  36. #if defined(MCHPUSB_BOOTLOADER)
  37.         #pragma config WRTB     = ON    // Boot Blokk írásvédelem bekapcsolva
  38. #else
  39.         #pragma config WRTB     = OFF   // Boot Blokk írásvédelem kikapcsolva
  40. #endif
  41. #pragma config WRTC     = OFF
  42. #pragma config WRTD     = OFF
  43. #pragma config EBTR0    = OFF       // Táblázatolvasás ne legyen letiltva
  44. #pragma config EBTR1    = OFF
  45. #pragma config EBTR2    = OFF
  46. #pragma config EBTR3    = OFF
  47. #pragma config EBTRB    = OFF       //Boot blokk táblaolvasás ne legyen letiltva
  48. #define CLOCK_FREQ 48000000
(#) don_peter válasza don_peter hozzászólására (») Nov 18, 2014 /
 
No feltettem a videót.: Bővebben: Link
Érdekességképpen még kipróbáltam az asztal alatt is közelíteni és ott is működik ez az elképesztő dolog, hogy egyre közelebb vagyok annál gyorsabban fut a program Fura..
(#) Hp41C válasza don_peter hozzászólására (») Nov 18, 2014 /
 
Nem inkább az RB0 -ról lenne szó? Az az INT0 bemenet egyben. Ha közelítesz hozzá egyre több megszakítást okoz. Az RD0 (a 19. láb) a másik oldalon van.
A hozzászólás módosítva: Nov 18, 2014
(#) don_peter válasza Hp41C hozzászólására (») Nov 18, 2014 /
 
A videón látszik.
RD0..
A B port az ellenkező oldalon van..
(#) Hp41C válasza don_peter hozzászólására (») Nov 18, 2014 /
 
Ha tőlem távolra ven az ICSP csatlakozó, akkor a jobb hátsó láb a 40. Az RB0 a 33. láb a kontroller jobb oldalán van, ahova tart a kezed. Az RD0 a kontroller bal oldalán előlről a 2. láb. Vagy csak én látom rosszul?
A konfigurációban a VREGEN be van kapcsolva, a Vusb lábon nincs 470nF kerámia kondenzátor. Valamint ez a láb nem használható másra a 16F4550 -nél.
Az is lehet, hogy a LED -et használod fénymérésre... És a mért fényerő szerint villogtatja a porogram.
(#) bbalazs_ válasza Hp41C hozzászólására (») Nov 18, 2014 /
 
Esetleg mindig ujraindul?
Tegyel az elejere egy nagy varakozasi ciklust vagy eppen egy csipogast, amikor indul, es igy latod, hogy ez-e a hiba.
(#) don_peter válasza Hp41C hozzászólására (») Nov 18, 2014 /
 
Az ICSP felül van, a jobb felső láb a 40.-es
D0-ás láb amihez hozzáérek illetve közelítek.
D3-as lábon LED van az villog.
USB nincs bekötve, de a láb ki van hozva, jobb oldalon van a D port alatt.
Ne a kontrollert nézd mert a kivezetések át vannak hozva a túl oldalra.
Kicsit feljebb csatoltam a nyáktervet.
Lehet hogy a D0 az inkább D7 lesz most hogy megnéztem a nyáktervet...
(#) don_peter válasza bbalazs_ hozzászólására (») Nov 18, 2014 /
 
Az elején várakozással indul..
Header file amit linkeltem van indulási késleltetés és a programban is kicsi.
Észre lehet venni, ha újra indulna..
(#) matheattila válasza don_peter hozzászólására (») Nov 18, 2014 /
 
Az valóban a D7 és nem a D0...
A Vusb (18. láb) és a GND közé kell egy 470nF-os kondi, ha használod az USB-t ha nem, ezt sem a nyákterven sem a videón nem látom.
A többi kondi értéke (22p, 100n) biztos jó, nem tettél mást véletlenül?
Szerintem a földvonallal lesz a gond, mivel teljesen körbemegy a panelen így egy zárt hurkot képez és ennek a huroknak a közepén van még egy sáv amire a PIC VSS lábai vannak rákötve, így lehet, hogy a közepén az a sáv az egész hurokkal együtt antennaként működik és ezzel az egész áramkört megzavarja, mert a GND a referencia szint és mivel a D7 pont mellette van lehet, hogy emiatt átvesz róla valami zajt.
Esetleg póbáld másik programmal, ha annál is így megy akkor az áramkör, ha nem akkor a program a hibás.
Jó lenne egy oszcilloszkóppal is megvizsgálni az áramkört
Szerintem jobb lenne a jövőben teleföldes nyákokat készíteni, így az áram a lehető legrövidebb úton (legkisebb ellenálláson) tudna visszafolyni a föld ágban és nem kellen körbekerülnie a teljes áramkört, így nem szedne össze fölösleges zajokat (természetesen alacsony frekvenciákon, mert magas frekin a legkisebb impedanciát keresi a visszáram).
Esetleg próbáld megszakítni valahol a földhurkot, és a PIC földjét is jobb lenne inkább a kvarc felöli oldalon rákötni a GND-re és nem a másik oldalon.
Megpróbálhatos a D7-et kimenetre és 0-ra állítani.
(#) don_peter válasza matheattila hozzászólására (») Nov 18, 2014 /
 
Húú akkor lépésről lépésre:
Igen ez a D7 lesz, rosszul mondtam az elején a D0-t.
Vusb nincs bekötve, nem használom ezért nincs ott a kondi, természetesen a láb ki van hozva..
Minden programmal ezt csinálja a teszt boardom.
Természetesen minden kondi jó.
Kvarcnál 22pF, PIC GND - 5v 100nF mind két oldalon, 12v be 330nF - LM7805 - 5v kimenetnél 100nF.
Más nincs is nagyon a nyákon.
A programban minden port digitális és kimenet 0 szinten.
D3 kivétel ott LAT regiszterrel változtatom a szintet ciklusonként.
Oszcillátort pont eladtuk és még nem jött meg az új, így az sajnos nincsen.
Teli földes nyákokat készítek már, tanulva az ilyen és egyéb más problémákból.
Igazából én is erre gondolok, hogy maga a GND amit körbe vezetek el, felszedi a környezeti zajokat mint amolyan antenna és azért gerjed be amikor közelítek felé..
Amikor hozzáérek, akkor kisül vagy amolyan földelés levezetődik a zaj és egyből normálisan tud dolgozni a kristály.

Erre gondolok most..
A hozzászólás módosítva: Nov 18, 2014
(#) benjami válasza don_peter hozzászólására (») Nov 18, 2014 /
 
Most komolyan. Még hányszor írják le neked, hogy a VUSB lábra kell az a szerencsétlen 470nF-os kondi? Még akkor is ha nem használnád, de mivel nálad be van kapcsolva a VREGEN még használod is.
(#) don_peter válasza benjami hozzászólására (») Nov 19, 2014 /
 
Értettem elsőre is, de soha nem okozott problémát mivel az összes célhardveremben amin nem használom az USB-t nincs ilyen gond, pedig megcsináltam párat...
Inicializálásnál pedig az USB ki van kapcsolva...
Nem hiszem, hogy ez befolyásolja a dolgokat, de teszek fel egyet, hogy maximálisan kizárható legyen ez a téma is...
(#) don_peter válasza don_peter hozzászólására (») Nov 19, 2014 /
 
Nos betettem a kondit a Vusb-re, de semmi változás..
Földhurok is el lett távolítva, de ez sem hozott eredményt..
A hozzászólás módosítva: Nov 19, 2014
(#) benjami válasza don_peter hozzászólására (») Nov 19, 2014 /
 
Akkor már csak a villogtatós tesztprogram maradt ki, azt még közölhetnéd.
(#) don_peter válasza benjami hozzászólására (») Nov 20, 2014 /
 
Megoldódott a probléma..
Már mindent kipróbáltam így nem volt más hátra csak az MPLAB és fórdító törlése majd újra telepítése.
Valami beragadhatott vagy a projektben vagy maga a program viccelt meg.
Bár ugyan az a projekt és most működik, szóval nemigazán értettem a dolgot.
Most már jó.
Köszi a segítséget mindenkinek...
(#) sprofan hozzászólása Nov 20, 2014 /
 
Sziasztok!
Tudtok valami pontos 1hz órajel generátort? A Quartz órás megoldást ismerem, de nincs ennél valami elegánsabb megoldás? XR2206 van, de azt sajnálom erre a feladatra. 16F877-et zsúfoltam tele, így a benne lévő órának kellene egy külső pontos órajel.
(#) vicsys válasza sprofan hozzászólására (») Nov 20, 2014 /
 
Csatolom.
(#) dinokal válasza sprofan hozzászólására (») Nov 21, 2014 /
 
Szia! Pontos 1hz csak quartz oszcillátorral állítható elő. Rossz órából a kavics kinyerhető, a picek nagyon jól tudják használni, ennél elegánsabb nincs .
Külön oszcillátorhoz már kell pluszban pár alkatrész, a pichez nem, gugli a barátod.
Az XR2206-ot felejtsd el, nem erre való, erősen tápszűrés és hőmérséklet függő.
PLL kéne a megfogásához, különben mászkál a frekije.
(#) Hp41C válasza sprofan hozzászólására (») Nov 21, 2014 /
 
Mekkora is az a program? Megtölti mind a 8K -t? Nekem még csak egyszer sikerült a Wand óraban. DCF77 dekódolás, infra távvezérlés, I2C RTC kezelés, 40 ébresztési időpont, PC -s kommunikáció és rengeteg fajta kijelzés belefért...
A hozzászólás módosítva: Nov 21, 2014
(#) ktamas66 válasza sprofan hozzászólására (») Nov 21, 2014 /
 
A 16F877-nek nincs belső órajele, ha kvarcról járatod abból csinálhatsz 1 Hz-et, ha van még szabad timer.
(#) bbalazs_ válasza Hp41C hozzászólására (») Nov 21, 2014 /
 
Egy magasabb szintu nyelv (akar c) eseten tucskot-bogarat odafordit.
(#) Hp41C válasza bbalazs_ hozzászólására (») Nov 21, 2014 /
 
Én szoktam itt írogatni, hogy a free XC8 legalább négyszer hosszabb kódot fordít, mint az assembly megoláds... De rá lehet beszálni az optimalizálásra...
(#) don_peter hozzászólása Nov 21, 2014 /
 
Srácok, MCP23S17-es expandernél szeretném, kiolvasni a PORT regisztert (GPIOx), hogy milyen beállítások vannak rajta, de sajnos az istenért sem akar együttműködni velem és a PIC-emmel.
C18, SPI-n kommunikálnék vele.
A regiszterbe írni tudok (OLATx), de kiolvasni a már beírt állapotot nem tudom, így a maszkolásokat nem tudom elvégezni ami nagyon nagy baj mert állandóan, ha írok a regiszterbe az utolsó beírt adat kerül bele.
Tehát:
  1. ujertek = (mcp23s17_read(GPIOA, 0x00)|GP2);
  2. // Ennek az értéke, ha működne az olvasás, így nézne ki:
  3. // ujertek = (0x01|0x02) == 0x03
  4. // Ehelyett ez helyettesítődik be:
  5. // (0x00|0x02) == 0x02

Szimulátorban tökéletesen működik a program, de élesben nem működik a kiolvasás.
Mivel írni tudok a regiszterekbe, így az expander működik és jó a program ezen része, de az olvasás nem.
Az olvasás részének kódja:
  1. unsigned char mcp23s17_read(unsigned char reg, unsigned char adat){
  2.         unsigned char buff;
  3.         SPI2_CS = 0;                    // Chip engedélyezése
  4.         byte_send(0x41);                // Olvasás engedélyezése
  5.         byte_send(reg);                 // Regiszter cím
  6.         buff = byte_send(adat); // Adat
  7.         SPI2_CS = 1;                    // Chip tiltása
  8.         return(buff);                   // Visszatérünk a vett adattal
  9. }

Az MCP23S17 inicializálása:
  1. void mcp23s17_init(void){
  2.         mcp23s17_write(IOCONA, 0x48); // BANK:0, HAEN:1
  3.         mcp23s17_write(IOCONB, 0x48);
  4.         TRIS_GPA(0);            // MCP23S17 A prot kimenet
  5.         TRIS_GPB(0);            // MCP23S17 B prot kimenet
  6. }

A regiszter címeket az adatlapból másoltam ki, így azokkal nem lehet gond.
Arra gondolok, hogy az MCP konfigurációja nem megfelelő, de persze ez nem biztos..
A kábelezéseim biztos, hogy jók, többször ellenőriztem és más SPI-s eszköz gond nélkül működik.
SPI init:
  1. SSP2STATbits.SMP = 0;  
  2.         SSP2STATbits.CKE = 1;
  3.         SSP2STATbits.BF = 0;
  4.         SSP2CON1 = 0b00100100; // Master:1, Fosc/64


Kérném megtisztelő segítségeteket..
A hozzászólás módosítva: Nov 21, 2014
(#) sprofan hozzászólása Nov 21, 2014 /
 
Köszönöm mindenkinek a segítséget!
Gondoltam rá hogy fogok egy kis nyolclábút és csak az órajelet fogom vele létrehozni, de előtte megkérdeztelek inkább titeket hátha van valami jobb megoldás. Kíváncsiságból kizárólag az órát írtam bele belső órajelről és az lcd meghajtását. Így egy nap alatt 5mp-et csúszott a referenciához képest ami azért elég sok mert 2 hónap alatt ez már 5 perc lenne sajnos.
(#) vicsys válasza sprofan hozzászólására (») Nov 21, 2014 /
 
Az nem jó amit csatoltam? Még az elválasztó pöttyöt is tudja villogtatni az ellenfázisú kimenettel.
(#) Pali79 hozzászólása Nov 21, 2014 /
 
Sziasztok!
Egy olyan szabályzót szeretnék készíteni, amivel motor fordulatszámát tudom szabályozni, olyan módon, hogy a motor tengelyén van egy jeladó, ami a fordulattal arányos feszültséget ad, ebből lesz egy AD értékem. Egy másik AD érték adná a motor "kívánt" fordulatát. A lényeg, hogy ha a motor fordulata a terhelés miatt lecsökken, amit a jeladó csökkent jeléből "tudna" a pic, megnövelné a kitöltési tényezőt annyira, hogy a fordulat ismét elérje a beállított értéket és fordítva. Tehát ha a terhelés csökken és a jeladó AD értéke elkezd növekedni, akkor csökkentse a kitöltési tényezőt.
A pic egy 16F877A a program assembly nyelven íródna.
A programra kezdetnek egy elméleti összefoglalót ha tudna valaki adni az nagy segítség lenne.
Köszönöm!
A hozzászólás módosítva: Nov 21, 2014
Következő: »»   593 / 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