Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1207 / 1320
(#) Kovidivi válasza Kovidivi hozzászólására (») Dec 21, 2015 /
 
Kiírattam LCD-re a shift értékét ez után: shift = ((shift << 2) | x) & 0x3f; , és ez alapján mindig két különböző értéket kaptam, ha jobbra forgattam az encodert, egymást váltogatva. Beleraktam mindkettőt az if-be, így minden reccenésre növekszik vagy csökken a változó, attól függően, merre forgatok. Nem ugrál, nem hagy ki tekerést. Arra kell figyelni, hogy milyen sorrendben van bekötve az encoder lába. Ha a két lába fel van cserélve egyből nem 0b111000-re kell kérdezni, hanem 0b011100-ra. A program fő része tökéletes, köszi a megosztást! Régóta kerestem egy ilyen egyszerű, mégis logikus megoldást.
(#) killbill válasza Kovidivi hozzászólására (») Dec 21, 2015 /
 
Egesz biztosan nem eliras, mert egy mukodo keszulek forrasabol masoltam ide a kodreszletet.
Viszont nem mindegy, hogy milyen az encoder. A PEC-11 olyan, hogy amikor fix pozicioban van, akkor mindket kimenetet elengedi. Egy döccenésnyi elforditasra egy teljes szekvenciat lejatszik. Csak az a baj, hogy amikor az adott jel valt, akkor prellezik. Mellekelek egy rajzot errol. Bejeloltem, hogy hol van az ket eset, amikor az en programom allitja az encoder nevu valtozot. Nalad azert kell mas ertek az if-be, mert neked maskepp mukodik egy picit az enkodered. Nekem is van egy ALPS tekerentyum, ahhoz kicsit mas szamok tartoznak.
Ha minden rendben van, akkor a ket lab felcserelese csupan az iranyt forditja meg, semmi mas hatasa nincs mukodesre.
A hozzászólás módosítva: Dec 21, 2015

encoder.png
    
(#) ktamas66 válasza Droot hozzászólására (») Dec 21, 2015 /
 
Talán ez alapján:
(#) Wezuv válasza killbill hozzászólására (») Dec 23, 2015 /
 
Sziasztok! XPT2046 témában sikerült előre lépnem. Az SPI kommunikációs sebességet lassítottam irreálisnak tűnő tized, tizenötöd sebességre a gyári max 2MHz-hez képest és láss csodát kezelhetővé váltak a kapott értékek. Nem tudok magyarázatot adni, hogy miért, de ez lett a megoldás. Így is elég gyors a kezelés, hogy 3-4 mintát begyűjtve a hibás mérések ellen kezelhető legyen a lenyomás koordinátája biztonsággal, kellő emberi léptékű sebességgel. Rajzolni folyamatos vonalat nem lehet vele, de nekem nem is erre kell.
Az a hibajelenség is megszűnt, hogy a nyomás erősségétől függően vándorolt a koordináta.
Üdv!
A hozzászólás módosítva: Dec 23, 2015
(#) killbill válasza Wezuv hozzászólására (») Dec 23, 2015 /
 
Elképzelhető, hogy az SPI busz zaja összezavarta. Milyen a nyák?
(#) Wezuv válasza killbill hozzászólására (») Dec 23, 2015 /
 
Nehéz kérdés, hogy milyen a nyák (kétoldalas, nagy integráltságú, üvegszálas). Ha a 10MHz képernyő kommunikációs sebesség átfér, akkor ennek is át kéne. Ráadásul jelenleg szalagkábeles próbapanelen dolgozom, ahol hosszabbak az utak, mert a nyák már nincs itt. Tehát a nyákon és a kábeleken is hasonló a helyzet, annak ellenére, hogy a nyákon sokkal rövidebbek a jel utak.
Arra gondoltam, hogy a pad kapacitása miatti beállási idők okozhatnak mérési hibát. Az Acquisition időt 1,5usec-re írja az adatlap, ami 2MHz mellett 3 órajel. Az 5"-os jobb minőségű paddal 2MHz mellett is értékelhető eredmények jöttek, de messze nem tökéletes. A másik 5"-os kijelzőn még rosszabbak voltak az eredmények, mint a 7"-oson (ezt még nem tudtam letesztelni, de szerintem ez is megjavul). Ezért gondolom, hogy a padtól függ inkább.
(#) szutsgabor hozzászólása Dec 26, 2015 /
 
Sziasztok.
Dolgozok egy projekten ami PIC 18F66K80 vezérlőre épül, és UART-on kell kommunikálnom PC-vel bizonyos esetekben. A demo panel amit használok a fejlesztéshez nem tartalmaz külső kristály oszcillátort, a PIC belsó órajel generátorát használom. Egy olyan hibába ütköztem a tesztelések során hogy ha a panelnak labortápról adom a feszültséget (5V) akkor a soros kommunikáció nem működik megfelelően. Bekapcsolás után ha megtörtént minden inicializáció a PIC soros porton egy "serial port init OK" stringet küldene. Helyette csak valami random karakter érkezik. Ha viszont a panelhez csatlakoztatva van a PICKIT (akár elég ha csak a PICKIT VDD és VSS lába csatlakoztatva van) akkor már tökéletesen működik a soros kommunikáció.
Első körben arra gondoltam, hogy a tápfeszültség esés miatt nem stabil a PIC belső órajele, ebből adódóan a baudrate is elcsúszik, viszont rámértem az összes tápfesz pontra és mindenhol 5,01V a feszültség.
Van bárkinek bármi ötlete, hogy mi okozhatja ezt a problémát? eddig még nem tapasztaltam ilyet.
Köszi előre is a válaszokat.
(#) Hp41C válasza szutsgabor hozzászólására (») Dec 26, 2015 /
 
Tápszűrés.
(#) szutsgabor válasza Hp41C hozzászólására (») Dec 26, 2015 /
 
A betáplálásnál van egy 100µF-os kondi, valamint a +5V vezetősáv mentén kb 10mm távolságonként pedig 100nF-os kondik vannak elhelyezve. Vajon ez nem elegendő egy stabil labortáp mellett?
(#) Wezuv válasza szutsgabor hozzászólására (») Dec 26, 2015 /
 
MCLR engedélyzeve van, a láb hogy van bekötve?
(#) Hp41C válasza szutsgabor hozzászólására (») Dec 26, 2015 /
 
Mi veszi a soros vonalat? Hogyan van összekötve a PIC és a soros vevő?
(#) szutsgabor válasza Wezuv hozzászólására (») Dec 26, 2015 /
 
A képen látható a bekötése

mclr.PNG
    
(#) szutsgabor válasza Hp41C hozzászólására (») Dec 26, 2015 /
 
egy CP2102-re épülő USB-UART átalakítóra csatlakozik a pic. TX-RX RX-TX van összekötve
(#) Prendick válasza szutsgabor hozzászólására (») Dec 26, 2015 /
 
Szerintem nem ér össze a pic GND-je a CT GND-jével. Amikor rádugod a pickit-et, a PC USB csatiján keresztül összezárja és azért működik.
(#) Wezuv válasza szutsgabor hozzászólására (») Dec 26, 2015 /
 
Gondolom minden táplábat bekötötted, stb. Ez esetben én is valami panel szakadásra, vagy egyéb eltervezésre, vagy más kontakt hibára gyanakszom.
(#) jocka0012 hozzászólása Dec 27, 2015 /
 
Üdv!
I2C-n keresztül akarok kommunikálni egy DS1307 rtc-vel.A kód még csak próbálgatás szintjére lett megírva , de annyi a lényeg , hogy PORTB-n ledek vannak és arra kiraktam ideiglenesen a másodperc értékeket , ami a 0x00-n vannak az rtc-ben.7 szegmenses kijelzőt , akarok majd az óra jelzésére használni , aminek a számjegyeit a timer0-al szeretnék léptetni multiplexelve.Ha az init timer0() függvényt nem hívom meg akkor a PORTB ledeken jelzi a másodperc értékeket , viszont amint meghívom az init_timer0() függvényt , akkor nem jelez semmit.Szerintem azért , van , mert amikor éppen zajlik a kommunikáció i2c-n akkor megszakítja a timer0.Az lenne a kérdésem, hogy , hogy lehetne ezt a problémát megoldani?

  1. /*
  2.  * File:   main.c
  3.  * Author: Sony Vaio
  4.  *
  5.  * Created on 2015. december 27., 14:14
  6.  */
  7.  
  8.  
  9. // PIC16F877A Configuration Bit Settings
  10.  
  11. // 'C' source line config statements
  12.  
  13. #include <htc.h>
  14. #include "i2c.h"
  15. #include "ds1307.h"
  16. #include "sevenseg.h"
  17.  
  18. __CONFIG(FOSC_XT & WDTE_OFF & PWRTE_OFF & BOREN_OFF & LVP_OFF & CPD_OFF & WRT_OFF & CP_OFF);
  19.  
  20. #define _XTAL_FREQ 4000000
  21.  
  22. char digit = 0;
  23. unsigned char segment_1 = 0;
  24. unsigned char segment_2 = 0;
  25. unsigned char segment_3 = 0;
  26. unsigned char segment_4 = 0;
  27.  
  28. void init_pic()
  29. {
  30.  
  31.     TRISB = 0x00;
  32.     PORTB = 0x00;
  33.     TRISA = 0x00;
  34.    
  35. }
  36.  
  37. void init_timer0()
  38. {
  39.     T0IE = 1;
  40.     GIE = 1;
  41.     PEIE = 1;
  42.     OPTION_REG = 0xC3; //1:16 prescale
  43.  
  44. }
  45.  
  46.  
  47. void main(void)
  48. {
  49.     unsigned char sec;
  50.     unsigned char I2CData[] = {0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x09, 0x00};
  51.     init_pic();
  52.     //init_timer0();    
  53.     i2c_init();
  54.    
  55.         i2c_start();
  56.     /* Send DS1307 slave address with write operation */
  57.     i2c_send(0xD0);
  58.     /* Send subaddress 0x00, we are writing to this location */
  59.     i2c_send(0x00);
  60.  
  61.     /* Loop to write 8 bytes */
  62.     for(char i=0;i<8;i++)
  63.         {
  64.         /* send I2C data one by one */
  65.         i2c_send(I2CData[i]);
  66.     }
  67.  
  68.     while(1)
  69.     {
  70.         sec = rtc1307_read(0x00);
  71.         PORTB = sec;
  72.     }    
  73.  
  74. }
  75.  
  76. void interrupt ISR()
  77. {
  78.     if(TMR0IF == 1)
  79.     {
  80.         select_digit(digit);  
  81.        // display_4segment(digit,segment_1,segment_2,segment_3,segment_4);
  82.         digit++;
  83.        
  84.         if(digit == 4)
  85.         {
  86.             digit = 0;
  87.         }
  88.     }
  89. }
(#) Hp41C válasza jocka0012 hozzászólására (») Dec 27, 2015 / 1
 
  1. void interrupt ISR()
  2. {
  3.     if(TMR0IF == 1)
  4.     {
  5.         select_digit(digit);  
  6.        // display_4segment(digit,segment_1,segment_2,segment_3,segment_4);
  7.         digit++;
  8.        
  9.         if(digit == 4)
  10.         {
  11.             digit = 0;
  12.         }
  13.         TMR0IF = 0;
  14.     }
  15. }
(#) jocka0012 válasza Hp41C hozzászólására (») Dec 27, 2015 /
 
Tényleg , köszönöm!
(#) pajti2 hozzászólása Dec 29, 2015 /
 
Sziasztok!

Áramköri lehetőségekre szeretnék tippet kérni.

Tápfeszültséget kellene kapcsolni pic-ről a másik áramkör felé. A másik áramkör Microchipék ethernet vezérlője lenne, 3.3v-on átlag 150 mA. Ami miatt aggódom, az a 10 mikros kondi töltése az enc624-esnél. Amikor megkapja a tápot, az hirtelenjében csúnya áramot is fel tud venni. Esetleg megzavarhatja a másik áramkört is, mert áramellátásban csak korlátozott lesz (usb tápos az egész áramköröm). Olyat se nagyon csináltam még, hogy kikapcsoljam az enc-et, mert a magfeszültségre ott lesz a töltött kondenzátor, miközben a táp megszűnik rajta, bár elvileg az minden kikapcsoláskor is úgy van, szóval túl nagy baja csak nem tud lenni tőle.

Az egyik tippem, hogy pnp tranzisztort rakok oda (meghúzok valami darlingtont egy npn-ről, amit vezérlek a pic-el). A másik ki/bekapcsolható stabilizátor ic, de azokat annyira nem ismerem, hogy fejből típust tudjak. Vannak még az áramkorlát fetek, de azokat sem használtam még soha az életben.

Ha valaki csinált már ilyet, vagy találkozott kapcsolási rajzon példával, bármilyen tapasztalt tippnek örülnék.
A hozzászólás módosítva: Dec 29, 2015
(#) ktamas66 válasza pajti2 hozzászólására (») Dec 29, 2015 /
 
Táp kapcsolásra már vannak cél ic-k (pl. MIC94091), de akár duál N+P fettel is meg lehet oldani. A Pickit3 kapcsolási rajzán van PNP-NPN tranzisztoros megoldás, de ilyen alacsony tápnál a P-FET kapcsoló jobb megoldás lehet.

Tápkapcs.JPG
    
(#) AZoli válasza pajti2 hozzászólására (») Dec 29, 2015 /
 
Én KF33 -at használok hasonló helyen. SO8 500mA dropout voltage: 0.4 V
Idézet:
„Amikor megkapja a tápot, az hirtelenjében csúnya áramot is fel tud venni. Esetleg megzavarhatja a másik áramkört is,”

Szerintem a kapcsoló elem elé is kéne egy 2-3 x akkora kondi. Abból fedezhető a 10µF áramfelvétele.
A hozzászólás módosítva: Dec 29, 2015
(#) potyo válasza pajti2 hozzászólására (») Dec 29, 2015 /
 
Szerintem a 10µF töltésének problémáját megoldja az ENC belső szabályzója, ha a Vcap lábon levő kondenzátorra gondolsz. Nem találtam most hirtelen, de szerintem nem tud az a szabályzó túl nagy áramot adni, így ebből következően felvenni sem.
(#) killbill válasza potyo hozzászólására (») Dec 29, 2015 /
 
De ha megis gond lenne, akkor a kapcsolast le lehet lassitani egy a kapcsoloelemen a bazis-kollektor (gate-drain) koze tett kondival (Miller integrator).
(#) pajti2 válasza ktamas66 hozzászólására (») Dec 29, 2015 /
 
@ktamas66:
Köszönöm a tippet, a Micrel katalógus lapon találtam egy ilyet:
Idézet:
„MIC94092 and MIC94093 provide a slew rate controlled soft-start turn-on of 790μs”
direkt kitalálva lavina áramok ellen is. A kapcsrajz a tranzisztorokkal egyébként pont olyasmi, amin filoztam, de szerintem mégis inkább az ic-t választom jelen esetben.

@AZoli:
Nézegettem ilyen low dropout cuccokat, de attól a 0.4v-tól usb táp esetén nekem a hideg futkos a hátamon. Nem merem megkockáztatni a gyengépp usb host esetét, amikor amiatt már nem tud meglenni rendesen a 3.3v sem a stab kimenetén.

@potyo, @killbill:
Köszönöm a tippeket nektek is, bízom benne, hogy a soft-turn-on megoldja a gondomat.

Tündériek vagytok mindannyian
(#) AZoli válasza pajti2 hozzászólására (») Dec 30, 2015 /
 
Idézet:
„Nézegettem ilyen low dropout cuccokat, de attól a 0.4v-tól usb táp esetén nekem a hideg futkos a hátamon. Nem merem megkockáztatni a gyengépp usb host esetét, amikor amiatt már nem tud meglenni rendesen a 3.3v sem a stab kimenetén.”

Nem győzködni szeretnélek, de a 0,4V dropout nem annyit tesz hogy már 3,7V feletti bemenet esetén tudja a 3,3V -ot stabilan? Láttam már terhelt USB -n 4,5V -ot, na de 4V alattit? Az nagyon durva lenne... akkor egy csomó 4,5-5,5V -os mikrokontroller nem mehetne direkt USB táptól?
Közben megnéztem az adatlapot, 200mA esetén a Dropout voltage: Typ.: 0,2V Max.: 0,35V
(#) pajti2 válasza AZoli hozzászólására (») Dec 31, 2015 /
 
Opsz, nagyon eltévesztettem, mire is vonatkozott a javaslat. Újra fogom gondolni a kérdést, csak előbb beszerzek abból a cuccból tesztpéldányokat, mert az a 0.4V rendesen furcsának tűnik nekem a többi cucchoz képest.
A hozzászólás módosítva: Dec 31, 2015
(#) Wezuv válasza pajti2 hozzászólására (») Dec 31, 2015 /
 
Mivel ez egy regulátor és "kapcsoló" egyben, a másik meg csak kapcsoló...
(#) pajti2 válasza Wezuv hozzászólására (») Jan 1, 2016 /
 
Nem is azt furcsállom, hanem hogy a regulátorok el szoktak vinni 1V vagy fölötte.

De egyébként valószínűleg mégsem azt a stabot választom. A jelenlegi áramkörben fontos a miniatürizálás. A kf33-asnak az a nagyon nagy bűne van, hogy nincsen belőle to-220-as, és a dpaknak 100 kelvin / watt a hőellenállása. Jelen esetben nem merem hűtés nélkül hagyni, és úgy már nem 1, hanem 2 stabot kellene hűtőfelületeznem. A kapcsolónak nem kell hűtés.
(#) killbill válasza pajti2 hozzászólására (») Jan 1, 2016 /
 
Idézet:
„Nem is azt furcsállom, hanem hogy a regulátorok el szoktak vinni 1V vagy fölötte.”
Mármint 1W, ugye? Valaki a minap azt írta, hogy "game ower". Szóltam neki, hogy "over", mire azt válaszolta, hogy apróság, magyarul is rosszul ír. Szerintem meg nem apróság, de mindegy is, ez az ő bizonyítványa. Viszont a volt / watt esetében tényleg nem mindegy.
A hozzászólás módosítva: Jan 1, 2016
(#) Wezuv válasza pajti2 hozzászólására (») Jan 1, 2016 /
 
Ez egy low dropout regulátor. Az ilyeneknek alacsony a feszültség, ami esik rajtuk, ezért lehet hűtés nélkül használni, ha teljesíted ezt az alacsony feszesést. Ahol 5V és 3,3V is kell, ott jól lehet használni, némi diódás feszejtetéssel, vagy a nélkül, ha nincs nagy áram. Hogy nálad mi a helyzetm azt értem, de ettől még a kérdéseidre ezek a válaszok...
Következő: »»   1207 / 1320
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