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   341 / 1210
(#) nagzso válasza icserny hozzászólására (») Dec 18, 2012 /
 
Igen láttam, hogy azt használtál. Meg ezt a "ROM"-os dolgot is néztem, aztán próbáltam keresgélni, hogy hogy működne ez XC8 alatt, de nem sok sikerrel jártam. Melyikkel dolgozzak amúgy, C18 vagy XC8?
(#) pjg válasza nagzso hozzászólására (») Dec 18, 2012 /
 
Mint látod C18-ban lenne segítség, míg a másikat itt nem nagyon használják.

Bocs, hogy bele vau, vau.
(#) Hp41C válasza nagzso hozzászólására (») Dec 18, 2012 /
 
Szia!
Kérdés, milyen kontrollerre fejlesztesz:
18Fxx -hez jobb a C18. A régebbi 16F -hez választható a CCS, MicroElectronika, HiTech stb C. Ha 16F145x vagy újabb 16F1xxx a kontroller, akkor nem sok választás marad: XC8.
A hozzászólás módosítva: Dec 18, 2012
(#) vizor válasza potyo hozzászólására (») Dec 18, 2012 /
 
Neked is köszönöm a választ. Akkor gond nélkül be tudom építeni a paneltrafót, egy régi kisméretű digitális ébresztőóra dobozában lesz az egész égető. Úgy alakítottam ki a belsejét, hogy a nagyfeszültségű rész másfél centire van a többitől.
(#) nagzso válasza Hp41C hozzászólására (») Dec 18, 2012 /
 
Köszi a segítséget mindenkinek
PIC18F2550-nel gyakorolgatok.
(#) pjg válasza nagzso hozzászólására (») Dec 18, 2012 /
 
Én is. Bővebben: Link
(#) adamhollos hozzászólása Dec 18, 2012 /
 
Sziasztok!

A következő programot írtam:

  1. #include <p18f25k80.h>
  2. #pragma config XINST = OFF, FOSC=INTIO2, IESO= ON, PWRTEN=ON, WDTEN=OFF, MCLRE=OFF
  3.  
  4. void def (void);
  5. void state (void);
  6. void lo_isr(void);
  7. void hi_isr(void);
  8.  
  9. void main (void)
  10. {  
  11.         def();
  12.         T0CONbits.TMR0ON=1;                                             //timer0 indtasa
  13.         state();
  14.         while (1)
  15.         {
  16.         }
  17. }
  18. void def(void)
  19. {
  20.  
  21.         TRISAbits.TRISA1 = 0;                                   //RA1 kimenet
  22.         LATAbits.LATA1=0;                                               //RA1=0
  23.         RCONbits.IPEN=1;                                                //Kétszintű interrupt mód beállítása
  24.         INTCON2=0X00;                                                   //timer0: low-priority
  25.         PMD1bits.TMR0MD=1;                                              //timer0 registerek resetje
  26.         PMD1bits.TMR0MD=0;                                              //timer0 bekapcs
  27.         T0CON=0X01;                                                             //16-bit timer, 1:4-es osztas
  28.  
  29.         INTCON=0X70;                                                    //High pri. és Low  pri. interrupt enabled, timer0 int. enabled
  30.  
  31. }
  32.  
  33. #pragma code high_vector_addr=0x08
  34. void high_vector(void) {
  35.   _asm GOTO hi_isr _endasm
  36. }
  37.  
  38. #pragma code low_vector_addr=0x18
  39. void low_vector(void) {
  40.   _asm GOTO lo_isr _endasm
  41. }
  42.  
  43. #pragma code
  44. #pragma interrupt hi_isr
  45. void hi_isr (void)
  46. {
  47.  
  48. }
  49.  
  50. #pragma interruptlow lo_isr
  51. void lo_isr (void)
  52. {
  53.         if(INTCONbits.TMR0IF)
  54.         {
  55.                 state();
  56.                 INTCONbits.TMR0IF=0;
  57.         }
  58. }
  59.  
  60. void state(void)
  61. {
  62.         LATAbits.LATA1=~LATAbits.LATA1;
  63. }


Az RA1-en levő ledet szeretném villogtatni, azonban csak kigyullad és úgy marad. Tudnátok segíteni, hogy mi a hiba?
(#) Hp41C válasza adamhollos hozzászólására (») Dec 18, 2012 /
 
Szia!
ANCON0 regiszter ANSEL0 bitjének törlése segíthet.
(#) adamhollos válasza Hp41C hozzászólására (») Dec 18, 2012 /
 
Az említett két reg minden reset után csupa 0
(#) Hp41C válasza adamhollos hozzászólására (») Dec 18, 2012 /
 
Szia!
Az adatlap szerint pedig minden bitje 1. Ld.: 18F25K80_ADCON0.JPG.
Az is igaz, hogy az ADCON0 regiszter nincs benne a ACCESS RAM -ban (nem fért bele), jöhet a sokat szidott Bank -olás vagy a movff utasítás. Ld.: 18F25K80_ADCON0_2.JPG Note 5.
A hozzászólás módosítva: Dec 18, 2012
(#) adamhollos válasza Hp41C hozzászólására (») Dec 18, 2012 /
 
Beírtam de nem segít.

Amúgy valami nem stimmel, mert az ANCON0 csupa 0, a szimuláció szerint is és a gyakorlatban sem kell sose törölni. Lehet, hogy a TRISx reg 0-ba állítása automatikusan törli????
(#) ethrbh hozzászólása Dec 18, 2012 /
 
sziasztok,

Nagy gondban vagyok az ujdonsult Pickit-3 programozommal. Jelenleg a ceges laptopomat hasznalom otthoni dolgokra is, de ugy gondoltam, hogy a Pic fejleszteseket nem "keverem" a ceges filerendszerbe. Szoval ugy gondoltam, hogy egy Virtualbox-ba installalok WinXp-t, majd MPLAB, stb. es mehet a fejlesztes. A gond csupan az, hogy az MPLAB inditasa utan, mikor a Pickit3-t kivalasztom mint programozo, azt irja ki, hogy
No PICkit 3 Connected

- Ezutan probalom a Programmer/Reconnect menut:
PICkit 3 detected
Connecting to PICkit 3...
PK3Err0038: Failed to initialize PICkit 3.

Failed to properly connect to PICkit 3

- Ezutan megneztem, hogy a VirtualBox-ban a Pickit USB drivere hogyan nez ki. A Virtualbox Devices/USB menuje alatt latom, hogy ott van a "Microchip Tech. Inc PicKi3 [0002] ". Ha rabokok az egerrel akkir ezt irja ki a Virtualbox:

Failed to attach the USB device Microchip Technology Inc. PICkit 3 [0002] to the virtual machine winxp.

USB device 'Microchip Technology Inc. PICkit 3' with UUID {3dd95ccb-072c-4248-a15f-1b8374345fa0} is busy with a previous request. Please try again later.

Result Code: E_INVALIDARG (0x80070057)
Component: HostUSBDevice
Interface: IHostUSBDevice {173b4b44-d268-4334-a00d-b6521c9a740a}
Callee: IConsole {db7ab4ca-2a3f-4183-9243-c1208da92392}

Ellenprobakepp az MPLAB-t felinstallaltam a Host OS-res is (Win7), itt szuperul mukodik minden. Arra gondolok, hogy a Host gep es a VirtualBox kozott lesz a gubanc, de Google-t hiaba kerdeztem nem tudott segiteni

Ha valakinek van otlete, hogy mit nezzek meg meg, vagy tapasztalata van e temaban legyen kedves segitsen.

koszi szepen,
/Robi
(#) ethrbh válasza ethrbh hozzászólására (») Dec 18, 2012 /
 
sziasztok,

No, akkor meg is valaszolom magamnak a korabban felvazolt problemat. Jobb megoldast nem latvan, elkezdtem a laptop 3 db USB portjait "korbejarni" a PicKit3-val. Azaz, egyenkent probaltam ki az USB portokat, s az egyikben fainul mukodik Az okat, hogy miert nem tudom, de most mukodik. Az erdekes a dologban az, hogy most a Pickit3 csatlakoztatva van eg yUSB porthoz, s mukodik a VirtualBoxban, viszont nem mukodik a Host gepre feltelepitett MPLAB-ban. Ha visszateszem a Pickit 3-t abba az USB portba ahol korabban a Host gepen levo MPLAB-val ment, a Virtualbox-ban nem megy. Ez most igy keso este nekem magas. Ha van valaki akinek van otlete, hogy mi lehet ez, legyen kedves ossza meg velem.

koszi,
/Robi
(#) icserny válasza adamhollos hozzászólására (») Dec 19, 2012 /
 
Idézet:
„Beírtam de nem segít.”
Nem csodálom, az ilyen jellegű hiba ugyanis arra utal, hogy vagy a WDT nincs letiltva (látom, hogy ott van a program elején, de azt innen nem tudom ellenőrizni, hogy ez került be a HEX fájlba, vagy az MPLAB saját beállításai), vagy pedig lekezeletlen interrupt kérés viszi végtelen ciklusba a mikrovezérlőt. Ez utóbbi például azért, mert az alacsony szintű megszakításhoz rendeltél kiszolgálást, de lehet, hogy magas szintű megszakítás keletkezik (a timer megszakítási prioritását is be kell állítani).
(#) steev válasza ethrbh hozzászólására (») Dec 19, 2012 /
 
A PicKit3-as nem valami nagy fejlesztés,a PicKit2 jobb szerintem, de azzal nekem is voltak ill. vannak USBs gondok. 1 jó ideje nem lehet debuggolni valamiért, win újrainstall sem segített, a megolgást a gépcsere jelentette. Sőt csinál olyat is, hogy ha kiolvasom az EEPROMot(dspic30) és programozásor vissza akarom írni, akkor sem lehet debuggolni(Unable to enter debug mode). De amúgy jól használható.
(#) Hp41C válasza adamhollos hozzászólására (») Dec 19, 2012 /
 
Szia!
Két megjegyzés:
- Az ADCON0 értéke azért nem jut érvényre, mert a PMD1 regiszter tiltja az A/D -t. Az adatlapból nem derül ki, hogy a portról való beolvasás vajon működik-e ilyen beállítással az analóg lábakról. De ez most nem is érdekes, mivel a LATA bitjét olvasod, írod.
- A T0CON regiszterben a T0CS értéke 1, azaz a timer0 a külső órajel bemenetén várja az órajelet...
Egy tanács:
Üzemeld be az MpLab szimulátorát és mindjárt láthatod, hogy a TMR0 regiszterek értéke nem változik, azaz soha nem fordul át, azaz nem keletkezik megszakítás...
(#) adamhollos válasza icserny hozzászólására (») Dec 19, 2012 /
 
  1. INTCON2=0X00;


Ezzel beállítottam alacsonynak, vagy nem?
(#) adamhollos válasza Hp41C hozzászólására (») Dec 19, 2012 /
 
Idézet:
„- A T0CON regiszterben a T0CS értéke 1, azaz a timer0 a külső órajel bemenetén várja az órajelet...”


  1. T0CON=0X01;
T0CS tehát 0
(#) adamhollos válasza icserny hozzászólására (») Dec 19, 2012 /
 
Igen bekerült a hex-be.
(#) kisastra hozzászólása Dec 19, 2012 /
 
Üdv!
Pwm-el szeretnék egy háromszöget elő állitani. Rc tagot meg tudom tervezni, a programot megirtam de nem forditodik le:S pic 16f887 el dolgozom. ezt a hibát irja: PK2Error0027: Failed verify (Address = 0x2007 - Expected Value 0x3BFF - Value Read 0x1)

Program:
#include
__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V

cblock 0x20
TEMP
Delay1
Delay2
Display
endc

org 0
; Oszcillátor 4Mhz
movlw 0x68
movf OSCCON
; PWM inicializálása

banksel TRISC
movlw 0xFF
movwf TRISC
movlw 0xFF
movwf PR2
banksel CCP1CON
movlw 0x0C
movwf CCP1CON
movlw 0x00 ;0% kitöltési tényező inicializáláskor
movwf CCPR1L
banksel PIR1
bcf PIR1,TMR2IF
movlw 0x06
movwf T2CON ;postscale 1:1,prescale;1:1,Timer2 bekapcsolása pwm frekvencia
btfss PIR1,TMR2IF ;várakozás amíg az első periódus letelik
goto $-1
banksel TRISC
clrf TRISC ;kimenet engedélyezése
;
MainLoop:
movf TEMP,w
movwf CCPR1L
incf TEMP
movlw 0xFF
xorwf TEMP
btfss STATUS,Z
goto $-6
movf TEMP,w
movwf CCPR1L
decfsz TEMP
goto $-3
goto MainLoop
;
end

valakinek valami ötlete?
Köszönöm
(#) Hp41C válasza adamhollos hozzászólására (») Dec 19, 2012 /
 
Ez meg működik is. A szimulátorban a kedvedért kipróbáltam. Sajnos most a C fordító nem elérhető...
  1. LIST b=4
  2.         list    p=18f25K80                      ; list directive to define processor
  3.         #include <p18f25k80.inc>                ; processor specific variable definitions
  4.  
  5.                 CONFIG  FOSC = HS1, PLLCFG = ON
  6.                 CONFIG  PWRTEN = OFF, WDTEN = ON
  7.                 CONFIG  BOREN = OFF,  IESO = OFF, FCMEN = OFF
  8.                 CONFIG  STVREN = ON                                                                     ; CCP2 -> RC1
  9.                 CONFIG  XINST = OFF
  10.                 CONFIG  MCLRE = OFF
  11.  
  12.  
  13.         org     0x000
  14.         goto    Begin
  15.  
  16.         org     0x008
  17. high_isr
  18.  
  19.         nop
  20.         btg             LATA,1
  21.         bcf             INTCON,TMR0IF
  22.         retfie  1
  23.  
  24.         org     0x018
  25. low_isr
  26.  
  27.         nop
  28.         btg             LATA,1
  29.         bcf             INTCON,TMR0IF
  30.         retfie  0
  31.  
  32. Begin
  33.  
  34.         bcf             TRISA,1
  35.         bcf             LATA,1
  36.         bsf             RCON,IPEN
  37.         clrf    INTCON2
  38.         bsf             PMD1,TMR0MD
  39.         bcf             PMD1,TMR0MD
  40.  
  41.         bcf             T0CON,T0CS
  42.         bsf             T0CON,TMR0ON
  43.         clrf    INTCON
  44.  
  45.         bsf             INTCON,TMR0IE
  46.         bsf             INTCON,GIEL
  47.         bsf             INTCON,GIEH
  48.  
  49.         btg             LATA,1
  50.  
  51. loop
  52.         bra             loop
  53.  
  54.         End


Tegyél egy - egy töréspontot a high_isr és low_isr rutinba.
A hozzászólás módosítva: Dec 19, 2012

25K80.ZIP
    
(#) icserny válasza adamhollos hozzászólására (») Dec 19, 2012 / 1
 
Idézet:
„INTCON2=0X00;
Ezzel beállítottam alacsonynak, vagy nem?”

Reméltem, hogy nem kell adatlapot bújnom, de megnéztem: igen, az INTCON2-ben van a TMR0IP, amit 0-ba kell állítani az alacsony prioritáshoz.

  1. INTCON=0X70;              //High pri. és Low  pri. interrupt enabled, timer0 int. enabled
Itt a kód és komment nem passzol. A kommentben írt beállításnak 0xE0 felel meg 0x70 helyett.

(#) smoky hozzászólása Dec 19, 2012 /
 
Sziasztok!
Olyan problémám van, hogy pic-kit-2-klónnom van !
A legtöbb program a mit beégetek vele nagyon lassan fut, de van olyan amivel normálisan megy pl: itt a hobbin próbálkoztam a Nulláról a robotokig - PIC Mikrovezérlők cikkekkel végig ugyanazzal az égetővel ugyan azzal a pic-kell a cikkeben leírt kötéssel.
De ,hogy a pic-re se tudjam ráfogni meg csináltam "dugdozos" panelon a "Digitális forrasztóállomás" ugyan csak a hobbi oldaláról vettek alapján melyben már másik típusú pic -ket kellet használni. Komojan mondom félóra volt mig ki írta a hőmérsékleteket 10percig tartott míg kiírta "Digit lis forraszt lom s", majd ujjab 10 perc az ékezeteknek!

Járt már valaki így? Mi lehet a baj? Lehet hogy a frimware rossza az égetőben?
(#) vizor válasza smoky hozzászólására (») Dec 19, 2012 /
 
Üdv. Inkább a PIC kristálya és annak beállítása körül nézelődj. Valószínű, hogy ott lesz a hiba.
A hozzászólás módosítva: Dec 19, 2012
(#) smoky válasza vizor hozzászólására (») Dec 19, 2012 /
 
A szerző szerint :
Idézet:
„Ez a fejléc tudatja a fordítóval a config biteket és hogy milyen processzorra fordítson. _XT_OSC = Kristály oszcillátor, ami <= 4MHz
_CP_OFF = Kód védelem kikapcsolás (CodeProtect)
_WDT_OFF = Watchdog kikapcsolás
_LVP_OFF = Alacsony feszültségű programozás kikapcs (Low Voltage Programming)”


és a program kód ennek megfelelően:
Idézet:
„LIST P=16F877
#INCLUDE "P16F877.INC"
__CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_LVP_OFF
CBLOCK 0x20
T1
T2
T3
ENDC
ORG 0
.....................
(#) vizor válasza smoky hozzászólására (») Dec 19, 2012 /
 
Hardveresen rendben van a kristály, megfelelő kondik, kontakthiba, stb.? Rezeg? Szerintem írnod kéne egy nagyon egyszerű tesztprogramot, pl. ledvillogtatás x frekvencián y órajelű kristállyal. Nem vagyok profi, de nem tudom elképzelni,hogy az égető "rosszul" égeti be a progit sebesség szempontjából, ha helyes a konfig.
(#) smoky válasza vizor hozzászólására (») Dec 19, 2012 /
 
a pic típusa 16f877A a rezgő kör a 13-14 lábon van jelenleg egy 4Mhz 22pf kondikkal a földre húzva.
találtam valamit : a 877A doksia szerint csak 20Mhz input clock input van !
Lehet hogy az "A" tipus nem megy 4Mhz -en?
(#) vicsys válasza smoky hozzászólására (») Dec 19, 2012 /
 
Ugyan már! Dehogy is!
(#) potyo válasza smoky hozzászólására (») Dec 19, 2012 /
 
A doksi szerint maximum 20MHz-en használható, de említi azt is ott, hogy alsó határa nincs a frekvenciának, akár nullára is lemehet.
(#) smoky válasza potyo hozzászólására (») Dec 19, 2012 /
 
Az "A" mit jelől egyáltalán?
Következő: »»   341 / 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