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   651 / 1210
(#) n_yálastrubadúr válasza Hp41C hozzászólására (») Márc 27, 2015 /
 
Egyeznek. És mind a 2-ben úgyanúgy be van állítva a 18f14k50 . A források meg nem térhetnek el mert másolatok. És már a minta könyvtárából az összes fájlt letöröltem csak a main hagytam meg meg a linker-t és ugyanúgy létrehozza ugyanúgy lefordul.. Amit én hozok létre ugyanúgy ugyanazokkal az meg ezt írja ki
A hozzászólás módosítva: Márc 27, 2015
(#) don_peter hozzászólása Márc 27, 2015 /
 
Srácok, nem tudom hol tehetném fel a ezt a kérdést, szóval, ha van megfelelő topik, akkor pakoljuk át oda, vagy ha lehetőség van nyitok neki egy saját topikot.

A kérdésem a PIC-el történő PWM vezérlésű fázishatásos vezérléssel kapcsolatos lenne.
Szeretnék egy fűtőtestet (kerámia vagy sima cekászos) fázishasításos módszerrel vezérelni mivel közvetlen hálózat kellene nekik.
A vezérlést egy PIC-el gondoltam figyelni és szabályozni.
A kérdésem ezzel kapcsolatban, hogyan és miképpen tudom ezt kivitelezni?
Előre is köszi..
A hozzászólás módosítva: Márc 27, 2015
(#) n_yálastrubadúr válasza Hp41C hozzászólására (») Márc 27, 2015 /
 
Igazad volt !! Csak az kavart be, hogy a másik projektestől kész volt. De igazad van, mert ez LF-es. Az LF-es és az F-es azok teljesen kompatibilisek egymással? Másik kérdés: az mitől lehet, hogy ez az egyszerű program fut, ha a wtf függvény nincs hívva. De ha van, akkor nemtudom hová kerül, de nem megy.
  1. #include <htc.h>
  2. //#include "14k_TFT_colors.h"
  3. //#include "14k_TFT.h"
  4. #define _XTAL_FREQ 48000000
  5.  
  6.  
  7. unsigned int g;
  8. void wtf (void);
  9.  
  10.  
  11. void main (void){
  12.         PORTA  = 0;
  13.         PORTB  = 0;
  14.         PORTC  = 0;
  15.         ANSEL  = 0;
  16.         ANSELH = 0;
  17.         TRISA  = 0;
  18.         TRISB  = 0;
  19.         TRISC  = 0;
  20.  
  21.         wtf();              //
  22.        
  23.         for(;;){
  24.                
  25.  
  26.  
  27.         LATC = 0xff;
  28.         g=50000;
  29.         while(g!=0)g--;
  30.         LATC = 0x00;
  31.         g=50000;
  32.         while(g!=0)g--;
  33.         }
  34. }      
  35.  
  36.  
  37. void wtf (void){
  38. }
(#) don_peter válasza (Felhasználó 15355) hozzászólására (») Márc 27, 2015 /
 
Ezt kifejthetnéd bővebben is.
Annyit tudok, hogy a fázishasítás hasonló elven működik mint a PWM, de azért ettől több kell, hogy meg is értsem és meg is tudjam építeni.
(#) lastewer hozzászólása Márc 27, 2015 /
 
Na , a figyelmeztető üzenetekhez létre kellett hozni a mappákat , megvannak ,eltűntek. A kérdés már csak az , hogy miért 9kb -os hex fájlt hoz nekem létre a 38kb helyett? Valaki ötlet?

Mellékeltem a forrás csomagot.
(#) n_yálastrubadúr válasza don_peter hozzászólására (») Márc 27, 2015 /
 
optocsatolóval figyeled a nullátmenetet, és nullátmenetkor kapcsolsz addig "amekkora darab kell a fázisból"így vidékiesen
(#) don_peter válasza n_yálastrubadúr hozzászólására (») Márc 27, 2015 /
 
A fokozatmentes szabályzáshoz ez kevés lenne, nem?
A hozzászólás módosítva: Márc 27, 2015
(#) n_yálastrubadúr válasza (Felhasználó 15355) hozzászólására (») Márc 27, 2015 /
 
Igazad van, csináltam már ilyet azóta is exemnél ez a tapskapcsolós lámpa tartozéka. És mivel igazad van így ott lehett valami elcsúszásom, azt hiszem a nullátmenet megszakította aztán empirikus úton beállítottam egy hullám hosszát és azt daraboltam.
A hozzászólás módosítva: Márc 27, 2015
(#) don_peter válasza (Felhasználó 15355) hozzászólására (») Márc 27, 2015 /
 
Köszönöm, nyitottam egy témát: Bővebben: Link
Amit persze egyből töröltek
Átkerült ide: Fúrógép fordulatszám szabályozó
A hozzászólás módosítva: Márc 27, 2015
(#) lastewer hozzászólása Márc 27, 2015 /
 
Nekem valaki ötlet ? Bővebben: Link
(#) lastewer hozzászólása Márc 27, 2015 /
 
Ha én fordítom le a projectet mikroC-ben , akkor azt ha beégetem nem jó. De miért ?
(#) Hp41C válasza lastewer hozzászólására (») Márc 27, 2015 /
 
Demo limit?
(#) lastewer válasza Hp41C hozzászólására (») Márc 27, 2015 /
 
Nincs benne.Eddig amit tapasztaltam :

- Az eredeti hex fájl mérete 38kb.
- Amit én fordítok le forrást , annak a hexnek a mérete 9kb
- Ha bekapcsolom a long hex funkciót a mikroC-ben , akkor 39kb lesz a hex fájlom

És csak is kizárólag az eredeti letöltött hex fájlal működik a Picben a program. Gőzöm nincs mi lehet vele.
A hozzászólás módosítva: Márc 27, 2015
(#) n_yálastrubadúr hozzászólása Márc 27, 2015 /
 
Sziasztok. Összehoztam a bootloadert végre. A problémája az volt hogy a hi-tech c -ben a linker-t máshol kellett beállítani. Így most jó., de az ili9341-es kijelzőt nem tudom SPI-n Fosc/2-n hajtani. Most ugye a bootloader sebességével megy 48Mhz és Fosc/16. Nem tudja valaki mi ennek a maximuma, mert sehol sem találok erről infót.
A hozzászólás módosítva: Márc 27, 2015
(#) don_peter válasza lastewer hozzászólására (») Márc 27, 2015 /
 
Akkor csak az lehet amit Hp41C is említett, demo limited van és valószínű nem optimalizálja le kellő képen a fordítod.
Volt ilyen gondom nekem is amikor bootloadert akartam beégetni, de nem tudtam lefordítani mert mindig nagyobb volt a kelleténél.
(#) don_peter válasza n_yálastrubadúr hozzászólására (») Márc 27, 2015 /
 
A lényeg, hogy az SPI maximum 10MHz-et tud, ha az Fosc osztásod eredménye ez alatt van, akkor menni fog, ha ezt meghaladja, akkor nem fog elindulni.
Most szívtam én is ezzel a sebességes témával a grafikus kijelzőm miatt.

Azt hiszem legalább is annál a PIC-nél amit én használok 4,16,64-es osztások vannak, szóval le van korlátozva a lehetőség.

Keress egy ilyesmit az adatlapban: "SSPxCON1: SSPx CONTROL REGISTER 1"
Ebben a regiszterben tudod beállítani a sebességét.
A hozzászólás módosítva: Márc 27, 2015
(#) Bell válasza don_peter hozzászólására (») Márc 27, 2015 /
 
Fázishasítást ott érdemes használni, ahol a periódusidőn belüli azonnali beavatkozásra van szükség.
Egy fűtőtest tipikusan nem ilyen.
Szerintem elég azt néhány másodpercenként, vagy akár percenként egy PWM jellel kapcsolgatni. Egy szilárdtest relével például, ami megoldja a leválasztást is.
(#) don_peter válasza Bell hozzászólására (») Márc 27, 2015 /
 
Köszönöm, de ki akarom próbálni mielőtt elvetném az elvet, kérlek látogass el a topikjába: Bővebben: Link
(#) Kapagerenda hozzászólása Márc 27, 2015 /
 
Üdv,
A következő egy digitális gitár hangoló. Alapelv: impulzus számlálás egy bizonyos kb 2 secundum kapuidő alatt. Hiába ugyanazon a pozíción pengetem a húrt mindig más értéket kapok a kimeneten, holott egyformát kéne ugye mivel ugyanaz a freki jön a gitárból. Nemhinném, hogy a gitárból jövő jel frekije válltozna. Már próbáltam mindent, de nem sikerült koorigálnom a hibát.
Segítségeteket szeretném kérni. Alább látható a működés leírása, kapcsolási rajz, valamint a program szerkezet is ami C++ ban íródott. Előre is kösz!
A működsé leírása:
1. A felerősített gitár jele (kb 100mV) az RC szúrőre kerül majd az RA1 bemenetre.
2 16F887 kontrollerben levő belső C2 komparátor négyszögesítést végez a gitár színusz jeléből, referencia 12,3mV.
3. A négyszögjel (0-4,88V) az RA5 kimeneten jelenik meg és két fele ágazik tovább.
3.1 Tranzisztor leválasztja az RA5 kimenetet az RA4 bemenettől további zavarok elkerülése miatt.
3.2 Négyszögjel egy RC fokozaton halad keresztül, mely a négyszögjelböl egy folytonos állandó
2.88 V feszültséget készít a CM1CON0.F6 = 1 feltétel teljesülése érdekében. Ez a jel az RA0
bemenetre csatlakozik és egy belső C1 komparátor biztosítja a megfelelő CM1CON0.F6 = 1
feltétel teljesülését. Erre a jelre azért van szükség, hogy a mérés a gitár pendítésével
kezdődjön, valamint a mérés a gitár elhalgattatásával félbeszakítható legyen egyes esetekben.
4. A tranzisztor után a négyszögjel az RA4 bemenetre kerül, amely a TMR0 belső számláló bemenete. Minden egyes négyszögjel léptet egyet a számlálón.
5. A bejövő impulzusok addig léptetik a számlálót amig a kapuidő tart (i<2 lásd programban). A kapuidő lejártával megkapjuk az RD0-RD7 kimeneteken az eredményt és egészen addig látható míg a
CM1CON0.F6 = 1 feltétel teljesül.

  1. unsigned cnt,i;
  2.  
  3. void interrupt() {
  4.  
  5.     TMR0 = 255;
  6.     if (i<2){                           // kapuidő beállítás
  7.         cnt++;                         // cnt (számláló) növelése
  8.              }
  9.     INTCON = 0x20;                     // interrupt vége
  10.    }
  11.  
  12. void main() {
  13.     OPTION_REG = 0b10100000;   // TMR0 beállítása számláló módba. RA4 = 1 lép egyet a számláló
  14.     ANSEL = 0;                         // All I/O pins are configured as digital
  15.     ANSELH = 0;
  16.  
  17.     TRISA = 0b00011111;
  18.     PORTA = 0;
  19.  
  20.     TRISD = 0;
  21.     PORTD = 0x0;
  22.  
  23.     TMR0 = 255;                 // T0 255 ről indul
  24.     INTCON = 0xA0;            // TMR0 megszakítás engedélyeszése
  25.  
  26.     cnt = 0x0;                    // cnt definiálása
  27.  
  28.     CM2CON0.F7 = 1;           // C2 komparátor működésének engedélyezése
  29.     CM2CON0.F5 = 1;           // C2 komparátor kimenete az RA5 kimenetre van kötve
  30.     CM2CON0.F4 = 1;           // C2  kimenete invertálva van
  31.     CM2CON0.F2 = 0;           // külső referencia feszültség, amely az RA2 bemenetre van kötve
  32.     CM2CON0.F1 = 0;           // C2 bemenete az RA1
  33.     CM2CON0.F0 = 1;
  34.  
  35.     VRCON.F7 = 0;               // belső feszültség referencia kikapcsolva
  36.  
  37.     CM1CON0.F7 = 1;           // C1 komparátor működésének engedélyezése
  38.     CM1CON0.F5 = 0;           // C1 komparátor kimenete csak belsőleg (CM1CON0.F6)
  39.     CM1CON0.F4 = 1;           // C2  kimenete nincs invertálva
  40.     CM1CON0.F2 = 0;           // külső referencia feszültség, amely az RA3 bemenetre van kötve
  41.     CM1CON0.F1 = 0;           // C1 bemenete az RA0
  42.     CM1CON0.F0 = 0;
  43.  
  44.     i = 0x0;                         // i definiálás
  45.  
  46.     while(1)              {
  47.           if (CM1CON0.F6 = 1 ) {   // C1 komparátor aktív állapotba történő billentésével
  48.           PORTD = cnt;               // indul a számlálás. A cnt válltozása a PORTD kimeneteken
  49.           i++;                           // látható.
  50.           Delay_ms(1000);
  51.                          }
  52.        else             {
  53.           i = 0x0;                      // i, cnt resetálása
  54.           cnt = 0x0;
  55.           PORTD = cnt;
  56.              }                }
  57.     }
(#) Kapagerenda hozzászólása Márc 27, 2015 /
 
Előbb nemsikerült feltölteni a kapcsolási rajzot. Nos ittvan az is alább
(#) n_yálastrubadúr válasza don_peter hozzászólására (») Márc 27, 2015 /
 
Köszi. A regiszterekkel nagyon is tisztában vagyok ezeket állítom agyba-főbe. 64 es osztással indítom, aztán ha inicializált a kijelző aztán átállítom 16-ra. Eleve 16-al nem indul, de 16 így megy. Akkor nem is értem youtubon láttam valami 30Mhz-el járatni..
(#) lastewer válasza don_peter hozzászólására (») Márc 27, 2015 /
 
A demo limited volt a gond , köszönöm szépen!
(#) don_peter válasza n_yálastrubadúr hozzászólására (») Márc 27, 2015 /
 
Igen úgy látom neked is ezek az osztások elérhetőek:
  1. 0010 = SPI Master mode, clock = FOSC/64
  2. 0001 = SPI Master mode, clock = FOSC/16
  3. 0000 = SPI Master mode, clock = FOSC/4

Esetleg nézd meg, hogy a PLL jól van e beállítva és úgy nézem ha a 4xPLL-t használod akkor maximum 12MHz-es kristályt tehetsz rá.
Ebben az esetben meg lesz a 48MHz-ed amit ha leosztasz 16-al akkor pontosan 3MHz-et kapsz.
FOSC/16 == 48MHz/16 == 3MHz
Ennek, így mennie kellene.
(#) killbill válasza Kapagerenda hozzászólására (») Márc 28, 2015 /
 
Nem teljesen ertem a kodotat, de az if (CM1CON0.F6 = 1 ) az nem == akar lenni?

Azon felul a PIC osszes VDD es VSS labat be kellene kotni, valamint az MCLR-re sem artana legalabb egy felhuzoellenallas.
(#) killbill válasza Kapagerenda hozzászólására (») Márc 28, 2015 /
 
A masik problema a megvalositassal, hogy 2 masodperc alatt egy 440Hz-es jel 880 impulzus, aminek te csak az also nyolc bitjet teszed ki a D portra.

Az meg a "PIC kezdoknek" topikba jol illik, hogy ha jot akarsz magadnak, akkor sosem deklaralsz i, j, a es hasonloan rovid, gyakran hasznalt nevu valtozokat globalisnak. Azon felul, ha egy valtozot interrupt is es a foprogramod is hasznal, azt jobb, ha volatile-nak deklaralod. Ha ezt a valtozot ezen a forrasfile-on kivul mashonnan nem akarod elerni, akkor deklarald static-nak:
  1. static volatile unsigned cnt, i;

De persze ne 'i' legyen, hanem mondjuk kapu_ido. Mert a valtozok neve egy egyszeru ciklusban tok mindegy, de mas esetekben valahogy utalnia kell arra, hogy mire valo, mit tarolsz benne.
(#) Kapagerenda válasza killbill hozzászólására (») Márc 28, 2015 /
 
Egy gyárilag készitett Debugg express próbapanelt használok tesztelésre amin gondolom gondoskodtak a VDD,VSS, MCLR lábak megfelelő kezeléséről. Elnézést azokat én nem tüntettem fel.
2 másodperc alatt 440 HZ = 880 impulzust úgy gondoltam, hogy mikor végig ér a 255 akkor újrakezdi, vagy inkább használjam a TMR1- es időzítőt ami elvileg 16 bites és képes 65 535 külömböző esetre?
A válltozókat áttdeklarálom. Kösz!
(#) ha1drp válasza don_peter hozzászólására (») Márc 28, 2015 /
 
A modul katalógusa szerint a maximum 10Mhz.
Tapasztalatom szerint (DsPic33-al járatva) 15Mhz-ig gond nélkül fut, igaz csak az inicializálás után.
(#) matheattila hozzászólása Márc 28, 2015 /
 
Valakinek lenne valami ötlete az előző oldali hozzászólásomhoz?
Bővebben: Link
Egy másik topic-ból helyeztettem át ide, de valamiért az előző oldalra került...
(#) Bell válasza matheattila hozzászólására (») Márc 28, 2015 / 1
 
Ha a LED driver regisztereiben nem lehet más mint amit oda kiírtál, korrektnek tűnik, hogy a buffered tartalmát változtatod és kiírod.
(#) don_peter válasza ha1drp hozzászólására (») Márc 28, 2015 /
 
De az már mondjuk egy komolyabb téma amúgy is
De most eszembe jutott, hogy kipróbáljam majd a 18-as család valamelyik tagjával, hogy init után mit bír el..
Annyi biztos, hogy 16MHz sok volt neki..
Következő: »»   651 / 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