Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1128 / 1319
(#) _vl_ válasza adamhollos hozzászólására (») Júl 11, 2013 /
 
Az IESO-t mondjuk ki kéne kapcsolni. Meg ki kéne olvasni menet közben a PLLEN állapotát, és kirakni valami kimenetre, amit multiméterrel vagy egy LED-del lehet nézni.
(#) soos csaba hozzászólása Júl 11, 2013 /
 
A VPP volna a 12V, a VCC1 volna a stabil 5V, a GND volna természetesen a test, az RB7 volna az PGC(órajelvonal), az RB6 pedig volna a PGD(adatvonal). A PIC 16F690-es lábain szerintem pedig a következők a láb bekötések- a VPP 4-es láb, a VCC1 az 1-es láb, a GND a 20-as láb, az RB7 a 10-es láb, az RB6 pedig a 11-es láb. Szerintetek jól gondolom az itt le írtakat?, így helyes volna a bekötés??.
(#) pjg válasza soos csaba hozzászólására (») Júl 11, 2013 /
 
Nem! Itt írtam le. Az adat és az órajel lábak Típusonként eltérhetnek. Ezért kell megnézni az adatlapot.
(#) adamhollos válasza _vl_ hozzászólására (») Júl 11, 2013 /
 
IESO mindegy mert nincs külső oszcillátorom de azért kikapcsolom, PLLEN deafult 0 de kiraktam és tényleg 0. Ha 1 be állítom akkor már rendesen el is szál az oszcilloszkópom de attól persze frekit még tudok mérni és kb tényleg meg 4 szereződik tőle a freki.
(#) soos csaba válasza pjg hozzászólására (») Júl 11, 2013 /
 
Oké értem! akkor annyi a lényeg hogy mindig meg nézem az Ic adatlapját, és majd át kötöm a lábakat az IC-é foglalatnál ha szűkséges. Na ezzel akkor rendben vagyunk, de még mindig ott van az a probléma hogy a programozóm még mindég nem tudja meg írni ezt a fajta PIC-et, de viszont ott szerepel a programban ez a fajta PIC, csak sajnos szürkén lehet látni ezt a típust, és nem lehet rá kattintani ere a típusra, ezt a problémát hogy lehet ki küszöbölni?.
(#) pjg válasza soos csaba hozzászólására (») Júl 11, 2013 /
 
Jó későn szólok, de menjünk át a PIC kezdő. fórumba.
(#) soos csaba válasza pjg hozzászólására (») Júl 11, 2013 /
 
Oda is fel tetem ugyan ezt a kérdést, folytassuk akkor ott.
(#) _vl_ válasza adamhollos hozzászólására (») Júl 11, 2013 /
 
Az IESO-ra én is azt hittem, hogy mindegy, de ha az adatlap azt mondja, hogy csak kvarc esetén kapcsoljuk be, akkor én nem tennék máshogy. A PLLEN pedig egyértelműen képes lenne elrontani az eredményt.
Amit még kipróbálhatsz, hogy írsz valami assembly kódot, ami fel-le állítgatja az egyik portlábat valami ismert, alacsonyabb frekivel (bsf, nop..., bcf, nop..., goto az elejére), és annak nézed a frekijét. Ha mondjuk 2MHz-re rakod, akkor a 2x1us-os periódusnak jól láthatónak kéne lennie a szkópon.
(#) adamhollos válasza _vl_ hozzászólására (») Júl 11, 2013 /
 
Kipróbáltam, (majdnem) ugyan az az eredmény.
(#) adamhollos válasza adamhollos hozzászólására (») Júl 11, 2013 /
 
Azt hiszem ezzel meg kell várnom míg holnap watt vagy icserny feljön.
(#) _vl_ válasza adamhollos hozzászólására (») Júl 11, 2013 /
 
A szkópod tuti? Esetleg megpróbálhatod hangfrekvenciára belőni az egyik PWM kimenetet, és "meghallgatni".
(#) adamhollos válasza _vl_ hozzászólására (») Júl 11, 2013 /
 
igen, tuti
(#) nem hozzászólása Júl 12, 2013 /
 
Sziasztok!

Kontroller: PIC18F14K50
Probléma: USB-vel.

Ennél a PIC-nél szerintetek hogy kell bekötni az USB-t? Csak mert a 251. oldali rajz szerint van egy belső 3.3V-s feszültségszabályzója, és találni a neten sok olyan kapcsolást, ahol a VUSB lábra egyszerűen tesznek egy 470nF-os kondit a föld felé, ugyanakkor PIC32MX-es tapasztalataim szerint a V-USB lábra 3.3V-ot kell kívülről adni...
Illetve hova kössem a V-BUS-t például? Mivel nincs 5V toleráns lába (amikor 3.3V-ról járatom). Ne kössem be? Feszültségosztón kössem be egy megszakításos lábra?
Na mindenesetre 3 szerencsétlen madzag bekötéséről beszélünk, de még nem sikerült működésre bírni, pedig építettem már néhány PIC-es panelt és eddig még egyiknek az USB-jével sem sz****m ennyit.

Help please!

Köszönöm,
Ádám

Szenvedtem-et akartál írni ugye?
A hozzászólás módosítva: Júl 12, 2013
(#) Hp41C válasza nem hozzászólására (») Júl 12, 2013 / 1
 
(#) icserny válasza nem hozzászólására (») Júl 12, 2013 / 1
 
Idézet:
„találni a neten sok olyan kapcsolást, ahol a VUSB lábra egyszerűen tesznek egy 470nF-os kondit a föld felé”
Igen, ennyi kell. Lásd: PICCOLO projekt
Idézet:
„Illetve hova kössem a V-BUS-t például?”
Áramkorlátozó ellenállással bármelyik bemenetre.
(#) nem válasza Hp41C hozzászólására (») Júl 12, 2013 /
 
Köszönöm!
(#) nem válasza icserny hozzászólására (») Júl 12, 2013 /
 
Köszönöm!
(#) adamhollos hozzászólása Júl 12, 2013 /
 
Sziasztok!

PIC18F25K80-nal szeretnék PID-es motorvezérlőt csinálni. Félreértés ne essék, már csináltam ilyet de akkor csak az volt a lényeg, hogy tartson egy sebességet, most viszont használni is szeretném amihez szükség volna arra, hogy tudjak rendesen időt mérni az inpout capture-rel. Viszont valamiért nem úgy viselkedik a PIC belső oszcillátora ahogy kéne.

Először azt vettem észre, hogy a PWM frekvenciája nem annyi mint amennyit a PRx register értéke indokolna
(50Mhz-es oszcilloszkóppal mértem meg) ezért INTIO1 módra álltam át és megmértem a CLKOUT(RA6) lábon a frekit aztán felszoroztam 4-el. így 28,57 MHz adódott, aminek ugye a belső órajelnek kéne lennie és mivel nem állítottam be leosztást (jobban mondva kiszedtem a deafult /2-es leosztást) ezért ennyinek kéne lennie a belső oszcillátor frekvenciájának is, de elvileg 16MHz a belső osszcillátor frekvenciája. Három PIC-kel is kipróbáltam de mind pontosan ugyan ezt az értéket produkálta.

Ez egy gyári hiba? Ennyire megbízhatatlanok a PIC-ek belső oszcillátorai vagy én csesztem el valamit?

Ez a C18 kódom (egyenlőre csak a PWM-ig jutottam ugye):
  1. #include <p18f25k80.h>
  2. #pragma config XINST = OFF, FOSC=INTIO1, IESO= ON, PWRTEN=ON, WDTEN=OFF, MCLRE=OFF
  3.  
  4. #define duty_cycle  CCPR1L
  5.  
  6. #define dirA        LATBbits.LATB5
  7. #define dirB        LATBbits.LATB3
  8. #define testLED     LATCbits.LATC3
  9.  
  10. void configuration(void);
  11. void configuration_interupts(void);
  12. void configuration_PWM(void);
  13. void configuration_inCap(void);
  14. void lo_isr(void);
  15. void hi_isr(void);
  16.  
  17. float PID(float process_value,float setpoint_value,float dt);
  18.  
  19. void main()
  20. {
  21.  
  22.     configuration();
  23.  
  24.     dirA=0;
  25.     dirB=1;
  26.     //T1CONbits.TMR1ON=1;
  27.     T2CONbits.TMR2ON=1;         //Erről megy a PWM
  28.  
  29.     duty_cycle=150;
  30.  
  31.     while(1)
  32.     {
  33.  
  34.     }
  35. }
  36.  
  37. void configuration()
  38. {
  39.     OSCCONbits.IRCF0=1;         //
  40.     OSCCONbits.IRCF1=1;  //belsõ órajel 16MHz
  41.     OSCCONbits.IRCF2=1;  //
  42.  
  43.     TRISA=0;
  44.     TRISB=0;
  45.     TRISC=0;
  46.     LATA=0;
  47.     LATB=0;
  48.     LATC=0;
  49.  
  50.     configuration_PWM();
  51.     configuration_inCap();
  52.     configuration_interupts();
  53.  
  54. }
  55.  
  56. void configuration_PWM()
  57. {
  58.         PSTR1CON=0x11;          //Output steering update occurs on the next PWM period & P1A pin has the PWM waveform with polarity control from CCP1M<1:0>
  59.         CCPTMRSbits.C1TSEL=0;   //ECCP1 is based off of TMR1/TMR2
  60.         PR2=255;                //PWM frekvenciája 20kHz
  61.         CCP1CON=0x3C;           //singel output, PWM mode; P1A and P1C active-high; P1B and P1D active-high
  62.         CCPR1L=0;
  63.         T2CON=0x00;
  64. }
  65. void configuration_inCap()
  66. {
  67.  
  68. }
  69. void configuration_interupts()
  70. {
  71.  
  72. }
  73.  
  74.  
  75. #pragma code high_vector_addr=0x08
  76. void high_vector(void) {
  77.   _asm GOTO hi_isr _endasm
  78. }
  79.  
  80. #pragma code low_vector_addr=0x18
  81. void low_vector(void) {
  82.   _asm GOTO lo_isr _endasm
  83. }
  84.  
  85. #pragma code
  86. #pragma interrupt hi_isr
  87. void hi_isr (void)
  88. {
  89. }
  90.  
  91. #pragma interruptlow lo_isr
  92. void lo_isr (void)
  93. {
  94. }
(#) watt válasza adamhollos hozzászólására (») Júl 12, 2013 / 1
 
Csinálj egy Timer osztást és mérd meg egy lábon az eredményét. Ha ott is ilyen eltérést mérsz a számításokhoz képest, akkor talán a belső oszci ilyen gáz, de szerintem valami miatt nem jól méred a szkóppal a frekit. Legalább két módon meg kell győződni, hogy jól mérsz! Ekkora eltérést egy 1Hz-es LED-es villogtatás is kimutat...
A hozzászólás módosítva: Júl 12, 2013
(#) adamhollos válasza watt hozzászólására (») Júl 15, 2013 /
 
XD a szkóp volt rossz
(#) _vl_ válasza adamhollos hozzászólására (») Júl 15, 2013 /
 
(#) adamhollos válasza _vl_ hozzászólására (») Júl 15, 2013 /
 
xd előtte 10 perccel még jó volt
(#) potyo válasza adamhollos hozzászólására (») Júl 15, 2013 /
 
Akkor megvan a hiba

Nekem viszont sikerült olyat csinálni, hogy van három teljesen egyforma áramkör, teljesen azonos program, gyakorlatilag sorozattermék. Az áramkör néhány esetben csinál visszafelé számolást, és a hátralevő időt ki is írja lcd-re másodpercenként. Na az egyik áramkörben az egyik visszaszámlálás valamiért változó sebességgel halad, lelassul, majd ismét visszaáll normálra. Nem csak a kijelző frissítése marad ki, mert szépen egyesével halad lefelé, de mondjuk három másodperc alatt megy lejjebb egyel. Miközben a háttérben valahogy mégis stimmelnek a dolgok, mert ds18b20 szenzorokat olvas, és ott ha elcsúszna az időzítés, akkor crc hibás lenne az eredmény, ezt viszont nem jelzi, hogy az lenne, mert akkor megállna az egésznek a futása. Egyébként tökéletesen működik, csak épp ez a visszaszámlálás valamiért ennyire megfogja. Pedig elvileg külső áramkörtől nem függ ilyen téren, az lcd is fix időzítésekkel dolgozik, meg a többi bemenettől sem függ a program futása. Gondolnám problémának a programban, hogy esetleg valamelyik rész soká fut le, de egyrészt úgy van megírva, hogy ilyen ne legyen, másrészt akkor a másik két áramkörben miért jó ugyanaz a program? X akta...
(#) adamhollos válasza (Felhasználó 15355) hozzászólására (») Júl 15, 2013 /
 
hol láttál 13-at?
A hozzászólás módosítva: Júl 15, 2013
(#) szaffo555 hozzászólása Júl 16, 2013 /
 
Van egy perifériám, melyhez soros porton kapcsolódom.
A periféria néha önállóan is szolgáltat adatot, többnyire azonban a PIC kérésére. A periféria által küldhető kb. 40 lehetséges adat mintája a program memóriában letárolásra került. Terveim szerint a soros porti adás és vétel FIFO körforgó rendszerben működik majd.
Arra kérnék segítséget miként lehetne a leghatékonyabban beazonosítani a periféria által küldött adatot a letárolt minták alapján? Milyen összehasonlítási algoritmust javasoltok?
(#) nedudgi válasza szaffo555 hozzászólására (») Júl 16, 2013 /
 
Ha nincs sok idő a hasonlítgatásra, akkor a bináris keresést fontolgatnám. (Bár nem tudom hogy milyen összetételű adatokról van szó...)
(#) kissi válasza szaffo555 hozzászólására (») Júl 16, 2013 /
 
Szia!
Én nem ismerek "véletlenszerű" számoknál ( --> adatok ) általánosan használható, jól kereső algoritmust. Sorba rendezném a lehetséges mintákat vélhető gyakoriság alapján és ilyen sorrendben próbálnám végig a mintákkal történő egyezést az első találatig!
A hozzászólás módosítva: Júl 16, 2013
(#) szaffo555 válasza nedudgi hozzászólására (») Júl 16, 2013 /
 
Hát igen: idő valóban nincs sok a hasonlítgatásra, de azért nem tűnik nagyon kiélezettnek sem a dolog Viszont a bináris kereséshez rendezett lista kell emlékeim szerint ezek meg karakterek, ráadásul értelmes szavak formájában.. Így a felezős módszer nem járhat6ó út.
(#) nedudgi válasza szaffo555 hozzászólására (») Júl 16, 2013 /
 
Akkor talán ismertethetnéd az adatok felépítését, a kontroller típusát, esetleg a nyelvet, amit programozáshoz használsz. Úgy könnyebb segíteni...
(#) watt válasza szaffo555 hozzászólására (») Júl 16, 2013 /
 
Ha csak 40 féle minta van, akkor azt könnyen el lehet dönteni az adatok egy adott részének vizsgálatával. Igaz nem írtad, milyen hosszú egy adat, de ha hosszú, akkor elég csak egy bizonyos részt kiválasztani, ami jellemző, ha rövid, akkor pedig még rövidebb rész elég lehet. Ha szerencsés vagy, akár 5..10 karakterből meg lehet mondani melyikről is van szó.
Következő: »»   1128 / 1319
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