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   325 / 1210
(#) Hp41C válasza AZoli hozzászólására (») Nov 4, 2012 /
 
Szia!
Idézet egy 1.8V -os típus (16F1459) adatlapjából:
Idézet:
„AD06 VREF Reference Voltage(3) 1.8 — VDD V VREF = (VREF+ minus VREF-)”

és a hozzá való megjegyzés:
Idézet:
„3: ADC VREF is external VREF+ pin, VDD pin, whichever is ed as reference input.”
(#) kistee hozzászólása Nov 4, 2012 /
 
Sziasztok,

Még egy kérdés erejéig visszatérnék a Code Protect-hez. A védett PIC-eket nem lehet kiolvasni, oké, ezt értem.

Törölni és újra felhasználni valami másra lehet őket? Vagy ez sem megy?

Kösz: kistee
(#) kaqkk válasza kistee hozzászólására (») Nov 4, 2012 / 1
 
A törlés és újraégetés természetesen működik .
(#) Kovabe hozzászólása Nov 4, 2012 /
 
Sziasztok most találtam egy oldalt ami elég sok kapcsolást illetve programot tartalmaz. Remélem segit néhányunknak. Bővebben: Link
Üdv Kovács
(#) Balázs 1.3 JTD hozzászólása Nov 4, 2012 /
 
Köszi a válaszokat!

Üdv:Balázs
(#) tom75 hozzászólása Nov 4, 2012 /
 
Feszültség mérő szeretnék pic-el készíteni neten találtam egy progit, de nem értem mit csinál nem szeretném ezt használni csak megérteni mit kell csinálni.

Ime a progi

  1. void main() {
  2.  
  3.  ANSEL = 0b00000100; // RA2/AN2 is analog input
  4.  
  5.  ADCON0 = 0b00001000; // Analog channel select @ AN2
  6.  
  7.  ADCON1 = 0x00;   // Reference voltage is Vdd
  8.  
  9.  CMCON0 = 0x07 ; // Disable comparators
  10.  
  11.  TRISC = 0b00000000; // PORTC All Outputs
  12.  
  13.  TRISA = 0b00001100; // PORTA All Outputs, Except RA3 and RA2
  14.  
  15.  Lcd_Init();        // Initialize LCD
  16.  
  17.  Lcd_Cmd(_LCD_CLEAR);      // CLEAR display
  18.  
  19.  Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
  20.  
  21.  Lcd_Out(1,1,Message1);
  22.  
  23.  Lcd_Chr(2,10,'V');
  24.  
  25.  
  26.  
  27.  
  28. Innen ha eltudnátok mondani mit csinál akkor nagyon megköszönném .
  29.  
  30. do {
  31.  
  32.   ADC_Value = ADC_Read(2);
  33.  
  34.   DisplayVolt = ADC_Value * 2;
  35.  
  36.   volt[0] = DisplayVolt/1000 + 48;
  37.  
  38.   volt[1] = (DisplayVolt/100)%10 + 48;
  39.  
  40.   volt[3] = (DisplayVolt/10)%10 + 48;
  41.  
  42.   Lcd_Out(2,5,volt);
  43.  
  44.   delay_ms(500);   // Hold for 500 ms
  45.  
  46.  } while(1);
  47.  köszi Tamás
A hozzászólás módosítva: Nov 4, 2012
(#) ToMikaa hozzászólása Nov 5, 2012 /
 
Sziasztok!

Van egy érdekes kérdésem. Arról van valamelyőtöknek tapasztalata, hogy egy PIC (adott esetben egy 18F4685) hány újra programozást bír ki? Az adatlap szerint meg van adva a belső flash memóriára egy 100.000-es érték, mint endurance, de gyanítom, ez egy erős közelítő érték. Azért érdekelne, mert a fejlesztés során jópárszor be kell égetnem a programot és szeretném tudni, hogy mennyire kell óvatosnak lennem. Találkozott már közületek valaki kifáradt flash-es példánnyal?
(#) kaqkk válasza ToMikaa hozzászólására (») Nov 5, 2012 /
 
Elég hosszú fejlesztés lesz , ha 100000 égetés lesz . Egyébként én úgy szoktam : hogy egy picen fejlesztek ,és egy új picbe égetem a kódvédett programot a kész készülékben .
(#) ToMikaa válasza kaqkk hozzászólására (») Nov 5, 2012 /
 
Hosszúnak hosszú és többször kell magán az eszközön futtatni a debugger-t, mert a szimulátor nem tud mit kezdeni azzal, ha egy programrészletnek kell a külső EEPROM/SRAM, vagy épp az LCD kijelző.
(#) ToMikaa válasza tom75 hozzászólására (») Nov 5, 2012 /
 
Üdv!

Az én értelmezésem szerint a kód a következőket csinálja:

  1. ADC_Value = ADC_Read(2);  // Kiolvassa az analóg-digitál átalakító 2. csatornájának értékét, amit eltárol az ADC_Value változóban

  1. DisplayVolt = ADC_Value * 2; // Az előbb eltárolt érték kétszeresét értékül adja a DisplayVolt változónak (gondolom ez lesz a mért feszültségérték, ami ki lesz jelezve)

  1. // Ez gyakorlatilag a DisplayVolt számérték szöveggé alakítása a célból, hogy meg lehessen jeleníteni az LCD kijelzőn. A volt[] tömbbe kerül a szöveggé alakított számérték.
  2. volt[0] = DisplayVolt/1000 + 48; // Százas helyiérték
  3. volt[1] = (DisplayVolt/100)%10 + 48; // Tízes helyiérték
  4. volt[3] = (DisplayVolt/10)%10 + 48; // Egyes helyiérték
  5. // Itt a +48 azért kell, mert ez a '0' karakter kódja, így kiíratáskor a 0 számnak a '0' karakter fog megfelelni.  Nyilván, ha nem adnánk hozzá ezt az értéket, akkor a kijelzőn csak értelmetlen karakterek jelennének meg, ezért el kell tolni ezt a számot annyival, hogy a 0 pontosan a kijelző karakterkészletének a '0'-s karakterére essen.

  1. Lcd_Out(2,5,volt);  // Kiíratjuk a volt[] karaktertömbben lévő szöveget az LCD-re (ha jól sejtem, a 2. sor 5. oszlopától kezdve)

  1. delay_ms(500); // Várunk 500 milliszekundumot, majd az egész folyamat kezdődik elölről. (a while(1) miatt)


Remélem emészthető, ahogy leírtam.
A hozzászólás módosítva: Nov 5, 2012
(#) ToMikaa válasza ToMikaa hozzászólására (») Nov 5, 2012 /
 
Eh, már nem tudok módosítani. Szóval ami még feltűnt, hogy a szöveggé konvertáló kódnál a volt[1] után volt[3] jön, de a volt[2] nem kap értéket, így hibás lesz a kijelzett érték. Ezt módosítani kellene volt[3] = ... -ról volt[2] = ... -ra.
(#) tibike32 hozzászólása Nov 6, 2012 /
 
Sziasztok!
Csak nemrég kezdtem el foglalkozni a PIC-el, és ezért kérném a segítségeteket.
Szeretnék építeni egy körszámlálót az otthoni autópályámhoz.
Találtam is a neten Lap counter egy jó kis kapcsolást hozzá, de ez C nyelven íródott és nem tudom HEX-be lefordítani.
Ha tudnátok ebben segíteni, nagyon megköszönném.

Tibi
(#) ToMikaa válasza tibike32 hozzászólására (») Nov 6, 2012 /
 
Szükséged lesz egy PIC C fordítóra. A forráskódból ítélve egy HI-TECH C for PIC10/12/16 változatra. Ingyenes regisztráció után letöltheted a Microchip honlapjáról a LITE verziót, ami szintén ingyenes.

Bővebben: Link

A program lefordításához ajánlom telepíteni (ha még nincs fent) az MPLAB X fejlesztőkörnyezetet. Ebben létrehozol egy új projektet a PIC16F690-hez. Ebbe a projektbe másolod be a honlapon fellelhető kódokat, majd lefordítod és az elkészült HEX-et már be is programozhatod.
A hozzászólás módosítva: Nov 6, 2012
(#) tibike32 válasza ToMikaa hozzászólására (») Nov 6, 2012 /
 
Köszi a választ.
Megpróbáltam a leírtak szerint , de valami gondja van és nem akarja megcsinálni.
(#) n_yálastrubadúr hozzászólása Nov 6, 2012 /
 
Szép napot!

Nagy a gondom. Azt sem tudom, hogyan csináljak pic-cel olyan kapacitív kapcsiolót ami 1-2mm-es távból kapcsol. Mindemelett, tudom szinte lehetetlen, hogy megmaradjon az alvó állapot áramfelfételhez legalább közeli fogyasztás. Szívesen várom az ötleteket. Köszönöm.
(#) ToMikaa válasza tibike32 hozzászólására (») Nov 6, 2012 /
 
Pontosan mi a hiba?
(#) tibike32 válasza ToMikaa hozzászólására (») Nov 6, 2012 /
 
Elindítom az új projektet, bemásolom a kódokat és ezt írja ki :
Build aborted. The project contains no source files.
BUILD FAILED: Tue Nov 06 13:25:37 2012

Egy részletesebb leírást tudnál adni , hogy hogyan csináljam ?
(#) ToMikaa válasza tibike32 hozzászólására (») Nov 6, 2012 / 1
 
Nos:

1) Létrehozod ugye a projektet: File -> New project -> Microchip Embedded -> Standalone Project
Next gomb
2) Select device: Device mezőbe begépeled, hogy PIC16F690
Next
3) Supported device header: None
Next
4) Hardware tool: amilyen programozód van, nálam ez épp PICkit2
Next
5) Select compiler: HI-TECH PICC v9.83
Next
6) Project name: LapCounter
Finish

Ekkor létrejön egy üres projekt. Ebbe kellenek forrás- és header fájlok. Elsőnek legyen a main.c. Ehhez a bal oldalon a projektedben lévő Source files mappára jobb gombbal kattintasz, majd a felugró menüből kiválasztod a New -> C Source file pontot. A megjelenő ablakban a File Name-hez beírod, hogy main.c, majd rányomsz a Finish-re. Ekkor létrejön egy üres main.c fájl. Ebbe bemásolod a website-ról a "Listing 2: Lap Counter Code" kódot.

Ha ez megvolt, akkor egy kicsit trükkösebb rész jön, ugyanis a készítő nem tette fel az Lcd.c-hez tartozó header fájlt, így ezt most legegyszerűbben úgy oldjuk meg, hogy a honlapról a "Listing 1: LCD Library" kódot be kell másolni a main.c-be a void init() függvény elé. Ha ez sikerült, akkor a main.c fájl elején lévő #include "Lcd.h" sort ki kell törölnöd.

Ha mindez megvolt, Ctrl+S-el elmented a forrást és megpróbálhatod lefordítani. Ha nem megy, akkor küldök egy kész projektet, ahol megnézheted, hogy hogyan kell megcsinálni.

Tudom, szebb lett volna, ha az LCD meghajtó kódot külön C és H fájlba rakom, de így most egyszerűbb megcsinálni.
A H-ban egyébként a függvények definícióinak kell szerepelnie, pl. void LCDInit(void);
Ha szeretnéd, ezt is meg lehet csinálni, akkor kissé változik a folyamat.
A hozzászólás módosítva: Nov 6, 2012
(#) tom75 válasza ToMikaa hozzászólására (») Nov 6, 2012 /
 
köszi szépen a leírást

Tamás
(#) tibike32 válasza ToMikaa hozzászólására (») Nov 6, 2012 /
 
Köszi a gyors választ.
Most csak az volna a gondom, hogy nincsenek ilyen menük az MPLAB-ban mint amiket írtál.
Nekem a 8.56-os van fent.
(#) ToMikaa válasza tibike32 hozzászólására (») Nov 6, 2012 /
 
Jahogy neked MPLAB van. Igen, én MPLAB X-hez írtam instrukciókat, de a régiben is hasonlóan lehet projektet csinálni.

MPLAB-ban is az a lényeg, hogy csinálsz egy projektet PIC16F690-hez és a HI-TECH C fordítót választod ki. Hozzáadsz egy üres fájlt, amibe a fentebb leírt módon bemásolod a kódokat, majd elmented main.c néven. Utána lefordítod és kész.
(#) tibike32 válasza ToMikaa hozzászólására (») Nov 6, 2012 /
 
Letöltöttem az X-et és végig csináltam amit írtál.
Bemásoltam az LCD-hez való listing1-et, kitöröltem a lcd.h sort is.
Megcsinálja a fordítást, de van egy csomó hiba benne.
(#) ToMikaa válasza tibike32 hozzászólására (») Nov 6, 2012 /
 
Rendben, akkor megnézem nálam is és küldök egy működő forrást.
(#) tibike32 válasza ToMikaa hozzászólására (») Nov 6, 2012 /
 
Köszönöm szépen a segítséget!

Tibi
(#) ToMikaa válasza tibike32 hozzászólására (») Nov 6, 2012 /
 
Szívesen. A kódot tüzetesebben átnézve rengeteg szintaktikai hiba van benne.

Szerk.: feltettem a javított kódokat. Csak a szintaktikai hibákat javítottam, most lefordul, hardveren nem teszteltem.
A hozzászólás módosítva: Nov 6, 2012
(#) tibike32 válasza ToMikaa hozzászólására (») Nov 6, 2012 /
 
Letöltöttem a fájlokat, majd bemásoltam őket ( main.c, lcd.c) az előzőek szerint, de most még több hibát ír ki
(#) ToMikaa válasza tibike32 hozzászólására (») Nov 6, 2012 /
 
Az lcd.h-t is betetted a projektbe? Mert megcsináltam, hogy az is meglegyen. Ha ez megvolt, akkor milyen hibák vannak?
A hozzászólás módosítva: Nov 6, 2012
(#) tibike32 válasza ToMikaa hozzászólására (») Nov 6, 2012 /
 
Azt melyikbe kell berakni ?
(#) ToMikaa válasza tibike32 hozzászólására (») Nov 6, 2012 /
 
Azt a Headers mappába.
(#) tibike32 válasza ToMikaa hozzászólására (») Nov 6, 2012 /
 
Valamit akkor megint nem jól csinálok
Következő: »»   325 / 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