Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   695 / 1320
(#) tomi52 válasza icserny hozzászólására (») Márc 6, 2010 /
 
Köszönöm a választ!

Idézet:
„icserny írta:
Idézet:
„Mit nem veszek észre? ”
Azt, hogy ennél nem FOSC hanem OSC a paraméter neve. Tehát így írd:

1.
CONFIG OSC = HS”


Hát ezt tényleg nem vettem észre

Már kezdem is ásni magamnak a gödröt.....
(#) icserny válasza tomi52 hozzászólására (») Márc 6, 2010 /
 
Idézet:
„Már kezdem is ásni magamnak a gödröt...”
Kár volna! Ássa csak a gödröt a gyártó, aki ezt a következetlenséget kitalálta!
(#) Shoo válasza szilva hozzászólására (») Márc 6, 2010 /
 
Igen, lesz vele sorba, nagyon köszönöm a segítséget!
(#) watt válasza icserny hozzászólására (») Márc 6, 2010 /
 
Ezért használom a régi jól bevált konfigot, még C-ben is sokszor! Egyébként egyetértek abban, hogy sokszor nem tudják mit csinálnak!
(#) kistigris hozzászólása Márc 7, 2010 /
 
Sziasztok

Megépitettem az égetőt mellékelem meiket de valami gond van,mert az egetés elkezdem és ezt az üzenetet írja ki: No
Oscillator callibration value found
Do you want to use value fron file instaed?
A Vcc mérem a4.5 voltot Az mclr-n
pedig 13.5 voltot.12f683-as pic-t akarok égetni icprog-al de valamiért nem akarja az igazságot
(#) Fencer hozzászólása Márc 7, 2010 /
 
Üdv!

Olvastam a chipcad honlapján a PIC32 Ethernet Starter Kit-ről. Olyat szeretnék csinálni, egyelőre csak gyakorlás ként, hogy építek két-három panelt PIC32-vel, mindhárom panelnek más IP címet adok, sorba kötöm őket, rákötöm egy PC re, és a panelokon lévő pl DIP kapcsolót ha feltolom, a PC-n megjelenjen mondjuk az adott panel/panelek IP cime. Kérdések:
Ezzel a starter kit-el ez valyon megoltható? Esetleg kicsit olcsóbban lehet építeni ilyet? Csinált már valaki hasonlót?

Köszi!
(#) watt válasza kistigris hozzászólására (») Márc 7, 2010 /
 
Keress rá a JDM -re!
(#) watt válasza Fencer hozzászólására (») Márc 7, 2010 /
 
Ha a PC-n meg tudod írni a feladatot lekezelő programot, akkor igen. Ezek teljes értékű kommunikációs eszközök, kiegészítve a mikrokontroller adta lehetőségekkel. Csak tőled függ hogy ezen belül mit fog tudni. Arra persze nem nagyon lehet számítani, hogy olyan programokat találsz, amik pont azt tudják, amit szeretnél. Ezt meked kell tudni megírni!
(#) Amarton hozzászólása Márc 7, 2010 /
 
Elkezdtem C18-al a PIC programozást.
Csináltam egy kis demo boardot.
18F4550-re irogatnám a programokat.
A led villogtatás AD átalakítás már megy.
Amikor meg akartam nézni, hogy mennyire gyors a PIC, akkor azt tapasztaltam scoppal mérve, hogy mindegy volt, hogy a config hova van állítva, 1us egy utasítás.

Ez a főprogramom:
  1. while(1) {
  2.        
  3.         PORTDbits.RD7 = PORTDbits.RD7 ^ 1;
  4. }


20Mhz-es a kvrac.
HID-Bootloader már bele van égetve és a bootloader feletti tartományra programozok.
Az a fura, hogy az MPLAB-ban ha beállítom a konfigot, mindig 1uS a ciklusidő. Mindegy, hogy PLL van-e vagy sem.
AZ OSCCON regisztert is átállítottam primary osc-ra.

Mit csinálok rosszul?
(#) kistigris válasza watt hozzászólására (») Márc 7, 2010 /
 
Rákerestem.Valaki azt irta hogy rossz,valaki azt ,hogy neki tökéletesen működik.Az én esetemben mi lehet a baj?
(#) gydanee válasza kistigris hozzászólására (») Márc 7, 2010 /
 
Elég sok oka lehet, tessék olvasgatni
(#) kistigris válasza gydanee hozzászólására (») Márc 7, 2010 /
 
köszönöm.És tudnál mondani ami működik biztosan?
De soros vagy usb lenne jó mert nincs lpt portom.Ha nem lenne nagy kérés jó lenne nyák terv is sok időt megspórolnék
(#) gydanee válasza kistigris hozzászólására (») Márc 7, 2010 /
 
A PICKit2-t ajánlom. Meglehet venni Chipcad-ban pár ezer forintért. Cserébe kapsz egy megbízható, jó minőségű kompakt kis égetőt, amivel USB-n keresztül tudsz égetni.
Vannak PICKit2 klónok is, ha építeni szeretnél. De ott figyelembe kell venni azt is, hogy ebben egy másik PIC dolgozik, amit fel kell programozni.
Néhány link: PICKit2 klón építése
PICKit2 klón építése, kapcsolás
(#) Amarton hozzászólása Márc 7, 2010 /
 
Ezt a kódot írtam ma.
Ha a GIE-et bekapcsolom, akkor az első ciklus után lefagy a program.
Gondolom, hogy nem jó a megszakításom.
HID bootloadert használom meg a piccolo project linker scriptjét.

Itt a kódom, ami működik, kivéve a megszakítást:

  1. #include "p18_all.h"
  2. #include <delays.h>
  3.  
  4.  
  5.         #pragma config PLLDIV   = 5         // (20 MHz crystal on PICDEM FS USB board)
  6.         #pragma config CPUDIV   = OSC1_PLL2  
  7.         #pragma config USBDIV   = 2         // Clock source from 96MHz PLL/2
  8.         #pragma config FOSC     = HSPLL_HS
  9.         #pragma config FCMEN    = OFF
  10.         #pragma config IESO     = OFF
  11.         #pragma config PWRT     = OFF
  12.         #pragma config BOR      = ON
  13.         #pragma config BORV     = 3
  14.         #pragma config VREGEN   = ON      //USB Voltage Regulator
  15.         #pragma config WDT      = OFF
  16.         #pragma config WDTPS    = 32768
  17.         #pragma config MCLRE    = OFF
  18.         #pragma config LPT1OSC  = OFF
  19.         #pragma config PBADEN   = OFF
  20.         #pragma config STVREN   = ON
  21.         #pragma config LVP      = OFF
  22.         #pragma config XINST    = OFF       // Extended Instruction Set
  23.         #pragma config CP0      = OFF
  24.         #pragma config CP1      = OFF
  25.         #pragma config CPB      = OFF
  26.         #pragma config WRT0     = OFF
  27.         #pragma config WRT1     = OFF
  28.         #pragma config WRTB     = OFF       // Boot Block Write Protection
  29.         #pragma config WRTC     = OFF
  30.         #pragma config EBTR0    = OFF
  31.         #pragma config EBTR1    = OFF
  32.         #pragma config EBTRB    = OFF
  33.  
  34.  
  35. unsigned char result2;
  36.  
  37. void main(void) {
  38.  
  39.         TRISD  =    0x00;
  40.         ADCON0 =        0x05;                   // 00 00 01 01 AN1 kivalaszt
  41.         ADCON1 =        0x0D;                   // 00 00 11 01 AN1 analog
  42.         ADCON2 =    0X3E;                       // 00 11 11 10 Left; 20Tad; 64/Fosc
  43.         T1CON  =        0b10110001;
  44.         PIE1bits.TMR1IE=1;
  45.         INTCONbits.PEIE=1;
  46.         INTCONbits.GIE=1;
  47.         IPR1bits.TMR1IP=1;
  48.         PORTDbits.RD7 = 1;
  49.  
  50. while(1) {
  51.        
  52.         PORTDbits.RD6 = PORTDbits.RD6 ^ 1;
  53.         ADC_16();
  54.         PORTD = result2;
  55.  
  56. } //while(1)
  57.                                                                                                                                                 // Disable A/D converter
  58. } // main()
  59.  
  60.  
  61. int ADC_16(void)
  62. {
  63. unsigned char i;
  64. int result=0;
  65.         for (i=0; i<32; i++) {
  66.     ADCON0bits.GO = 1;
  67.     while(ADCON0bits.GO); {Nop();}
  68.  
  69.         result = ADRESH+result;
  70.         }
  71.         result2 = result/32;
  72. return result2;
  73. }
  74.  
  75.  
  76. void InterruptHandlerHigh(void)
  77. {
  78.   if (PIR1bits.TMR1IF)
  79.     {                                   //check for TMR1 overflow
  80.      PIR1bits.TMR1IF = 0;             //clear interrupt flag
  81.      PORTDbits.RD7 = PORTDbits.RD7 ^ 1; //toggle LED on RD7
  82.         }
  83. }
(#) Harry válasza watt hozzászólására (») Márc 7, 2010 /
 
Sikerült a karakteres LCD modult beüzemelni. Nemtudom mi lehetett a hiba. Ugye mikután küldtem a hsz-t szétszedtem az áramkört. Kaptam egy fülest hogy a beforrasztott lábakról alkohollal szedjem le a forrasztózsírt, megtettem, összeraktam újból a kapcsolást, és azóta megy tökéletesen.
Köszönöm a hozzászólásokat.
(#) nemgyuri hozzászólása Márc 7, 2010 /
 
Van egy PIC-es kapcsolásom amiben működik egy óra is. Tápról (stabil 5V) működik, de ha nincs táp elemről (4,5V) megy tovább, csak a kimeneteit lekapcsolja. Az óra kb 2 perc/nap sebességgel gyorsabban megy 4,5V-ról! A qarz 3,575 MHz-es. Ez normális lehet?
(#) Hp41C válasza Amarton hozzászólására (») Márc 7, 2010 /
 
Szia!

A 18F2550 - 18F4550 -ben bizonyos verzióinál gubanc van a hardware regiszter mentéssel - az ajánlás szerint a két megszakítási rutinnak az alacsony szintű rutint (mentésnél nem használják a hardware regisztereket) kell beállítani. Olvasd el az Errata-kat...
Datasheet-errata, Silicon-errata

Induláskor töröld ki az INTCON (RBIF értéke határozatlan), és az összes PIR regisztert.

Szia
(#) kikike1415 hozzászólása Márc 7, 2010 /
 
Üdv!
az lenne a kérdésem, hogy timer 2-nél milyen képlettel lehet kiszámítani a PR2 értékét, vagy van e erre valamilyen program?
(#) icserny válasza Amarton hozzászólására (») Márc 7, 2010 /
 
A konfigurációs biteket fölösleges definiálgatni, a bootloaderrel együtt már be vannak állítva.

Az interrupt használatához a PICCOLO project esetén
1. definiálni kell a USE_INTERRUPT szimbólumot
2. definiálni kell a hi_isr() interrupt kiszolgáló eljárást
3. definiálni kell a lo_isr() interrupt kiszolgáló eljárást (akkor is, ha csak egyszintű programmegszakítást akarunk használni).

A programot én így kezdeném:

  1. #define USE_INTERRUPT
  2. #include "p18_all.h"
  3. #include "delays.h"
  4.  
  5. unsigned char result2;
  6.  
  7. #pragma interrupt hi_isr
  8. void hi_isr(void)
  9. {
  10.   if (PIR1bits.TMR1IF)
  11.     {                                   //check for TMR1 overflow
  12.      PIR1bits.TMR1IF = 0;               //clear interrupt flag
  13.      PORTDbits.RD7 = PORTDbits.RD7 ^ 1; //toggle LED on RD7
  14.     }
  15. }
  16.        
  17. #pragma interruptlow lo_isr
  18. void lo_isr()
  19. {              
  20. }


Mint látható, az interrupt kiszolgáló eljárás neve kötött, s kell elé egy #pragma interrupt vagy interruptlow sor.

A PICCOLO projekt állományait épp most vizsgálom felül, mert hibákat javítgatok benne, illetve tovább kell fejleszteni az USB használathoz. A fenti programhoz a mellékelt állományokat használtam.
(#) vaszil29 hozzászólása Márc 7, 2010 /
 
Üdv, Sziasztok!
Lenne egy olyan kérdésem, hogy a Pic klón Pic nélkül letudom e ellenőrizn. Mondjuk, ha a foglalatban áthidalásokat raknék, hogy le ellenőrizzem a kapcsolást áram alatt, de még nem a számitógéphez kapcsolva.

üdv szabolcs
(#) Amarton válasza icserny hozzászólására (») Márc 7, 2010 /
 
Közben délután én is rájöttem.
Kikommenteztem a p18_all.h-ból a megszakítási sorokat.
Aztán kipróbáltam azzal a módszerrel is, amit te mondtál. Mind a két metódus működik, de meghagyom a te kódrészedet.
HID bootloader alapból milyen belső órajelen megy?
Kicsit kevésnek tartom a sebességét.
Lehet, hogy asm-hez vagyok szokva és a C ennyivel nagyobb (lassabb) kódot generál?
(#) icserny válasza Amarton hozzászólására (») Márc 7, 2010 /
 
Idézet:
„HID bootloader alapból milyen belső órajelen megy?”
Természetesen 48 MHz-en (12 MIPS).
Az általad használt utasítás azonban igen rossz kódot produkált:
  1. PORTDbits.RD7 = PORTDbits.RD7 ^ 1;
  2.   0128    5083     MOVF 0xf83, W, ACCESS
  3.   012A    0B80     ANDLW 0x80
  4.   012C    E001     BZ 0x130
  5.   012E    0E01     MOVLW 0x1
  6.   0130    0A01     XORLW 0x1
  7.   0132    B0E8     BTFSC 0xfe8, 0, ACCESS
  8.   0134    8E83     BSF 0xf83, 0x7, ACCESS
  9.   0136    A0E8     BTFSS 0xfe8, 0, ACCESS
  10.   0138    9E83     BCF 0xf83, 0x7, ACCESS

"Jobban forduló" utasításokal ugyanez:
  1. PORTDbits.RD6 = !PORTDbits.RD6;
  2.   013A    7C83     BTG 0xf83, 0x6, ACCESS
  3.    PORTDbits.RD5 = ~PORTDbits.RD5;
  4.   013C    7A83     BTG 0xf83, 0x5, ACCESS
(#) szilva válasza Harry hozzászólására (») Márc 7, 2010 /
 
Ugyan ez itt off, de nem tudom, hogy honnan szeditek ezeket a forrasztózsíros dolgokat. Már több helyen találkoztam ezen a fórumon a különböző forrasztást segítő csodák használatával és az abból adódó gondokkal. Elektronikai forrasztásoknál csak olyan folyasztó- vagy tisztítószert szabad használni, amit kifejezetten ilyesmire találtak ki. Egyébként meg leginkább semmit, csak tiszta gyantát, illetve eleve gyantás forrasztóónt.

Forrasztózsír elektronikához nem való! A forrasztózsírok, forrasztóolajok és hasonló anyagok maradványai érdekes meglepetéseket szoktak okozni az elektronikákban, ha valamiért ilyet kell mégis használni (szerintem nincs, ami indokolná), akkor nagyon alapos takarítást kell utána végezni.
(#) szilva válasza nemgyuri hozzászólására (») Márc 7, 2010 /
 
Lehet akár normális is, a MHz-es kvarcokkal tapasztalat alapján mindig pontatlanabb az óra, mint ha direkt óra céljára kitalált kvarc lenne az óra időalap. De az is lehet, hogy valahol egy elcsúszik az osztásarány, ez a 3.575MHz nekem elég egzotikusnak tűnik.
(#) Attila86 hozzászólása Márc 7, 2010 /
 
A PORTB lábaira kapcsolható felhúzó ellenállások milyen értékűek? Nem találok erről információt az adatlapban. PIC18F2423-ról van szó.

PORTB-re LED van kötve és a PIC-nek ki kellene derítenie hogy nyitó vagy záróirányban van-e. Gondoltam a felhúzó ellenállással kinyitom a LED-et és analóg bemenetté konfigurálom az I/O lábat, majd megmérem hogy csökkent-e a feszültség a lábon. Ha igen akkor nyitó irányban volt a LED. Remélem elég kicsi ehhez a felhúzó ellenállások értéke és be lehet őket kapcsolni akkor is ha analóg bemenetre van állítva a láb... :hide:
(#) watt válasza Attila86 hozzászólására (») Márc 7, 2010 /
 
Úgy tudom csak digitális bemenetkor működnek a felhúzók. Értékét úgy tudod meghatározni, hogy lehúzod mondjuk 10Kohm-al és megméred a feszt. Ebből ki tudod számolni a keresett ellenállás értéket. Ha túl kicsi feszt mérnél, akkor 100Kohm-al próbáld. Ha jól emélékszem 10Kohm az értéke, de lehet, hogy rosszul...
(#) Attila86 válasza watt hozzászólására (») Márc 7, 2010 /
 
Most nézem, tényleg csak digitális bemenet esetén működik:
Idézet:
„PORTB<0> data input; weak pull-up when RBPU bit is cleared.
Disabled when analog input enabled.(1)

Kár.
(#) nemgyuri válasza szilva hozzászólására (») Márc 7, 2010 /
 
Szia Szilva!
A qvarz a LOMEX-ban olcsó volt, van itthon belőle 10 db. Csak ezért lett ez használva. A PIC tápfesze befolyásolja a frekit, kb 1 hónapos teszt alapján. Ha csak elemről megy az óra 1 hét alatt 1-2 másogpercet siet, tápról kb 2 percet naponta.
(#) szilva válasza nemgyuri hozzászólására (») Márc 7, 2010 /
 
Szerintem a tápellátásnak nem szabadna befolyásolnia a kvarcoszcillátort. Nem lehet, hogy elemről járva máshogy működik a program is, és emiatt lehet a különbség?
(#) szilva válasza Attila86 hozzászólására (») Márc 7, 2010 /
 
Egyébként azok valójában nem ellenállások, hanem FET-ek a chipen belül. Ezek a FET-eknek a kinyitáskor inkább áramgenerátoros jellegű lesz a felhúzás, éppen ezért az adatlapban is ezt az áramot adják meg és nem ellenállást (én 80uA körülre emlékszem).
Következő: »»   695 / 1320
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