Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1244 / 1318
(#) Wezuv hozzászólása Feb 8, 2017 /
 
Köszi, félreérthető voltam, én tudom mit csinál, e mellett érvelek, ahogy tudok, a többiek akarják megoldani amit a "srácok" megoldottak már nekünk! Azért talán hasznos volt a félreértett kérdésem, mert így talán az is elolvassa, akinek ez hasznos lesz.
(#) pajti2 válasza Wezuv hozzászólására (») Feb 8, 2017 /
 
Háát nem tudom. A megvalósítás útján az első felismerés az lesz, hogy kár volt az i2c-ért - el van micsodálva. Spi kellett volna. A második, hogy az egy külön külső tok, amire mindenkinek fáj a hócipője. Ergonómiai baj van vele. Mindenki inkább a belső config eepromot fogja szeretni.
(#) Wezuv válasza pajti2 hozzászólására (») Feb 8, 2017 /
 
Sose volt gondom az i2c-vel. A külső tokkal sem lehet gond, ha feltétel az "atombiztos" megoldás (nem veszhet el egy beszámolt termék sem.) Minden más esetben elképzelhető "barkács" megközelítés, ami fejlesztést igényel (mindent pontosan kiszámolni, hogy a lehető legritkábban történhessen meg, hogy nem volt idő elmenteni az adatot a táp megszűnése alatt.) Mindent összevetve olyan megoldást érdemes választani, ami kiforrott és nem függ a kivitelezőtől. De nem szeretnék ebbe nagyon belemenni, már így is megbántam, hogy megszólaltam. (nem miattad)
(#) Droot hozzászólása Feb 12, 2017 / 1
 
Egy kis érdekesség az FRAM-ról:
Egy olyan áramkört fejlesztek, ahol nagyon fontos adatokat kell elmenteni percenként. Mint memóriát az FRAM-ot választottam, de már az adatlap első olvasásától hihetetlennek tűnt a 10^14-en írás/olvasás ciklus, ezért elkezdtem tesztelni. Leszimuláltam több, mint 30 évnyi írás/olvasás ciklust egy adott page-nek az adott memóriarekeszén és tökéletes!
Egészen pontosan 17765378, ami megfelel 33,8 évnyi folyamatos percenkénti írás/olvasásnak, mindezt úgy, hogy a hibás visszaolvasások száma 0, azaz nulla! Az FM24CL16B-GTR típusúról van szó, ami I2C buszon kommunikál és kb. 2-3 órába tellt a teszt, átlagosan 21960 byte/s sebességgel lehet írni 400kHz-es órajellel. Az adatlapja szerint 1MHz-ig fel lehetet menni az órajellel, én 800KHz-el próbáltam, de ott már meghalt a kommunikáció, így maradtam a 400KHz-nél.
(#) killbill válasza Droot hozzászólására (») Feb 12, 2017 /
 
Ha mar az adatlapnak sem hiszel, akkor kinek? Miert hihetetlen ertek a 10^14?
A hozzászólás módosítva: Feb 12, 2017
(#) Droot válasza killbill hozzászólására (») Feb 12, 2017 /
 
Te még sosem láttál hülyeségeket adatlapban?
(#) killbill válasza Droot hozzászólására (») Feb 12, 2017 /
 
De lattam, de nem ilyen alap kerdesben. Az FRAM-ra 10^14 ciklust irnak, azon te mit tudsz tesztelni? Ha masodpercenkent 1000-szer irod, akkor is 3171 evet kibir. Es abban is biztos vagyok, hogy ha 1MHz i2c-t irnak ra, akkor azt is tudja.
(#) Wezuv hozzászólása Feb 12, 2017 /
 
Üdv! Ha netán valaki W25Q128-al küzd harmony alatt, (mondjuk a gyári SST26 Flash driverből kiindulva szeretne egy drivert írni), akkor szeretném jelzni, hogy a gyári DRV_SST26_ReadStatus nem jól kezeli a Flash BUSY regiszterét. Valami csoda folytán az SST26xxx működik, valószínű gyorsabban töröl és ír, vagy más miatt, nem tudom, de a W25Qxxx-nál nem várja meg a törlés végét, így egy törlés utáni írás nem érvényesül, valamint az írás utáni gyors olvasás sem ment jól.
(Az SST-nél sem vár, ami nem helyes, de valahogy megy vele, bár voltak érdekes dolgai, lehet e miatt, majd visszaforrasztom és megnézem azzal is, de csodálkoznék ha így jó lenne, mert ott is elő van írva várakozás a törlés után, vagy a BUSY bit figyelése, míg 0 nem lesz.)
Ha valakit érdemben érdekel a megoldás, jelezze... (harmony 2.02b)
A hozzászólás módosítva: Feb 12, 2017
(#) Kovidivi válasza killbill hozzászólására (») Feb 12, 2017 /
 
Hamarabb fog a réz vezető eltűnni, vagy a nyáj szétporladni, esetleg a 230V-ot addig felváltja valami más technológia
(#) pajti2 válasza Droot hozzászólására (») Feb 12, 2017 /
 
Az frammal nem a minősége volt a nagy probléma, ami miatt kukában kötött ki a fejlesztése, hanem hogy nem sikerült a kapacitás fejlődési ütemet tartani. Lemaradt a fejlődésben, és az nem is lesz másképpen. Üzletileg kegyvesztett játékossá vált, és az gyakorlatilag a végét jelenti valaminek egy tőkés társadalomban. Pláne, hogy a koncepcióra nem igazán sikerült semmi igazolást találni, ahova tényleg kellene, és nem lehet az framnál hatékonyabb helyettesítő módszerrel kiváltani sem.
(#) Droot válasza killbill hozzászólására (») Feb 12, 2017 /
 
Amúgy tök jó, hogy segíteni akartam és egy hasznos információt közöltem, erről szól ez az egész bullshit. Ez tipikus hobbielektronika.hu-s betegség hogy ennek ellenére még én vagyok betámadva. Na mindegy, kérlek ne is reagálj erre mert nem érdekel, max a többieknek.
(#) 187BodyGuard hozzászólása Feb 14, 2017 /
 
Sziasztok!

Azért írok ide mert gondoltam hogy ide talán beillik a kérdésem.

Adott egy Porszívó teljesítmény szabályozója mely vezérlése 12C508A típusú PIC-el van felépítve.
van valakinek esetleg ötlete arra, hogyan lehetne ebből kicsalni a programot? Amennyire én utána néztem azt írják hogy a PICKIT3 nem támogatja, de van egy PICKIT2-esem is, természetesen ez sem támogatja... Van rá mód hogy felfrissíteni a PICKIT2 firmware-ét hogy tudjon olvasni ilyet?
A HEX-et akarom kiszedni belőle, hogy le tudjam klónozni a kapcsolást.
Előre is köszi a segítségeteket!
(#) Tasznka válasza 187BodyGuard hozzászólására (») Feb 14, 2017 /
 
Szia!
Tényleg nem ide való a kérdés
Nem fog menni,mert biztos le van védve olvasás ellen.
(#) 187BodyGuard válasza Tasznka hozzászólására (») Feb 15, 2017 /
 
Szia!

Hát ez sajnálatos módon benne van a pakliban. Sajnos ennyire nem vagyok dörzsölt a programozás terén, így egyszerűbb lenne belőle a HEX-et kiszedni. Ez a típus ha már programozva lett "Read only", szóval kifele valahogy kijön a HEX (ha nem védett) de befele már nem tudom proramozni.

Hát mindegy, megpróbálom akkor máshogy megoldani. Sajnos a saját program írása új eszközre korlátokba ütközik....
A hozzászólás módosítva: Feb 15, 2017
(#) GPeti1977 válasza 187BodyGuard hozzászólására (») Feb 15, 2017 /
 
Nem kell neked mikrokontrolleres áramkör bármilyen egyszerű analóg diakos áramkörrel helyettesíthető.
(#) pajti2 válasza 187BodyGuard hozzászólására (») Feb 15, 2017 /
 
+1 az előttem felszólaló véleményéhez. Az a cucc annyit csinál, hogy fázis állapottól függően nyit / nem nyit a félvezető, és a teljes 230-nak kvázi csak egy kicsi részét engedi rá a motorra, annak folytán aztán kevésbé dolgozik. Sima analóg kapcsolással is meg lehet csinálni ugyan azt. Például van a linken egy conrád cucc a termék adatlapokkal együtt: Bővebben: Link

Kapcsolástechnikát ellesni ingyen van
(#) 187BodyGuard válasza GPeti1977 hozzászólására (») Feb 15, 2017 /
 
Köszi szépen az ötleteket, sajnos a sima diakos nemjó mert az nem indít lágyan...

Ennek az a lényege pont, ha a potméter max állásban van akkor 0-ról addig húzza fel a teljesítményt. Ha fél állásban van akkor meg 0-tól fél kraftra fokozatosan. Ha menet közben hirtelen tekered a potit fel vagy le késleltetve reagál rá az elektronika és szép fokozatosan emeli a fordulatszámot vagy a fényerőt.

Egyetlen egy kérdésem maradt már csak, ha már ott a rajz, elvileg az áramkör valamilyen módon a hálózatból veszi a referenciát a 2db 10M-ás ellenálláson keresztül. A szabályzás nem teljesen tökéletes mert szaggatva emeli a fordulatot motor esetében, izzó esetében pedig az izzó pulzál ahogy emeli a fényerőt. Elképzelhető hogy beleszól a saját mintavételébe? Esetleg lehetne ezen javítani valamit hogy ne remegjen így? Mert volt másik ilyen elektronikám KING CLEAN márkájú és az szépen akadás mentesen szabályoz, igaz abban egy DIP14-es IC lakik, melyről annyit sikerült kideríteni hogy 8Bit Mikrokontroller szintén. Azért fontos, mert pl egy 2kW-os motornál ahogy szabályoz, pl fél potméter állásnál ahogy ki-be kapcsolgat a triak "remeg" a kompakt fénycső fénye is a műhelyben. Szerintem nem egészséges ha az egész hálózatot ilyen módon rángatja!

Nem tudom már milyen porszívóból van, de 2db ugyan ilyenem is van és mind kettő ugyan így szabályoz.
A hozzászólás módosítva: Feb 15, 2017
(#) benjami válasza 187BodyGuard hozzászólására (») Feb 15, 2017 /
 
Ha sehogy sem tudod kiolvasni, akkor be kell szerezni egy-két 12f508 vagy 509-et, aztán meg kell írni a programot. Annyira nem bonyolult a feladat.
(#) Tasznka válasza benjami hozzászólására (») Feb 15, 2017 /
 
Én is az újraírásra szavazok,hamar meg lehet írni. Amúgy ne a fázishasításra koncentrálj,hanem a hullámcsomag vezérlésre,mert szerintem ez arra volt megírva.
(#) 187BodyGuard válasza (Felhasználó 15355) hozzászólására (») Feb 16, 2017 /
 
Koszi simpi! Megnezem! En is gondolkoztam ezen az IC-n, de akkor ezek szerint ez a legegyszerubb. Kiszamolom mennyibol jonne ki az utanepitese BTA26-al.
(#) pajti2 válasza Tasznka hozzászólására (») Feb 16, 2017 /
 
Egyetlen teljes hullámban is temérdek sok energia van egy álló aszinkron motornak. Miért jobb azt egészben ráereszteni, mint fázishasítani?
(#) Tasznka válasza pajti2 hozzászólására (») Feb 16, 2017 /
 
Csak a zavarás miatt,és a triak sem fűtene annyit.Bár tény,hogy mindegy melyik,de a késleltetéshez úgy is kell más is.
(#) Attila86 hozzászólása Feb 16, 2017 /
 
Szkóppal szeretném megmérni hogy egész pontosan mennyi idő alatt megy végbe egy A/D mintavételezés egy dsPIC33E sorozatú mikrovezérlő belső A/D-jával:
  1. while(1)
  2.     {
  3.         AD1CON1bits.SAMP=0;
  4.         LATFbits.LATF0=1;
  5.         while(!AD1CON1bits.DONE) Nop();
  6.         LATFbits.LATF0=0;
  7.         delayms(1);
  8.     }

A DONE bit soha nem állítódik 1-be. Miért? Így van beállítva:
  1. //Órajel:
  2.     CLKDIVbits.PLLPRE=0;
  3.     PLLFBDbits.PLLDIV=68;   //70MHz
  4.     CLKDIVbits.PLLPOST=0;
  5.     //A/D konverter:
  6.     AD1CON1bits.AD12B=1;        //12 bites mód
  7.     AD1CON1bits.FORM=0b00;      //Eredmény jobbra igazítása, előjel nélkül
  8.     AD1CON1bits.SSRCG=0;
  9.     AD1CON1bits.SSRC=0b000;     //A SAMP bit törlése indítja a konverziót
  10.     AD1CON1bits.SIMSAM=0;       //Nincs szimultán mintavételezés
  11.     AD1CON1bits.ASAM=0;         //Automatikus mintavételezés kikapcsolva
  12.     AD1CON2bits.VCFG=0b000;     //AVSS és AVDD használata referenciaforrásnak
  13.     AD1CON2bits.CHPS=0b00;      //Csak a CH0 mintavevő csatornát használjuk
  14.     AD1CON2bits.ALTS=0;         //Nem használjuk az alternáló módot
  15.     AD1CON2bits.SMPI=0b0000;    //Minden egyes konverzió után történhessen megszakítás/DMA címléptetés
  16.     AD1CON3bits.ADRC=0;         //Az ADC konverziós órajelének a forrása a rendszer órajeléből származtatva
  17.     AD1CON3bits.ADCS=0b00000100;//TAD=5*TCY=142,85ns
  18.     AD1CON4bits.ADDMAEN=0;      //DMA nincs használva az A/D-hez, a konverzió eredményei az ADC1BUF0-ADC1BUFF bufferba kerülnek
  19.     AD1CHS0bits.CH0NA=0;        //A CH0 csatorna negatív jelének forrása a VREFL lesz
  20.     AD1CHS0bits.CH0SA=17;       //A CH0 csatorna pozitív jelének forrása az AN17 lesz
  21.     AD1CON1bits.ADON=1;         //A/D modul bekapcsolva!
(#) nedudgi válasza Attila86 hozzászólására (») Feb 16, 2017 /
 
Nem értek a dsPIChez (sem), de nem lehet elég, hogy az elején egy timert elindítasz, és az A/D végén kiolvasod?
(#) ktamas66 válasza Attila86 hozzászólására (») Feb 16, 2017 /
 
Ilyenkor nem neked kell indítani a mintavételezést is?
  1. AD1CON1bits.SAMP = 1;// Start sampling
  2. Delay_us(10);// Wait for sampling time (10 us)
  3. AD1CON1bits.SAMP = 0;// Start the conversion
  4. while (!AD1CON1bits.DONE);// Wait for the conversion to complete
  5. ADCValue = ADC1BUF0;// Read the ADC conversion result
(#) Hp41C válasza Attila86 hozzászólására (») Feb 16, 2017 /
 
Melyik típis? Olvastad az errata -ját?
Pl: dsPIC33EPxxxGM3xx: DONE bit does not work when an external interrupt is selected as the ADC trigger source.
A hozzászólás módosítva: Feb 16, 2017
(#) AZoli válasza Attila86 hozzászólására (») Feb 16, 2017 /
 
Nem biztos hogy segít, de én még csak DMA -val használtam több projectben is.
  1. void InitADC (void) //DMA2
  2. {
  3.     ANSELA = 0b0000010011000000;
  4.     ANSELB = 0b0111111100111111; //an14,13,12,11,10,9,...  C1IN1+ RB5 is analóg bemenet!
  5.     if (HW_Version < 0x0105) ANSELC = 0b0000000000011110;
  6.     else                     ANSELC = 0b0010000000011110; //C3IN3- RC13 is analóg bemenet, komparator
  7.     ANSELD = 0b0000000000000000;
  8.     ANSELE = 0b0000001100011010;
  9.     //ANSELF = 0; Nincs
  10.     ANSELG = 0b0000000000000000;
  11.     //ANSELH = 0; Nincs
  12.     //ANSELJ = 0; Nincs
  13.     //ANSELK = 0; Nincs  
  14.    
  15.     DMA2CONbits.CHEN = 0;
  16.     AD1CON1bits.ADON = 0; //Off
  17.  
  18.     //-- Az 2. DMA csatorna és a DMA megszakítás beállítása ADC -hez
  19.     DMA2CONbits.AMODE = 2; //perpihal indirekt cimzes ettol lesz annyiadik indexen ahanyadik AN-nel tartunk
  20.     DMA2CONbits.SIZE = 0;
  21.     DMA2CONbits.DIR = 0;
  22.     DMA2CONbits.HALF = 0;
  23.     DMA2CONbits.NULLW = 0;
  24.     DMA2PAD = (int)&ADC1BUF0;
  25.     DMA2CNT = 23; //ennyi transfer-t var a modul (+1) utana lesz "DONE" (vagy jon az interrupt ha azt hasznaljuk)
  26.     DMA2REQ = 13;
  27.  
  28.     DMA2STAL= __builtin_dmaoffset (ADC_Buff);
  29.     DMA2STAH = 0x0000;
  30.  
  31.     DMA2CONbits.CHEN = 1;
  32.  
  33.     //*** A/D DMA beállítások ***
  34.     AD1CON1bits.FORM = 0;               // Data Output Format: elojel nelkuli INT
  35.     AD1CON1bits.SSRC = 7;               // Interan Counter (SAMC) ends sampling and starts convertion
  36.     AD1CON1bits.ASAM = 1;               // ADC Sample Control: Sampling begins immediately after conversion
  37.     AD1CON1bits.AD12B = 0;              // 10-bit ADC operation
  38.     AD1CON1bits.ADDMABM = 0;            // DMA buffers are built in
  39.                                         // 0-scatter/gatter (csatornakent csoportositva)
  40.                                         // 1-conversion order mode (konverzios sorrendben)
  41.     AD1CON1bits.SIMSAM = 0;             //no simultan sampling
  42.     //Increments the DMA address after completion of every 22nd sample/conversion operation:
  43.     AD1CON2bits.SMPI = 22;              // mennyi jel utan, 22= 23db adc bufferunk van
  44.     AD1CON2bits.CHPS = 0;               // 0=CH0 only, 3=Converts CH0,CH1,CH2,CH3
  45.     AD1CON2bits.CSCNA = 1;              // Scan Input
  46.     AD1CON2bits.VCFG = 0b001;           //001 External VREF+ Avss
  47.  
  48.     // TAD min: 76ns Nekünk jó a 2000ns, hogy kerek legyen: Így kb. 1ms alatt van meg a 23db konverzió
  49.     AD1CON3bits.ADRC = 0;               // ADC Clock is derived from Systems Clock
  50.     AD1CON3bits.SAMC = 8;               // Auto Sample Time = 8*Tad
  51.     AD1CON3bits.ADCS = 119;             // ADC Conversion Clock Tad=Tp*(ADCS+1)= (1/60M)*120 = 2000ns (0,5Mhz)
  52.                                         // ADC Conversion Time for 10-bit Tc=20*Tad =  20us (50kHz)
  53.  
  54.     //AD1CON4bits.DMABL = 0b000; //1 word lefoglalasa a DMA-ban inputonkent (Allocates 1 words of buffer to each analog input)
  55.     AD1CON4bits.DMABL = 0b010; //4 word lefoglalasa a DMA-ban inputonkent (Allocates 4 words of buffer to each analog input)
  56.     AD1CON4bits.ADDMAEN = 1; // ADC DMA Enable. Conversion results are stored in ADCxBUF0 register for transferring to RAM using DMA
  57.     //23 db AN bemenetünk van: 0,1,2,3,4,x,x,x,8,9,10,11,12,13,14,x,16,17,18,19,20,21,22,23,x,25,x,27,28,x,x,x;
  58.     AD1CSSH  = 0b0001101011111111;  //ANx portok kapcsolasa 0 = Skips ANx for input scan
  59.     AD1CSSL  = 0b0111111100011111;  //ANx portok kapcsolasa
  60.  
  61.     AD1CHS0 = 0xFF7F; /*A/D CH0 neg I/P sel for SAMPLE A is Vrefn */
  62.  
  63.     AD1CON1bits.ADON = 1;
  64. }


  1. if (IFS1bits.DMA2IF == 1)
  2.         {
  3.             ADC_Averaging ();
  4.             IFS1bits.DMA2IF = 0;
  5.         }
(#) Attila86 válasza Hp41C hozzászólására (») Feb 17, 2017 /
 
dsPIC33EP512MU810. Olvastam az errata-ját, nem ír ide vágó problémáról.
(#) Attila86 válasza ktamas66 hozzászólására (») Feb 17, 2017 /
 
Igen így működik, szuper! Akkor azt kellene kitalálnom hogy hogyan lehet megoldani hogy a konverzió magától induljon el. A cél az lenne hogy valamelyik timer mondjuk 10us-onként megszakítást generál, ahol mindig manuálisan elindítanám a mintavételezést, az előzőnek a kész értékét pedig kimásolnám egy tömbbe. Így a DONE bitet sem kellene figyelnem mert 10us alatt biztosan végbemegy a mintavétel.
(#) cross51 válasza Attila86 hozzászólására (») Feb 17, 2017 /
 
Nem tudtam annyira belenézni a doksiba, de emlékeim szerint van egy ASAM bit amivel csak a DONE bitet kell figyelni mert automatikusan mintát vesz majd konvertál.
Következő: »»   1244 / 1318
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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