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   126 / 1210
(#) vilmosd válasza icserny hozzászólására (») Aug 16, 2011 /
 
Ezeknek a kontrollereknek a Reset cime a fizikai memoria utolso cimere mutat aholis gyartaskor elhelyeztek egy movlw xx utasitast. A xx ertek a gyari kalibracios adat.
Ezert kezdodik ezeknek a kontrollereknek a pr0gramja igy:
ORG 0x1FF ; processor reset vector

ORG 0
init

movwf OSCCAL ; update register with factory cal value

Ezert fontos hogy egy uj program beegetese elott kiolvassuk ezt az erteket, majd a hex betoltese utan ujra beirjuk, es igy egetjuk. Persze vannak programok amik automatikusan megcsinaljak, pl PK2, PK3, sot a veletlen kitorles utan tudjak generalni az erteket.
(#) vilmosd válasza Hp41C hozzászólására (») Aug 16, 2011 /
 
Igen termeszetesen sok uj kontroller jelent meg, de en azt akartam mondani ezzel, hogy az atlag user aki a konya konyv 16F84 peldait forditgatja, nem feltetlen szukseges a legutolso MPLAB. Persze ha hetente uj eszkozt hasznal, es mindig a kurrenseket akkor termeszetesen illik megcsinalni a frissitest. A mult heten hasznaltam a 7.54-est mert a gepre regen telepitettem, es nincs net csatlakozasa. Most nem alltam neki floppizni az uj MPLAB miatt. Igy is fog maradni mig ki nem dobjak. 16F819 volt a cel, eskellett egy-ket dolgot valtoztatnom.
(#) icserny válasza vilmosd hozzászólására (») Aug 16, 2011 /
 
Igazad van, a PIC12C508-nál tényleg a memória végére ugrik reset-kor. A PIC12F629 és társai esetében azonban más a helyzet: ott a a programszámláló kinullázódik reset esetén. Így ott a kalibrációs értéket nem veszi elő automatikusan.

Nem tudom, hogy miért jó az, hogy a PIC12 kategóriában ekkor eltérések vannak. Hívnák inkább PIC14-nek!
(#) vilmosd válasza icserny hozzászólására (») Aug 16, 2011 /
 
Idézet:
„Hívnák inkább PIC14-nek!”
Az mar foglalt. Volt ugye a szepremenyu 14C000 tipus Slope AD-vel 16 bit felbontasig, de hamar lecsengett a gyartasa.
(#) Hp41C válasza vilmosd hozzászólására (») Aug 16, 2011 /
 
Régi nagy igazság:
Régi program = ismert hibák, tulajdonságok...
Új program = felderítetlen, nem várt hibák...
Most próbáltam a 8.66 -tal EEPOM8 memóriába fordítani tartalma, nem ment, a régiekkel ment. Nem értettem... A 8.76 -tal megint működik...
A 8.76 release notes -jában olvasható:
Idézet:
„Repairs and Enhancements Made Since v5.30

Problems resolved between v5.40 and v5.41:
( MPASM-337)
LGOTO instruction is not working for the address ranges expecting to set the 5-bit of the PCLATH register for 16F193x devices
( MPASM-349)
"Argument out of range (0000 not between 0005 and 0007)" error is observed on building any code for the devices, 12C671, 12C672, 12CE673, 12CE674 & 16C433.
( MPASM-350)
"Processor type is undefined" error is observed on building any code for the device 16C58A.
( MPASM-356)
Configuration Macro does not properly set some of the configuration bits
( MPASM-360)
No support for EEPROM8 in resource file

( MPASM-361)
Build error in the include file when using PIC12C671”
(#) trudnai válasza vilmosd hozzászólására (») Aug 16, 2011 /
 
Idézet:
„az atlag user aki a konya konyv 16F84 peldait forditgatja, nem feltetlen szukseges a legutolso MPLAB.”


Ebben igazad van, csakhogy tapasztalat szerint a kezdo elobb-utobb bele akar fogni olyan projectbe, amihez a regi MPLAB mar nem jo -- es akkor jonnek a kerdesek es mivel mar elfelejtettuk regit hasznal az illeto, naphosszat talalgathatunk miert nem megy neki egy trivialis funkcio...

Szerintem nem olyan nehez lecserelni az MPALB-ot, raadasul ingyenes
(#) Hp41C válasza trudnai hozzászólására (») Aug 16, 2011 /
 
Át kellene térni MpLabX -re.... Nem támogatja a PICKit2 -t és az ICD2 -t, isszonyú körülményes...

Az MpLab 7.xx futtatható még régebbi gépeken Win98, Win2K alatt is, az újabbak már nem garantáltan.
(#) zenetom válasza Hp41C hozzászólására (») Aug 16, 2011 /
 
Én MPLAB 8.43-at használok, elég jónak tűnik :yes:
(#) joci1987 hozzászólása Aug 16, 2011 /
 
üdv,

Olyan programot szeretnék írni ami gyorsítja a ledek villogtatását. (később a gyorsítást szeretném nyomógombbal szabályozni). Csatolom az általam írt programot (ami sajnos nem működik). Mi lehet a hiba?
Ti milyen megoldást javasoltok?

ledek (1).asm
    
(#) vilmosd válasza trudnai hozzászólására (») Aug 16, 2011 /
 
De peldaul az ujabb MPLAB nem garantalja a hasznalatot w98,wMe alatt. En pont ezert hasznaltam egy regi P1 gepen ami fenn volt rajta. Termeszetesen XP alatt altalaban frissitem en is.
(#) ferkoo hozzászólása Aug 18, 2011 1 /
 
Sziasztok, frissitettem az Mplab-ot. Beállitottam a bemeneteket a stimulátor-ban (azt csak remélem hogy jó-is), szoval mikor alacsony szintre huzom az 'sw1' bemenetet elöször növekszik 1el, mégegyszer megnyomom visszaáll az érték az első gombnyomás elötti értékre, ugyanez igaz a másik bemenetre 'sw2' a következő kódrészlet tartalmazná a bemenetek kezelését, ha jól sejtem egy rossz helyen lévö ugrás miatt lehet. (DUTY_CYCLE
BTFSC GPIO,SW1 ;Test for change of duty cycle
goto check_decrement ;Check next switch
MOVLW H'16' ;Start switch debounce
MOVF TEMP1,W
debounce_loop_0
MOVLW H'20'
MOVF TEMP0,W
debounce_loop_1
CLRWDT
CALL DELAY ;Maintain current PWM output
DECFSZ TEMP0 ;Apply 15ms debounce to switch
goto debounce_loop_1
DECFSZ TEMP1
goto debounce_loop_0
BTFSC GPIO,SW1 ;Check switch after debounce
RETLW H'00'
INCF DUTY_CYC ;If good then increment duty cycle
goto check_duty_threshholds
check_decrement
BTFSC GPIO,SW1 ;Test for change of duty cycle
RETLW H'00'
MOVLW H'16' ;Start switch debounce
MOVF TEMP1,W
debounce_loop_2
MOVLW H'20'
MOVF TEMP0,W
debounce_loop_3
CLRWDT
CALL DELAY ;Maintain current PWM output
DECFSZ TEMP0 ;Apply 15ms debounce to switch
goto debounce_loop_3
DECFSZ TEMP1
goto debounce_loop_2
BTFSC GPIO,SW2 ;Check switch after debounce
RETLW H'00'
DECF DUTY_CYC ;If good then decrement switch
check_duty_threshholds
MOVF DUTY_CYC,W
BTFSC STATUS,Z ;See if duty cycle is H'00'
INCF DUTY_CYC ;If so increment duty cycle
INCF DUTY_CYC,W ;See if duty cycle is H'FF'
BTFSC STATUS,Z
DECF DUTY_CYC ;If so decrement duty cycle
RETLW H'00')
(#) ferkoo hozzászólása Aug 18, 2011 1 /
 
Na látszik nemvagyok túl gyakorlott forumozó, bocs mindenkitöl.
(#) edison14 válasza ferkoo hozzászólására (») Aug 18, 2011 1 /
 
Hát ez eléggé átláthatatlan. Esetleg csatold az asm fájlt hátha az átláthatóbb. Máskor használd a kód gombot!
(#) kiskata hozzászólása Aug 18, 2011 /
 
Kedves Tagok!
Azt tapasztalom egy PIC es rendszerben hogy amíg egy relé meghúz addig egy ADC mérés értéke - mintha kondenzátoron keresztül töltődne - emelkedik (nincs közük egymáshoz - max. a GND )
Lehet hogy a relé előtti BC182 és a pic közötti ellenállás helytelen megválasztása okozza?
(#) bbalazs_ válasza kiskata hozzászólására (») Aug 18, 2011 /
 
Foldhurok lehet meg. A foldek egy ponton, csillagszeruen kozosuljenek, akkor nincs ilyen jelenseg vagy ha van, akkor nem a fold az oka. Itt szerintem ez lesz, mert a rele meghuzasakor jelentos aram lehet, ami egy fa-szerkezetu foldpont-kozosites eseten a GND-k valtozasat okozza.
Kondi javithatja a jelenseget, ha nem akarod attervezni a NYAK-ot vagy ha kokanyolsz, akkor a rele labatol vastag vezetek a fold lekorabbi pontjahoz, a korabbi foldszal 'elhegedulese' mellett.
(#) ferkoo válasza edison14 hozzászólására (») Aug 18, 2011 /
 
Mégegyszer megprobálom.
  1. DUTY_CYCLE
  2.          BTFSC  GPIO,SW1 ;Test for change of duty cycle
  3.          goto   check_decrement ;Check next switch
  4.          MOVLW  H'16' ;Start switch debounce
  5.          MOVF   TEMP1,W
  6.  debounce_loop_0
  7.          MOVLW  H'20'
  8.          MOVF   TEMP0,W
  9.  debounce_loop_1
  10.          CLRWDT
  11.          CALL     DELAY ;Maintain current PWM output
  12.          DECFSZ   TEMP0 ;Apply 15ms debounce to switch
  13.          goto     debounce_loop_1
  14.          DECFSZ   TEMP0
  15.          goto     debounce_loop_0
  16.          BTFSC    GPIO,SW1 ;Check switch after debounce
  17.          RETLW    H'00'
  18.          INCF     DUTY_CYC ;If good then increment duty cycle
  19.          goto     check_duty_threshholds
  20.  check_decrement
  21.                  BTFSC     GPIO,SW1 ;Test for change of duty cycle
  22.                  RETLW     H'00'
  23.                  MOVLW     H'16' ;Start switch debounce
  24.                  MOVF      TEMP1,W
  25.  debounce_loop_2
  26.          MOVLW     H'20'
  27.          MOVF      TEMP0,W
  28.  debounce_loop_3
  29.                  CLRWDT
  30.                  CALL      DELAY ;Maintain current PWM output
  31.                  DECFSZ    TEMP0 ;Apply 15ms debounce to switch
  32.                  goto      debounce_loop_3
  33.                  DECFSZ    TEMP1
  34.                  goto      debounce_loop_2
  35.                  BTFSC     GPIO,SW2 ;Check switch after debounce
  36.                  RETLW     H'00'
  37.                  DECF      DUTY_CYC ;If good then decrement switch
  38.  check_duty_threshholds
  39.                  MOVF      DUTY_CYC,W
  40.                  BTFSC     STATUS,Z ;See if duty cycle is H'00'
  41.                  INCF      DUTY_CYC ;If so increment duty cycle
  42.                  INCF      DUTY_CYC,W ;See if duty cycle is H'FF'
  43.                  BTFSC     STATUS,Z
  44.                  DECF      DUTY_CYC ;If so decrement duty cycle
  45.                  RETLW     H'00'
(#) vilmosd válasza kiskata hozzászólására (») Aug 18, 2011 /
 
Fontos dolog az elektronikaknal a tap stabilitasa, es a megfelelo szures. Barmilyen elektronikus keszuleknel fontos a megfelelo szereles is. Persze vannak kihegyezett esetek, ilyenek az induktiv terheles kapcsolgatasa. Ugyebar van az a Lentz torveny.Ez eloidez egy magas feszultsegcsucsot a kikapcsolaskor. Ez a csucs zavarja a tobbi elektronika mukodeset. Persze lehet ellene tenni, pl egy diodat kell zaroiranyban a tekerccsel parhuzamosan kotni. Nem mellekes az aramkori elemek meretezese is. A kapcsolotranzisztor megfelelo meghajtasa (nem tapasztalati uton!) szamolhato a rele arama, es a tranzisztor parameterei alapjan. Ajanlanek 1-2 elektronikai alapmu forgatasat. A konyvespolcon az analog szekcioban talalhatsz ilyen konyveket.
(#) Corp hozzászólása Aug 18, 2011 /
 
Mivel ez a kezdőknek topik ezért lenne 1 zöldfülű kérdésem.

Eddig csak 1x-übb dolgokat csináltam PIC 16f690-re.
Most 1 picit bonyolultabbat eszközt szeretnék csinálni PIC08f4620-al.

Projekt:
terminált akarok építeni ami tertalmaz:
-mobiltelefont
-Vonalkódolvasót (Vagy bill)
-4x20 as kijelzőt.
-pár gomb (még nem kristályosodott ki a menniysége)

Működés:
Modemes kapcsolatot hoz létre 1 pc-vel, a PC mindig átküld(i/ené) az éppen aktuális interakció képét.

Amit tudok:
-Modemes kapcsolat felépítése/bontása
-Kijelző kezelése
-PC program
-Szerintem a bill. is menne. (ezzel még nem foglalkoztam)

Gondom:
Soros porton érkező adatokat miként tudnám, gyorsan, string -tudom, hogy itt ilyen nincsen) féleségbe lementeni. Még csak tervezem azt a részét, de úgy gondolom, hogy a memóriába 2x 40bájtos helyre tölteném fel folytonosan a mobiltelefonról és a vonalkód olvasóról érkező adatokat.

Kérdés:

Valami 1x-übb megoldás nincsen az érkező adatok gyors letárolására? Vagy csak ez a pointer + direkt memóriacímzés. Egyáltalán itt ez létezik, használható?

Gépi kódba írom/akarom megírni a programot.

Segítséget előre is köszönöm.

(Remélem világosan fogalmaztam)
(#) icserny válasza Corp hozzászólására (») Aug 18, 2011 /
 
A honlapomom található PICula projekt a 18f4620 "kistestvérével" foglalkozik. Nézd, meg, hátha találsz benne támpontot vagy átvehető megoldást a részfeladatokhoz! (Például a soros port interruptos, gyűrűtárral bufferelt kezelése...)

Én bootloadert használok, de egyszerűen kihagyható, ha az include/picula_config.h állományban kommentbe teszed az USE_BOOTLODER szimbólum definiálását.

A soros port használatához pedig (ez nálam valójában egy USB-UART átalakítón keresztül az USB-re történő kapcsolódást jelent, de ne izgasd vele magad!) az USE_USART és az USE_INTERRUPT szimbólumok definiálása szükséges. Vagy a fentemlített konfigurációs állományban, vagy a projekt opciók között.

Mellesleg nem éppen kezdőnek való fába vágtad a fejszédet, de sok sikert hozzá!

Idézet:
„Gépi kódba írom/akarom megírni a programot.”
Miért nem mindjárt Intel HEX formátumban?
(#) Corp válasza icserny hozzászólására (») Aug 18, 2011 /
 
Mint írtam van elképzelésem és 1 része már működik is. Eddig nem foglalkoztam olyasmivel, hogy a PIC input eszköz és több bájtal szórom meg, ezért írtam, hogy a bejövő adatokat 1-1 tárterületre tenném (40 bájt) és a feltöltött bájtok számát 1 pointerben tárolnám. Így tudnám, hogy mennyi karakter (bájt) jött át. Viszont nem tűnik túl elegáns megoldásnak. Ezért kérdeztem, hogy volna erre valami jó egyszerű és szép megoldás asm-ban. A PC-n futó progi megírása nem tűnik bonyolultnak (VBASIC 6-ban). A telefont egyszerűen soros portra kötöttem fel és egyszerűen AT paranccsal tárcsázik a PIC (ATZ; ATDTxxxxxxxxxx). A telefon egyszerű nokia 6100. A másik oldalon modem vagy mobiltelefon, de ez itt lényegtelen.

Itt mint írtam a gondom, a 2+gombok helyekről érkező inputok lekezelése.

Az infót köszönöm igyekszek minél előbb átnézni.
(#) vilmosd válasza Corp hozzászólására (») Aug 18, 2011 /
 
En nem tartom nagy kihivasnak ezt a soros kezelest. Meg lehet oldani, hogy ket pointert hasznalsz. Az egyik a veteli pointer, a masik az olvasasi pointer. Amikor a ketto egyezik nincs uj adat. Hasznalom ezt a modszert. Igaz en CCS C-t hasznalok, de vegulis ASM-ben sem lehetetlen. A gombok kezelesere valami IT megoldast lehetne hasznalni. A RB<7:4> bitek valtozasakor lehet interruptot kerni, igy a portok figyelese nem vesz el plusz idot a programtol. Mivel 18F uC-rol van szo, meg az IT prioritasal is lehet varialni. Persze ASM-ben programozni egy ilyen projektot egy kicsit mazohizmus. Vannak mar ingyenes C programok (demo?) a gyartonal, es mas cegeknel is. Nem annyira nehez atterni ASM gyakorlat utan ezekre a programnyelvekre. Meg esetleg elony lehet a C fordito beepitett fvenyei is amik segithetik a gyorsabb programozast (vagy hatraltatjak ha nem ismered a kezelesuket).
(#) Babó22 hozzászólása Aug 20, 2011 /
 
Üdv! Most ismerkedek a PIC programozással. A rendelkezésemre PIC16F84 mikrokontroller áll. Hogy kipróbálhassam az égetőmet (PICKit2 klón), egy jelzőlámpa projektbe vágtam a fejszémet. Találtam is kapcsolási rajzot és forráskódokat ezen az oldalon. Felprogramoztam a PIC-et, ám ha elindítom az áramkört, nem történik semmi. Semmilyen LED nem világít. Ha valaki tudna segíteni, azt megköszönném.
(#) Balagemann2031 válasza Babó22 hozzászólására (») Aug 20, 2011 /
 
Üdv! Lehet hogy csak én nem találom de hol vannak a konfigurációs szavak? :O
(#) Balagemann2031 válasza Balagemann2031 hozzászólására (») Aug 20, 2011 /
 
Szia! Próbáld ki ezzel a programmal...
(#) Hp41C válasza Babó22 hozzászólására (») Aug 21, 2011 /
 
Szia!

A 16F84 nemprogramozható a PICKit2 -vel, csak ha módosított eszközleírást alkalmazol. Nem a legabb leíró, de kiegészítésként tartalmazza a 16F84-et. Nem ismeri fel, hiszen nem rendelkezik típusazonosítóval, de kézzel kiválasztható.
(#) huszabsa hozzászólása Aug 22, 2011 /
 
Sziasztok most kezdek ismerkedni a a FLOWCODE for PIC v4.3.7.63 verzióval. Tetszett és szereztem egy PIVkit3-at, de a legegyszerűbb programot sem sikerül betölteni a PIC-be. Mindig ezt az üzenetet kapom:

Launching the programmer...
C:\Program Files\Matrix Multimedia\Flowcode V4\Tools\PICkit3\PK3CMD.exe -P18F45K20 -F"4.hex" -E -M -Y"4.hex"

.........................................


Connecting...
PICkit 3 detected
Connecting to PICkit 3...
Firmware Suite Version...... 01.26.71
Firmware type......................PIC18F
..


PICkit 3 Connected.
PK3Err0045:
You must connect to a target device to use PICkit

3.
Return code = 2

A Flowcode nem tudja átküldeni a folyamatábrát a mikro vezérlőbe. Kérem vizsgálja meg a programozót, és a kapcsolatot

FINISHED

Mi lehet a gond?
Segítsetek Köszönöm.

A PICkit3-hoz adott gyakorló panel (PIC18f45k20) ill. mintaprogramok az MPLAB-al sikerül felprogramozni, gondolom a PICkit3 jó, de a programozó nem megy a FLOWCODE-vel.
(#) zenetom válasza huszabsa hozzászólására (») Aug 22, 2011 /
 
Hali!
Szerintem csak a PICkit2-t támogatja a FlowCode.
Bár én ha FlowCode-val dolgozok, mindig a Microchip PICkit 2 (v2.61) programjával rakom bele a HEX-et a PIC-be.
(#) huszabsa válasza zenetom hozzászólására (») Aug 22, 2011 /
 
A PICkit3 -nak nem találtam a gyári CD-n égetőt, megnézem a neten, és megpróbálom.
Köszönöm.
(#) El_Pinyo válasza huszabsa hozzászólására (») Aug 22, 2011 /
 
Használd az MPLAB-ot, ott pedig a File menü Import menüelemének kiválasztása után importálod a .hex fájlt, mellyel szerintem megoldható a PICKit3- mal történő programozás. Én sosem próbáltam, mert sosem volt ilyen jellegű gondom, de szerintem megoldható így.
(#) zenetom válasza huszabsa hozzászólására (») Aug 22, 2011 /
 
Naszóval, neked PICkit 3 program lenne a legjobb, bár nem találtam hirtelen sehol, csak egy egy béta verziót: Bővebben: Link
Következő: »»   126 / 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