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   1005 / 1210
(#) ativagyok hozzászólása Dec 15, 2017 /
 
Köszönöm a válaszokat.
Bakman:
Egy panelgyártó által gyártott PCB-re van forrasztva a PIC, TQFP tokban. Az elcsúszás kizárható. Az előbb kicseréltem a kontrollert, nem változott semmi.
zenetom:
LATE.F2: próbáltam többféle formában is, annak ellenére hogy a többi portnál működik így is.
Kipróbáltam 8 bitet kiírva is, nem segített. Azért írtam csak 3 bitet, mert az E PORT csak 4 bites, abból 1 bit az MCLR, amihez nem tartozik TRIS regiszter.

További fejlemény, hogy kipróbáltam a többi bitjét is az E portnak, amik szintén nem működnek kimenetként. Nagyon érdekes.
(#) Hp41C válasza ativagyok hozzászólására (») Dec 15, 2017 / 1
 
Töltsd fel ide a fordító által generált assembly állományt vagy a disassembly ablak tartalmát.
(#) ativagyok válasza Hp41C hozzászólására (») Dec 15, 2017 /
 
Közben megoldottam...user error...Hibás volt a footprintem a nyáktervezőben.
(#) Bell válasza kriszrap hozzászólására (») Dec 15, 2017 /
 
Az exponenciális mégsem jó.
A lineárisnál indul az első LED, ha az AD konverter eredménye nagyobb, mint 114, logaritmikusnál nagyobb, mint 4 és így tovább.
De bármilyen saját táblázattal lehet próbálkozni.

lin-log.gif
    
(#) kriszrap válasza Bell hozzászólására (») Dec 15, 2017 /
 
Log vagy lineáris legyen vagy átlag ??)
(#) Bell válasza kriszrap hozzászólására (») Dec 16, 2017 /
 
Van valamilyen mérési eredményed 0-1023 között, ami vagy az éppen aktuális A/D tartalma, vagy bármilyen - akár rekurzív - átlag.
A kapott eredmény LED-es megjelenítése a LED-eken a táblázat szerint lehet lineáris, vagy logaritmikus.
(#) kriszrap válasza Bell hozzászólására (») Dec 16, 2017 /
 
Elégsokat segítettél szerintem ebböl már össze tudom hozni valamit köszönöm
(#) patrik81 hozzászólása Dec 18, 2017 /
 
A 2x16 LCD CGRAM írásával próbálkozok PIC16F690-nel,de nem megy.2 pöttyöt várnék a legfelső sorban.Hol a hiba?
  1. LcdInit();
  2. LcdParancs(0x40); //CGRAM írás
  3. __delay_us(40);
  4. LcdAdat(0x02);    //adat arra a címre
  5. __delay_us(40);
  6. LcdParancs(0x02); // curzor haza
  7. __delay_us(40);
  8. LcdAdat(0);       //a nullás címen lévő adat kiíratása
  9. while(1);
(#) Pali79 válasza patrik81 hozzászólására (») Dec 18, 2017 /
 
Szerintem nem jó a sorrend. Bővebben: Link
(#) Elektro.on válasza patrik81 hozzászólására (») Dec 18, 2017 /
 
Szia! Azon gondolkodom, hogy azt a 40 -es címet honnan szedted.

Itt egy részlet egy működő kódomból. Mikropascal-ban de szerintem érteni fogod.

  1. unit MyUnit_LCD;
  2.  
  3.  //  Egyedi karakterek tartalma " á, é "
  4.  
  5. const character_aa: array[0..7] of byte = (6,0,14,1,15,17,15,0);
  6.       character_ee: array[0..7] of byte = (12,0,12,18,30,16,14,0);
  7.  
  8. procedure CustomChar();
  9. procedure ValueToLCD(var value : string[4]);
  10. procedure ErrorToLcd();
  11.      
  12. implementation
  13.  
  14. { LCD-be egyedi karakterek beírása, első sorba
  15.    "Mért távolság: " kiírása. }
  16.  
  17. procedure CustomChar();
  18. var i: Byte;
  19.   begin
  20.     Lcd_Cmd(64);
  21.     for i := 0 to 7 do Lcd_Chr_CP(character_aa[i]);
  22.     Lcd_Cmd(72);
  23.     for i := 0 to 7 do Lcd_Chr_CP(character_ee[i]);
  24.  
  25.     Lcd_Cmd(_LCD_CLEAR);
  26.     Lcd_Cmd(_LCD_CURSOR_OFF);
  27.     Lcd_Cmd(_LCD_RETURN_HOME);
  28.     Lcd_Chr_CP('M');
  29.     Lcd_Chr_CP(1);
  30.     Lcd_Out_CP('rt t');
  31.     Lcd_Chr_CP(0);
  32.     Lcd_Out_CP('vols');
  33.     Lcd_Chr_CP(0);
  34.     Lcd_Out_CP('g :');
  35.   end;
(#) patrik81 válasza Elektro.on hozzászólására (») Dec 18, 2017 /
 
Mindenhol azt írják,hogy 40hexa címtől kezdődik.Viszont furcsa,mert 4 biten a PIC16F877-tel tudok készíteni saját karaktert,viszont másik PIC-kel 8 biten csak az angol betűket írja ki.
(#) Elektro.on válasza patrik81 hozzászólására (») Dec 18, 2017 1 /
 
Próbáld meg decimálisan beírni ahogy én.

A hexa 40 == Dec. 64 -el. A MikroPascalos mintakódban is decimális értéket vár az "Lcd_Cmd()" parancs.
(#) patrik81 válasza Elektro.on hozzászólására (») Dec 18, 2017 /
 
Elfogadja a hexa számot is meg a binárisat is meg a decimálisat is parancsként,de az LcdParancs(64) után lefagy a kijelzés.
(#) Elektro.on válasza patrik81 hozzászólására (») Dec 18, 2017 /
 
Végig megadtad a karakter mind a 8 sorát vagy csak a legfelsőt?
lehet , hogy várná a többit.
(#) patrik81 válasza Elektro.on hozzászólására (») Dec 18, 2017 /
 
Nem adtam meg.Most már határozottabban jobb,hogy megadtam mind a 8 adatot,mivel nem fagy le,de nem tudom hova tette a karaktereket a kijelző,mert nullás címen még mindig semmi nincs,pedig két oszlopnyi vonalat várnék.
(#) Elektro.on válasza patrik81 hozzászólására (») Dec 18, 2017 /
 
Az LcdAdat függvényeden belül mi van?
Mert ahogy látod nekem az "Lcd_Chr_CP(0);" parancsra az aktuális pozícióba kirakja a 0. helyen lévő karaktert.
A hozzászólás módosítva: Dec 18, 2017
(#) patrik81 válasza Elektro.on hozzászólására (») Dec 18, 2017 /
 
Próbálgattam,innen-onnan szedtem
  1. void LcdAdat(byte adat)
  2. {
  3. RA0 = 1; //RS
  4. //RC0 = 0; //R/W (adatot írunk)
  5. if (adat & 0x80) PORTB |= 0x40; else PORTB &=~0x40; //D7(RB6)
  6. if (adat & 0x40) PORTB |= 0x20; else PORTB &=~0x20; //D6(RB5)
  7. if (adat & 0x20) PORTB |= 0x10; else PORTB &=~0x10; //D5(RB4)
  8. if (adat & 0x10) PORTC |= 0x04; else PORTC &=~0x04; //D4(RC2)
  9. if (adat & 0x08) PORTC |= 0x02; else PORTC &=~0x02; //D3(RC1)
  10. if (adat & 0x04) PORTC |= 0x01; else PORTC &=~0x01; //D2(RC0)
  11. if (adat & 0x02) PORTA |= 0x04; else PORTA &=~0x04; //D1(RA2)
  12. if (adat & 0x01) PORTA |= 0x02; else PORTA &=~0x02; //D0(RA1)
  13.  
  14. Delay(1); // Data setup time min. 195 ns
  15. RB7 = 1;
  16. Delay(1); // E pulse width min. 450 ns
  17. RB7 = 0;
  18. Delay(7); // 50 us
  19. }
(#) Elektro.on válasza patrik81 hozzászólására (») Dec 18, 2017 /
 
MikroC —t használsz?
(#) patrik81 válasza Elektro.on hozzászólására (») Dec 18, 2017 /
 
MPlabx-et
(#) sonajkniz válasza patrik81 hozzászólására (») Dec 18, 2017 /
 
Ez most fájt!
(#) patrik81 válasza sonajkniz hozzászólására (») Dec 18, 2017 /
 
Köszi a segítő véleményed Miért nem tetszik az mplab?
(#) bbb válasza patrik81 hozzászólására (») Dec 18, 2017 /
 
Szerintem az fájt neki, hogy a fejlesztőkörnyezetre válaszoltál (MPLAB-X), míg ő a fordítót kérdezte (MikroC).
(#) patrik81 válasza bbb hozzászólására (») Dec 18, 2017 /
 
Azért nem értettem a kérdést,mert én az mplabot fejlesztésre is használom,meg fordításra is,xc8-cal,és mielőtt megépíteném a kapcsolást,kipróbálom előtte proteusban.
A hozzászólás módosítva: Dec 18, 2017
(#) sonajkniz válasza patrik81 hozzászólására (») Dec 18, 2017 /
 
Semmi bajom az MPLAB X-el. Én is azt használom.
Amúgy bbb eltalálta mi fájt.
Az MPLAB X a fejlesztő környezet. Azon belűl választod ki a projekt, vagy az új program létrehozásakor, hogy milyen nyelven akarsz programozni. Annak megfelelő felületet és fordítót tölt be.
Én például assemblyben programozok. A program részlet alapján te valamilyen C nyelvet használsz. Erre vonatkozott a kérdés. Amire most végre megadtad a választ, hogy xc8.
A hozzászólás módosítva: Dec 18, 2017
(#) patrik81 válasza sonajkniz hozzászólására (») Dec 18, 2017 /
 
Arra gondoltam,hogy a MikroC egy fejlesztő környezet,de ha fordító,akkor nem azt használok,hanem xc8-at.Az assembly távol áll tőlem.
(#) Elektro.on válasza patrik81 hozzászólására (») Dec 18, 2017 /
 
Jól gondolod!
A MikroC komplett fejlesztő környezet, fordítóval.
Sőt saját programozó készüláket is lehet kspni hozzá igaz igen borsos áron aminek a driver-ei és felülete 7 tegrálva van a MikroC alá.
Egyébkén ebben is lehet asm kódot írni.

Bővebben: Link
A hozzászólás módosítva: Dec 18, 2017
(#) sonajkniz válasza Elektro.on hozzászólására (») Dec 19, 2017 /
 
Idézet:
„A MikroC komplett fejlesztő környezet, fordítóval.”

Mea culpa, mea culpa mea maxima culpa.
Félre voltam informálva, és nem néztem utána.
Bocsánatot kérek!
(#) don_peter hozzászólása Dec 19, 2017 /
 
Srácok ti hogy oldanátok meg egy aksiról járó PIC stabil referencia feszültségét?
Mérnem kellene azon aksi feszültség szintjét, amelyről működik a a PIC.
Feszültséget csak az aksiról tudok lehúzni..

Én arra gondoltam elsőnek, hogy egy 1.8-2.5v-os stabot teszek rá, de rájöttem, hogy a felesleges feszültséget elkezdeni elfűteni, tehát ez nem a legjobb megoldás.
A legegyszerűbb és legolcsóbb, optimális megoldás lenne a nyerő.

Előre is köszi..
(#) Bakman válasza don_peter hozzászólására (») Dec 19, 2017 /
 
Vannak referencia IC-k, azok keveset fogyasztanak. Ha stabot teszel rá, az is foyaszt, ugyanakkor nem kötelező terhelni (nagyon). Előbbit jobb megoldásnak tartom, elvileg azért referencia IC, mert jobban ellenáll a környezeti ingadozásoknak.
(#) don_peter válasza Bakman hozzászólására (») Dec 19, 2017 /
 
Esetleg tudsz mondani valami típust vagy konkrét alkatrészt?
Érdekes lehet a referencia IC.
Következő: »»   1005 / 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