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   406 / 1210
(#) anemo válasza icserny hozzászólására (») Máj 7, 2013 /
 
Mellékelem a teljeset. A CLR magas szinten van. Már kinyújtottam 2-300ms-ra mindent, még az órajelet is, hogy ki tudjam mérni, nem-e forrasztási hiba van. De így sem működik, a SHIFT OUT csak 0V.. Remélem jól értelmezem, hogy a SH/LD csak egy órajel erejéig alacsony szintű, végig magason kell lennie.

isispic.jpg
    
(#) janimester válasza janimester hozzászólására (») Máj 7, 2013 /
 
Hát sajnos a kérdésem túl bonyolult volt választ nem kaptam eddig rá
(#) bzumi hozzászólása Máj 7, 2013 /
 
Sziasztok, esetleg megmondaná valaki hogy ez a pic adapter jó e? és használható? vagy ha nem, akkor esetleg átjavítaná valaki? köszönöm
(#) Hp41C válasza bzumi hozzászólására (») Máj 8, 2013 /
 
Szia!
Sokszor leírtam már:
Nem javasolt az ilyen univerziális adapter megépítése:
- A programozás többször be- és kilépked a programozási üzemmódból, egy belső órajelre konfigurált kontorller el is indulhat és a más tokok programozására szolágó összeköttetésekre akár kimenetet is kapcsolhat - Murphy szerint ellentétes logikai értékkel.
- Az adapterek vonzák a nem bele való kontrollereket. Egy 28 lábú 16F és 18F még lábkompatibilis, de egy dsPIC30, dpPIC33, 24F, 32MX már nem - pedig ugyanabban az SDIP28 tokban kaphatók.
- Speciális kivezetések is vannak, amiket a programozás során is be kell kötni: AVdd, AVss, VBUS, EVNDIS, Vcap. Vcap már a 18F__K sorozatban is.

Javaslom az áramkörön belüli programozást - minden bekötendő kivezetés az áramkörnek megfelelően van bekötve. Ha mégsem lehetséges, minden bekötési kombinációnak külön adatper típusmegjelöléssel.
A hozzászólás módosítva: Máj 8, 2013
(#) Pali79 válasza bzumi hozzászólására (») Máj 8, 2013 /
 
Egyetértek Hp41C kollégával, annyival egészíteném ki, hogy ha mint én, teljesen kezdőként ismerkedsz a PIC-kel és egyenlőre csak a hagyományos PIC16Fxxx sorozatot használod, akkor teljesen jó. Nekem is van ilyen és a régi PIC-ekhez jól használható, de csak azokhoz!
(#) Hp41C válasza Pali79 hozzászólására (») Máj 8, 2013 /
 
Egy 16F887 belső oszcillátorral és MCLR reset letiltásával már indul a Vdd bekapcsolására, ha kimenetnek állítja be a következő lábak egyikét-másikát és nem jó jelszintet ad rá, máris kész a kimenetek közötti vagy kimenet és táp föld közötti rövidzár. Elég sok lehetőség van, valamelyik csak összejön egyszer...:
RA0 - RB1 - RB7 - RD7, RA2 - Vss, RA3 - RA7, RA4 - Vss, RE2 - Vdd, RA6 - RC0 - RC1 - RC2 - Vss, RC6 - RD6 - RB0 - RB6, RC7 - Vss, RD4 - Vdd, RB2 - RB4 - Vdd
Ez még csak a DIP40 tok tönkretételének lehetőségei. A tárház ennél bővebb, hiszen a 28, 20, 18, 14 és 8 lábúakat nem is vettem figyelembe. Most jut eszembe, hogy írom a 10F DIP8 tokjának bekötése nem kompatibilis a 12F / 16F DIP 8 tokokéval - még a táplábak sem egyeznek. A 16F1455 / 16F1459 programozási bekötése egyezik ugyan a 16F684 / 16F690 -ével, de csak LVP módban, HVP esetben más lábakra került a PGD és a PGC... Ezenkívül egy új vagy törölt kontrollerben a LVP engedélyezett, a PGM kivezetésekkel is kell valamit csinálni (DIP40, SDIP28, DIP18 ez utóbbi esetben két PGM bekötés is előfordul)...

Még egyszer: Nem ajánlott a sem a megépítése sem a használata. Úgy is mondhatnám, hogy használata lapos pénztárca esetén nem ajánlott. Egy breadboard jobban teljesít - az ára összemérhető a ZIF foglalatéval.

Ezek az adapter tervek egykorúak a szintén nem ajánlott JDM programozókkal, a tervezésük idején nem volt belső oszcilátoros és letiltható MCLR resettel rendelkező kontroller. A tervek ma már nem használhatók.
A hozzászólás módosítva: Máj 8, 2013
(#) KisBuczi hozzászólása Máj 8, 2013 /
 
Sziasztok !

Abszolút kezdőként, néhány áramkörrel a hátam mögött, szeretném a segítségeteket kérni !
A megoldandó probléma a következő:
Adott egy 12 V-os max 3 Ampert termelő napelem. Ennek a teljesítményét kellene kijelezni 10-15 db magasfényű leden keresztül. Pic-el nyilvánvaló még számomra is, hogy feszültségosztó ellenállással meg lehet oldani, de a fő probléma, hogy nincs lehetőség a tápáram biztosítására, csupán a napelem mérendő árama szolgál tápként is. Szükségem volna egy kapcsolási rajzra illetve a kioktató tanácsokat nem veszem rossz néven
(Tisztában vagyok vele hogy a Google a barátom )
(#) Szamy hozzászólása Máj 8, 2013 /
 
Üdvözletek!
16f628A . Az A5 lábat (MCLR) is szeretném bemenetnek használni, aktív alacsony beállítással.
1K a felhúzó, MCLR természetesen belsőre állítva.
Autós felhasználásról lenne szó, a problémám: álló motornál minden ok, de járó motornál, ha testet adok ide (mechanikus kontakt!) azonnal resetel a Pic.
Az összes többi láb használata tökéletesen működik. Sajnos nincs több szabad lábam, tehát muszáj lenne valahogy megoldani.
Van esetleg ötletetek?
A hozzászólás módosítva: Máj 8, 2013
(#) vicsys válasza KisBuczi hozzászólására (») Máj 8, 2013 /
 
Ha nem ragaszkodsz a ledekhez, akkor ez tipikusan egy darab deprez műszerrel megoldható.
(#) kissi válasza vicsys hozzászólására (») Máj 8, 2013 /
 
Idézet:
„Ennek a teljesítményét kellene kijelezni 10-15 db magasfényű leden keresztül.”
Teljesítménymérés 1 db deprez műszerrel ? Hogyan ?!
(#) Hp41C válasza Szamy hozzászólására (») Máj 8, 2013 /
 
Szia!
Több eset lehetséges:
- Nem jól adtad meg a konfigurációs szót, mégiscsak megvan a reset funkció. Mit állítottál be?
- A program, amelyik ezt a RA5 bemenetet kezeli nem működik jól. Bank beállítási probléma, 256 byte -os határátlépés táblázatnál, stach kezelése hiba. Valahogy űjta a 0 címre kerül a vezérlés.
- Az a terhelés, amit az 1k földre húzása és annak a program által hozzátett fogyasztása meghaladja a táp kapacitását, lemegy a feszültség a BOR szintje alá.
- A RA5 MCLT láb zárlatos valahol a Vdd vagy más kimenet felé.
(#) Hp41C válasza vicsys hozzászólására (») Máj 8, 2013 /
 
Idézet:
„a teljesítményét kellene kijelezni”
Idézet:
„egy darab deprez műszerrel”

Egy szorzó még kellene bele... Vagy olyan műszer, amiben az állandó mágnes helyett is elektromágnes van.
(#) janimester hozzászólása Máj 8, 2013 /
 
Üdv. Ki tudná nekem ezt mikroc-ben megadni olyan paranccsal hogy kivéve 18f2550- esetén a porta0-lábat ne kapcsolja ki analóg bemenetként? Vagy jó az RA1 RA2-is csak valamelyik maradjon bekapcsolva analóg ki és bemenetként a ds18b20 számára.

  1. ADCON1 = 0x0F;  // Disable Analog functions
Mert most azt írja a szimulátor hogy a porta2 nincs beállítva analóg bemenetnek amin a hőmérő szenzor lenne.
A hozzászólás módosítva: Máj 8, 2013
(#) icserny válasza janimester hozzászólására (») Máj 8, 2013 /
 
1. Próbáld a kérdéseidet érthetően megfogalmazni!
2. ADCON1 = 0x0F; minden ANx bementet digitális módba állít (lásd adatlap 21-2 szekciója)
(#) Hp41C válasza janimester hozzászólására (») Máj 8, 2013 /
 
Szia!
Próbálkozhatsz akármilyen nyelvvel, de ilyen parancsot nem fogsz találni. Ha a 18F2550 valamelyik lábát analóg módra kapcsolod (és az nem a RA0), akkor a RA0 mindenképen analóg módba kapcsol...
(#) bzumi válasza Hp41C hozzászólására (») Máj 8, 2013 /
 
Köszönöm a választ, sokat segítettél én amúgy a pic16f871-et használom. ehez kellet nekem ez a adapter, de akkor ezek szerint nem jó de akkor most miben égessem a picet?
(#) vicsys válasza kissi hozzászólására (») Máj 8, 2013 /
 
Értelemszerűen egy dupla tekercses műszerről van szó, vagy ténylegesen ágy árammérőről, ha fesz. konstans. Fejben szorzás meg megy...
(#) kissi válasza vicsys hozzászólására (») Máj 8, 2013 /
 
Idézet:
„Értelemszerűen egy dupla tekercses műszerről van szó”
Ezt kereszttekercses műszernek ismerem, nem deprez-nek
Idézet:
„vagy ténylegesen ágy árammérőről, ha fesz. konstans”
Na, ennek kicsi az esélye, már ha mérni akarunk és nem saccolni !
Idézet:
„Fejben szorzás meg megy.”
Igen, főleg a mi generációnknak
A hozzászólás módosítva: Máj 8, 2013
(#) vicsys válasza kissi hozzászólására (») Máj 8, 2013 /
 
Igazad van, tényleg kereszttekercsesnek hívják. Még életemben nem volt a kezemben. Gyanítom, hogy a napelem akksit tölt, vagy kimenetén valamilyen szabályzás van. E miatt tételeztem fel a konstans (pl. 12V) feszt. Mivel max. 3A-ról van szó és feltételezzük a tizedes felbontást, akkor már nem kell saccolni. Ez bizony általános iskolai feladat és nem kell hozzá számológép. Ha valaki ragaszkodik a nagyobb felbontáshoz, akkor vegye elő a memóriabővítő okos telefonját és uccu neki, szorozzon!
Sajnos nincsenek tények leírva az eredeti kérdésben és emiatt én is tapogatózok. Nekem a napelem miatt, rögtön a kis fogyasztás ugrott be, nem a nagyfényű ledek.
(#) vicsys válasza (Felhasználó 15355) hozzászólására (») Máj 8, 2013 /
 
Jóvanna! Agyorsír ás még nem mágy.
(#) Hp41C válasza bzumi hozzászólására (») Máj 8, 2013 /
 
Ha mindenképen adapteren programozod, végy egy SDIP28 rugós foglalatot, 1 db 100nF SMD1206 kerámia kondenzátort, egy 10k ellenállást, 6 jumpertüskét és némi vezetéket. Egy próbapanel darabon forraszd össze: 100nF a 19. és 20. lábak közé, 10k a MCLR és a Vss (Vss nem elírás) közé. A panel legyen olyan nagy, hogy elhelyezhess rajta egy címkét, amire felírod mely típus(ok)hoz való. A panel akár elkészíthető nyákkal is...
A hozzászólás módosítva: Máj 8, 2013
(#) bzumi válasza Hp41C hozzászólására (») Máj 8, 2013 /
 
Igen köszi szépen ám közben eszembe jutott hogy simpivel beszéltem és meg is rendeltem a dugaszolós nyákot csak neten találtam és hát gondoltam megkérdem hogy használható e vagy sem.. még is szebb és praktikusabb ugyebár. dehát akkor marad a dugaszolós nyák
(#) janimester válasza Hp41C hozzászólására (») Máj 8, 2013 /
 
Értem amúgy egy infrakapus fordulatszámmérő programban van ez a kód ami letiltja az analóg bemeneteket. Miként tudnám a kettőt egymás mellett működésre bírni akkor?
(#) icserny válasza janimester hozzászólására (») Máj 8, 2013 /
 
Ahány analóg bemenet kell, annyit ki kell osztani sorban, az RA0(AN0)-tól kezdve. A digitális cuccokat pedig a többi lábra kell elosztani. A letiltás pedig úgy védhető ki, hogy a 0x0F helyébe más számot írsz: 0x0E, 0x0D, 0x0C..., attól függően, hogy hány analóg bemenet kell.
(#) Hp41C válasza icserny hozzászólására (») Máj 8, 2013 /
 
Felcseréled a portokat.... De amit olvason a ... csak a port 0. bitjén kezeli a 1-wire eszközöket. Tedd át a 1-wire lábat az RB0 -ra, az analóg bemenetet a RA0 -ra. Az ADCON1 = 0x0E beállítással csak a RA0 lesz analóg.
(#) janimester válasza Hp41C hozzászólására (») Máj 8, 2013 /
 
Itt a teljes program. Ha ez segít. 86. sorban található a bűnös.
  1. unsigned long RPM_Value;
  2.  
  3. sbit LCD_RS at RC0_bit;
  4. sbit LCD_EN at RC1_bit;
  5. sbit LCD_D4 at RC2_bit;
  6. sbit LCD_D5 at RC6_bit;
  7. sbit LCD_D6 at RC7_bit;
  8. sbit LCD_D7 at RB0_bit;
  9. sbit LCD_RS_Direction at TRISC0_bit;
  10. sbit LCD_EN_Direction at TRISC1_bit;
  11. sbit LCD_D4_Direction at TRISC2_bit;
  12. sbit LCD_D5_Direction at TRISC6_bit;
  13. sbit LCD_D6_Direction at TRISC7_bit;
  14. sbit LCD_D7_Direction at TRISB0_bit;
  15.  
  16. sbit IR_Tx at RA3_bit;
  17.  
  18. const unsigned short TEMP_RESOLUTION = 12;
  19. char *text = "000.0";
  20. unsigned temp;
  21.  
  22. char Message3[] = "AKKU";
  23. unsigned int ADC_Value, DisplayVolt;
  24. char *volt = "00.0";
  25.  
  26. void Display_Temperature(unsigned int temp2write) {
  27.   const unsigned short RES_SHIFT = TEMP_RESOLUTION - 8;
  28.   char temp_whole;
  29.   unsigned int temp_fraction;
  30.  
  31.   // Check if temperature is negative
  32.   if (temp2write & 0x8000) {
  33.      text[0] = '-';
  34.      temp2write = ~temp2write + 1;
  35.      }
  36.  
  37.   // Extract temp_whole
  38.   temp_whole = temp2write >> RES_SHIFT ;
  39.  
  40.   // Convert temp_whole to characters
  41.   if (temp_whole/100)
  42.      text[0] = temp_whole/100  + 48;
  43.   else
  44.      text[0] = ' ';
  45.  
  46.   text[1] = (temp_whole/10)%10 + 48;             // Extract tens digit
  47.   text[2] =  temp_whole%10     + 48;             // Extract ones digit
  48.  
  49.   // Extract temp_fraction and convert it to unsigned int
  50.   temp_fraction  = temp2write << (4-RES_SHIFT);
  51.   temp_fraction &= 0x000F;
  52.   temp_fraction *= 625;
  53.  
  54.   // Convert temp_fraction to characters
  55.   text[4] =  temp_fraction/1000    + 48;         // Extract thousands digit
  56.  
  57.  
  58.   // Print temperature on LCD
  59.   Lcd_Out(2, 14, text);
  60. }
  61.  
  62. // Define Messages
  63.  char message1[] = "FORDULAT";
  64.  char *RPM = "00000RPM";
  65.  void Display_RPM(unsigned long num){
  66.   RPM[0] = num/10000 + 48;
  67.   RPM[1] = (num/1000)%10 + 48;
  68.   RPM[2] = (num/100)%10 + 48;
  69.   RPM[3] = (num/10)%10 + 48;
  70.   RPM[4] = num%10 + 48;
  71.   Lcd_Out(3,13,RPM);
  72.  }
  73.  
  74.  void main() {
  75.   CMCON = 0b00000111;                                 //h
  76.   LATB = 0x08;                                        //h
  77.  
  78.  ADCON1 = 0b00000010;               // RA2/AN2 is analog input               v
  79.  ADCON0 = 0b00001000;               // Analog channel select @ AN2           v
  80.  ADCON1 = 0x00;                     // Reference voltage is Vdd              v
  81.  TRISC = 0b00000000;                // PORTC All Outputs                     v
  82.  TRISA = 0b00001100;                // PORTA All Outputs, Except RA3 and RA2 v
  83.  
  84.  
  85.   CMCON = 0x07;   // Disable comparators                               r
  86.  ADCON1 = 0x0F;  // Disable Analog functions                          r            ITT A HIBA!!!! ha ezt így hagyom nem működik a hőmérséklet mérés.
  87.   TRISC = 0x00;
  88.   TRISB = 0x00;
  89.   PORTA = 0x00;
  90.   TRISA = 0b00010000;
  91.   T0CON = 0b01101000; // TMR0 as 16-bit counter                        r
  92.  
  93.   Lcd_Init();        // Initialize LCD
  94.   Lcd_Cmd(_LCD_CLEAR);             // CLEAR display
  95.   Lcd_Cmd(_LCD_CURSOR_OFF);        // Cursor off
  96.   Lcd_Out(3,1,message1);            // Write message1 in 1st row
  97.   Lcd_Out(2, 1, "HENGER:");
  98.   // Print degree character, 'C' for Centigrades
  99.   Lcd_Chr(2,19,223);
  100.   Lcd_Chr(2,20,'C');
  101.   Lcd_Out(1,1,Message3);
  102.   Lcd_Chr(1,20,'V');
  103.  
  104.   do {
  105.  
  106.    T0CON.TMR0ON = 1;
  107.    TMR0L = 0;
  108.    TMR0H = 0;
  109.    IR_Tx = 1;
  110.  
  111.    Delay_ms(1000); // Wait for 1 sec
  112.    IR_Tx = 0;
  113.    T0CON.TMR0ON = 0;    // Stop the timer
  114.    RPM_Value = (256*TMR0H + TMR0L)*60;
  115.    Display_RPM(RPM_Value);
  116.  
  117.  
  118.   Ow_Reset(&PORTA, 0);                         // Onewire reset signal
  119.     Delay_ms(20);
  120.     Ow_Write(&PORTA, 0, 0xCC);                   // Issue command SKIP_ROM
  121.     Delay_ms(10);
  122.     Ow_Write(&PORTA, 0, 0x44);                   // Issue command CONVERT_T
  123.     Delay_us(120);
  124.  
  125.     Ow_Reset(&PORTA, 0);
  126.     Delay_ms(20);
  127.     Ow_Write(&PORTA, 0, 0xCC);                   // Issue command SKIP_ROM
  128.     Delay_ms(20);
  129.     Ow_Write(&PORTA, 0, 0xBE);                   // Issue command READ_SCRATCHPAD
  130.     Delay_ms(20);
  131.     temp =  Ow_Read(&PORTA, 0);
  132.     temp = (Ow_Read(&PORTA, 0) << 8) + temp;
  133.  
  134.     //--- Format and display result on Lcd
  135.     Display_Temperature(temp);
  136.     Delay_ms(500);
  137.  
  138.   ADC_Value = ADC_Read(2);
  139.   DisplayVolt = ADC_Value * 2;
  140.   volt[0] = DisplayVolt/1000 + 48;
  141.   volt[1] = (DisplayVolt/100)%10 + 48;
  142.   volt[3] = (DisplayVolt/10)%10 + 48;
  143.   Lcd_Out(1,16,volt);
  144.   delay_ms(500);
  145.  
  146.  }
  147.   while(1);
  148. }
A hozzászólás módosítva: Máj 8, 2013
(#) Szamy válasza Hp41C hozzászólására (») Máj 9, 2013 /
 
Üdv!
Köszönöm, végül erre a bemenetre rátettem egy N-es optót, így működik. Mindíg eigyekszem kerülni a(z) MCLR,PGMD,PGC lábak használatát, de most elkerülhetetlen volt.
Köszönöm még egyszer.
(#) janimester válasza janimester hozzászólására (») Máj 10, 2013 2 /
 
Ennyit a profikról , magam megoldottam a hibát minden működik már nem zavarodnak össze egymástól
(#) Hp41C válasza janimester hozzászólására (») Máj 10, 2013 /
 
Ugyan nem neked sikerült válaszolni ezt...
Idézet:
„Felcseréled a portokat.... De amit olvason a ... csak a port 0. bitjén kezeli a 1-wire eszközöket. Tedd át a 1-wire lábat az RB0 -ra, az analóg bemenetet a RA0 -ra. Az ADCON1 = 0x0E beállítással csak a RA0 lesz analóg.”

Az is megoldás lehet, hogy csak a mérés idejére állítod analógra a RA2..RA0 -t, de a digitális bemenet nagyobb áramot fog fogyasztani a logitai szintek közötti tartományba eső feszültség hatására...
(#) janimester válasza Hp41C hozzászólására (») Máj 10, 2013 /
 
Nem úgy oldottam meg ahogy leírtátok, kerestem egy másik adc voltmérő programot amely nem használja az analóg bemenetek tiltását kitöröltem a régit , a helyére beollóztam az újat és működik minden. Igaz picit lassúnak érzem a pic-et de szerintem a ds szenzor mintavételezési ideje miatt lehet ez. Mert fogja az egész főprogramot 650-750ms-ig. Most azt szeretném megtudni hogy tudok egy bemenő analóg értéket ilyen vonalakkal vagy hasábokkal kijelezni mint a képen? Azt sejtem hogy egyéni értékekhez hozzá lehet rendelni valamilyen egyéni karaktert mint ez és ahogy teszem azt elérem a 3V bemenő feszültséget kirajzol nekem pl. 9 tele hasábot azaz egyéni karaktert. Azt nem értem miképp tudom beírni a programba mondjuk hogy ha elérem az 1v bemenő feszt akkor írjon ki egy hasábot a kijelző x sorába y karakterébe.
A hozzászólás módosítva: Máj 10, 2013

mqdefault.jpg
    
Következő: »»   406 / 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