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   258 / 1216
(#) sany válasza Hp41C hozzászólására (») Máj 20, 2012 /
 
Itt a kód. Remélem segít valamit.

  1. char digit[8]={"00:00:00"};
  2. int masodperc=0;
  3. int perc=0;
  4. int ora=0;
  5.  
  6. sbit LCD_RS at RB2_bit;
  7. sbit LCD_EN at RB3_bit;
  8. sbit LCD_D4 at RB4_bit;
  9. sbit LCD_D5 at RB5_bit;
  10. sbit LCD_D6 at RB6_bit;
  11. sbit LCD_D7 at RB7_bit;
  12.  
  13. sbit LCD_RS_Direction at TRISB2_bit;
  14. sbit LCD_EN_Direction at TRISB3_bit;
  15. sbit LCD_D4_Direction at TRISB4_bit;
  16. sbit LCD_D5_Direction at TRISB5_bit;
  17. sbit LCD_D6_Direction at TRISB6_bit;
  18. sbit LCD_D7_Direction at TRISB7_bit;
  19.  
  20. char konvert(int szam)
  21. {
  22.      switch(szam){
  23.               case 0:return "0x30";
  24.               case 1:return "0x31";
  25.               case 2:return "0x32";
  26.               case 3:return "0x33";
  27.               case 4:return "0x34";
  28.               case 5:return "0x35";
  29.               case 6:return "0x36";
  30.               case 7:return "0x37";
  31.               case 8:return "0x38";
  32.               case 9:return "0x39";
  33.               default:return "0x30";
  34.               }
  35. }
  36.  
  37. void main()
  38. {
  39.  cmcon=0x07;
  40.  TRISA=0xFF;
  41.  TRISB=0x00;
  42.  PORTB=0;
  43.  PORTA=0;
  44.  
  45. Lcd_Init();
  46. Lcd_Cmd(_Lcd_CLEAR);
  47. Lcd_Cmd(_Lcd_CURSOR_OFF);
  48.  
  49. while(1)
  50. {
  51. if(masodperc==59) {
  52.                 masodperc=0;
  53.                 if(perc==59) {
  54.                            perc=0;
  55.                            if(ora==23) ora=0;
  56.                            else ora++;
  57.                            }
  58.                 else perc++;
  59.                 }
  60.      else masodperc++;
  61.  
  62.  
  63. digit[0]=*(konvert((ora-(ora%10))/10));
  64. digit[1]=*(konvert(ora%10));
  65. digit[2]=':';
  66. digit[3]=*(konvert((perc-(perc%10))/10));
  67. digit[4]=*(konvert(perc%10));
  68. digit[5]=':';
  69. digit[6]=*(konvert((masodperc-(masodperc%10))/10));
  70. digit[7]=*(konvert(masodperc%10));
  71.  
  72. delay_ms(1000);
  73.  
  74.  
  75. Lcd_Out(1,1,digit[8]);
  76. Lcd_Cmd(_Lcd_CLEAR);
  77. Lcd_Out(1,1,digit[0],digit[1],digit[2],digit[3],digit[4],digit[5],digit[6],digit[7],);
  78. }
  79. }
(#) bbalazs_ válasza apac hozzászólására (») Máj 20, 2012 /
 
Ha van lehetoseged nyakot maratni, akkor szerintem felesleges penzkidobas, de ha nem szeretsz ilyesmivel pepecselni es inkabb a programozas felol kozelted, akkor valoban idealis. Egyebkent latok rajta USB csatlakozot, max a ket data vezeteket utolag behuzod.
De a pic benne elavult. Nem latom, hogy lehetne benne alacsony feszultsegu PIC-eket hasznalni.
(#) apac válasza bbalazs_ hozzászólására (») Máj 20, 2012 /
 
Nyákot tudok csinálni itthon is. Csak nincsen hozzá semmilyen kacsolási rajzom vagy nyáktervem. Az lenne a legjobb, mert így tudnám az elektronika részét is csinálni.
Néztem én több fejlesztő lapot is de mindegyik olyan kis egyszerűnek tűnt. Nekem valami olyan kellene amit azért olyan hamar nem növök ki. meg sok minden van rajta.
(#) apac válasza apac hozzászólására (») Máj 20, 2012 /
 
Ezt találtam legnormálisabbnak amit meg tudnék építeni.
Bővebben: Link Csak ehhez nincsen meg az alkarész listám. Ami szerepel a kapcsolási rajzom azt le tudtam irni, de van jópár amire nem tudtam rájönni hogy micsoda.
(#) bbalazs_ válasza apac hozzászólására (») Máj 20, 2012 /
 
Nezd, nyilvan nehez tanacsot adni.
Szigoruan szerintem, ha tudsz nyakot kesziteni, akkor tervezz par altalanos dolgot ra, mondjuk pl infravevot, az remekul helyettesiti a nyomogomb-matrixot.
Ami fontos lesz majd neked, az a rengeteg tap- es foldpont. Az osszes tobbit egyszeruen be tudod kabelezni. Sokat segit, ha a nyakra ra van maratva a kiosztas.
De nem mindenki mellett van ott a paka.
Szerintem nem kell tul gyakran konfigot valtani es en szemely szerint nem bizom a sima kontaktusokban. Jobb az, ha oda van forrasztva...
(#) vilmosd válasza apac hozzászólására (») Máj 20, 2012 /
 
(#) vilmosd válasza sany hozzászólására (») Máj 21, 2012 /
 
  1. digit[0]=((ora-(ora%10))/10)+'0';
  2. digit[1]=(ora%10)+'0';
  3. digit[2]=':';
  4. digit[3]=((perc-(perc%10))/10)+'0';
  5. digit[4]=(perc%10)+'0';
  6. digit[5]=':';
  7. digit[6]=((masodperc-(masodperc%10))/10)+'0';
  8. digit[7]=(masodperc%10)+'0';
Igy talan egyszerubb lenne a konverzio. Es akkor a kod is rovidebbe valik. Kimarad a Switch-Case halom.
(#) icserny válasza apac hozzászólására (») Máj 21, 2012 /
 
Idézet:
„Szerintetek ezt érdemes kezdéshez megvenni?”
Csak akkor vedd meg, ha rendelkezel annyi jártassággal elektronikából, hogy könnyen fel tudod térképezni, hogy mi mivel van összekötve!

Az ilyen "összkomfortos" paneleknek ez a legnagyobb hátránya: túl sok erőfeszítést igényel a lábak foglaltságának kiderítése.
(#) Hp41C válasza sany hozzászólására (») Máj 21, 2012 /
 
Már csak az indirekció fölösleges benne:
  1. digit[0]=*(konvert((ora-(ora%10))/10));
  2. digit[1]=*(konvert(ora%10));
  3. digit[3]=*(konvert((perc-(perc%10))/10));
  4. digit[4]=*(konvert(perc%10));
  5. digit[6]=*(konvert((masodperc-(masodperc%10))/10));
  6. digit[7]=*(konvert(masodperc%10));

helyett
  1. digit[0]=(konvert((ora-(ora%10))/10));
  2. digit[1]=(konvert(ora%10));
  3. digit[3]=(konvert((perc-(perc%10))/10));
  4. digit[4]=(konvert(perc%10));
  5. digit[6]=(konvert((masodperc-(masodperc%10))/10));
  6. digit[7]=(konvert(masodperc%10));


Nem egyszerűbb így:
  1. char konvert(int szam)
  2. {
  3.     if ( (szam >=0) && (szam<10) )
  4.      return (char)(szam+0x30); else return('0');
  5. }
(#) Stefan válasza vilmosd hozzászólására (») Máj 21, 2012 /
 
#1231736 <- ezt a hozzászólást olvasta valaki egyáltalán? Ennél egyszerűbben nem lehet megoldani. Főleg, hogy a kivonás tök felesleges, mivel a maradék az osztás után úgy is megy a levesbe. Függvényhívás meg csak a stacket eszi.
De ha semmiképp se akar menni akkor:
  1. char buff[16];
  2. sprintf(buff, "%2d:%2d:%2d      \0", ora,perc,masodperc);

Na ez majd jól megdobja a kódot
(#) Stefan válasza sany hozzászólására (») Máj 21, 2012 /
 
Tényleg nem olvassa senki amit írtam...
Ez:
case 8:return "0x38";
Nagyon nem jó, mert a program memóriában letárolja a "0x38" SZÖVEGET és annak a címét adja vissza.
A fordító nem rinyált az implicit type cast miatt?
vagy 0x38 vagy '8' vagy return valami + '0'.
De a "sadklfjaskdfklasd" CÍMET JELÖL!!!
(#) Hp41C válasza Stefan hozzászólására (») Máj 21, 2012 /
 
Szia!
Nem a legegyszerűbb megoldást keressük, hanem, azt miért nem működik sany megoldása.

A megoldáshoz adtam már ötleteket vasárnap reggel.
(#) Stefan válasza Hp41C hozzászólására (») Máj 21, 2012 /
 
Ezt értem, de ha megpróbálna azt a kódrészletet, (mert a javaslatod alapján ugyan átírta a függvényt, de rosszul) azzal már előrébb lenne a dolog, mert a típuskonverziós hiba már nem lenne ott..
(#) sany válasza Stefan hozzászólására (») Máj 21, 2012 /
 
Sziasztok!

Kipróbáltam , amit tanácsoltatok. Még mindig nem jó valami ,mert csak "karakterszemetet" kapok. Hp41C által tanácsolt kódot linkeltem be. Stefan a te megoldásoddal is csak furcsa karakterek jelennek meg. Azért gondoltam a cases megoldást , mert már számlálót építettem hétszegmenses kijelzővel és ott így adtam meg az egyes digiteket. Gondoltam itt is működik csak karakterekkel.

  1. char digit[9]={"00:00:00"};
  2.  
  3. int masodperc=0;
  4. int perc=0;
  5. int ora=0;
  6.  
  7. //LCD modul inicializálása
  8. sbit LCD_RS at RB2_bit;
  9. sbit LCD_EN at RB3_bit;
  10. sbit LCD_D4 at RB4_bit;
  11. sbit LCD_D5 at RB5_bit;
  12. sbit LCD_D6 at RB6_bit;
  13. sbit LCD_D7 at RB7_bit;
  14.  
  15. sbit LCD_RS_Direction at TRISB2_bit;
  16. sbit LCD_EN_Direction at TRISB3_bit;
  17. sbit LCD_D4_Direction at TRISB4_bit;
  18. sbit LCD_D5_Direction at TRISB5_bit;
  19. sbit LCD_D6_Direction at TRISB6_bit;
  20. sbit LCD_D7_Direction at TRISB7_bit;
  21.  
  22. char konvert(int szam)
  23.     {
  24.         if ( (szam >=0) && (szam<10) )
  25.          return (char)(szam+0x30); else return('0');
  26.     }
  27. void main()
  28. {
  29.  cmcon=0x07;
  30.  TRISA=0xFF;
  31.  TRISB=0x00;
  32.  PORTB=0;
  33.  PORTA=0;
  34.  
  35. Lcd_Init();
  36. Sound_Init(&PORTB,0);
  37. Lcd_Cmd(_Lcd_CLEAR);
  38. Lcd_Cmd(_Lcd_CURSOR_OFF);
  39.  
  40. while(1)
  41. {
  42.     if(masodperc==59) {
  43.                 masodperc=0;
  44.                 if(perc==59) {
  45.                            perc=0;
  46.                            if(ora==23) ora=0;
  47.                            else ora++;
  48.                            }
  49.                 else perc++;
  50.                 }
  51.      else masodperc++;
  52.  
  53. digit[0]=(konvert((ora-(ora%10))/10));
  54. digit[1]=(konvert(ora%10));
  55. digit[3]=(konvert((perc-(perc%10))/10));
  56. digit[4]=(konvert(perc%10));
  57. digit[6]=(konvert((masodperc-(masodperc%10))/10));
  58. digit[7]=(konvert(masodperc%10));
  59.  
  60.  
  61. delay_ms(1000);
  62.  
  63. Lcd_Out(1,1,digit[0]);//órak 10 -es
  64. Lcd_Out(1,2,digit[1]);//órak 1 -es
  65. Lcd_Out(1,3,digit[2]);//:
  66. Lcd_Out(1,4,digit[3]);//percecek 10 -es
  67. Lcd_Out(1,5,digit[4]);//perces 1 -es
  68. Lcd_Out(1,6,digit[5]);//:
  69. Lcd_Out(1,7,digit[6]);//másodpercek 10 -es
  70. Lcd_Out(1,8,digit[7]);//másodpercek 1 -es
  71. }
  72. }
(#) p_istvan válasza sany hozzászólására (») Máj 21, 2012 /
 
Szervusz!
Nem tudom milyen fordítód van, de ha az int típus alapértelmezése előjeles akkor is baj van.
deklaráld "unsigned int"-nek az óra, perc másodperc változókat.
Ha mindíg kiírod, hogy signed vagy unsigned egy változó akkor biztos kevesebb lesz a kavarodás.
(#) Hp41C válasza sany hozzászólására (») Máj 21, 2012 /
 
Szia!

Egy kicsit sokat vársz el tőlünk, ahelyett, hogy megnéznéd az Lcd_Out függvény leírását. C programban tudunk segíteni, de azt azért nem várhatod el, hogy minden (általunk nem használt) fordító könyvtári függvényeinek használatát fejből ismerjük...

  1. void Lcd_Out(char row, char column, char *text);

Ezek szerint a 3. paramétere egy karaktersorozatra mutató mutató. Ennek megfelelő program a szimulátor szerint működik.
  1. char digit[9]={"00:00:00"};
  2.    
  3.     int masodperc=0;
  4.     int perc=0;
  5.     int ora=0;
  6.      
  7.     //LCD modul inicializálása
  8.     sbit LCD_RS at RB2_bit;
  9.     sbit LCD_EN at RB3_bit;
  10.     sbit LCD_D4 at RB4_bit;
  11.     sbit LCD_D5 at RB5_bit;
  12.     sbit LCD_D6 at RB6_bit;
  13.     sbit LCD_D7 at RB7_bit;
  14.      
  15.     sbit LCD_RS_Direction at TRISB2_bit;
  16.     sbit LCD_EN_Direction at TRISB3_bit;
  17.     sbit LCD_D4_Direction at TRISB4_bit;
  18.     sbit LCD_D5_Direction at TRISB5_bit;
  19.     sbit LCD_D6_Direction at TRISB6_bit;
  20.     sbit LCD_D7_Direction at TRISB7_bit;
  21.      
  22. char konvert(int szam)
  23. {
  24.             if ( (szam >=0) && (szam<10) )
  25.              return (char)(szam+0x30); else return('0');
  26. }
  27.  
  28. void main()
  29.     {
  30.      cmcon=0x07;
  31.      TRISA=0xFF;
  32.      TRISB=0x00;
  33.      PORTB=0;
  34.      PORTA=0;
  35.      
  36.     Lcd_Init();
  37.     Lcd_Cmd(_Lcd_CLEAR);
  38.     Lcd_Cmd(_Lcd_CURSOR_OFF);
  39.      
  40.     while(1)
  41.     {
  42.         if(masodperc==59) {
  43.                     masodperc=0;
  44.                     if(perc==59) {
  45.                                perc=0;
  46.                                if(ora==23) ora=0;
  47.                                else ora++;
  48.                                }
  49.                     else perc++;
  50.                     }
  51.          else masodperc++;
  52.      
  53.     digit[0]=(konvert((ora-(ora%10))/10));
  54.     digit[1]=(konvert(ora%10));
  55.     digit[3]=(konvert((perc-(perc%10))/10));
  56.     digit[4]=(konvert(perc%10));
  57.     digit[6]=(konvert((masodperc-(masodperc%10))/10));
  58.     digit[7]=(konvert(masodperc%10));
  59.      
  60.      
  61.     delay_ms(1000);
  62.      
  63.     Lcd_Out(1,1,digit);
  64.     }
  65. }


Az itt leírt módszerrel felvettem az LCD vezérlés jelakját. A "13:" karaktersorozatot írja ki. Ajánlom Neked is...

ora.JPG
    
(#) Hp41C válasza Hp41C hozzászólására (») Máj 21, 2012 /
 
Csak úgy elrettentésnek:
Az 53 ... 58 sorokat (6 C nyelvű sor) 149 assembly sorra sikerült lefordítania és közben hatszor hívta meg a 16 bites számok osztását végző rutint, ami még 31 sor. Az egész programot sikerült neki 700 sorból kihozni.
A 10F322 -be írt DCF77 szinkronos, 7 szegmenses óram dátumkezeléssel, a hét napjának kezeslésével csak 422 sor.
(#) sany válasza Hp41C hozzászólására (») Máj 21, 2012 /
 
Köszönöm!
(#) HL84 hozzászólása Máj 22, 2012 /
 
Sziasztok!

Most ismerkedem még csak PIC-el.
1 kimenettel, 1 tranzisztorral tudok kapcsolni "valamit", viszont két külön dolgot kéne 1 kimenettel.
Lehetséges két tranzisztort meghajtani 1 PIC kimenettel, ha igen, hogyan?

Köszönöm a válaszokat!
(#) edison14 válasza HL84 hozzászólására (») Máj 22, 2012 /
 
Hali. Szerintem meg lehet oldani úgy, hogy az egyik egy NPN másik pedig egy PNP típusú tranzisztor legyen. Egy a gond hogy ezzel nem tudod azt megcsinálni, hogy mind a kettő ki legyen kapcsolva egyszerre.
(#) Stadi hozzászólása Máj 22, 2012 /
 
Sziasztok!

Elkezdtem ismerkedni a PIC-ekkel egy viszonylag kis hobbi-projekt kapcsán, ami arró szól, hogy egy PIC16F84A-val szeretném átkódoltatni egy 3x3-as billentyűzet mátrix gombjait a HT12E nevű távirányító IC által emészthető formájúra. A mátrix a B portra csatlakozik, az RB0...RB2 a kimenet, az RB4...RB6 pedig a bemenet.

Mivel a szoftvert szeretném minél önállóbban megírni, így most csak a vázlatát írom le. Ha valahol logikai bukfencet vélnétek felfedezni a gondolatmenetben, kérem jelezzétek.

  1. alaphelyzetbe állítás: RB megszakítás engedélyezése, GIE tiltása, kimenő RB bitek megfelelő beállítása stb.
  2. végtelen ciklus
  3. RB0...RB2 konfigurálása kimenetként**
  4. sleep üzemmód bekapcsolása, várakozás gombnyomásra
  5. visszatérés után az RB0...RB2 biteket egyesével kimenetként konfigurálom, és végignézem a PORT B bemeneti biteket (TRISB-vel RB0...RB2 közül mindig csak egyet engedélyezek kimenetként, így nem lehet a mátrix gombjaival különböző feszültségszintű kimeneteket összekapcsolni**)
  6. ha volt lenyomott gomb,
  7. akkor a megfelelő kód és az "adás engedélyezés" kiadása a PORT A-ra, majd várakozás a prell-hatás miatt TMR0-val, "polled" üzemmódban*
  8. ellenkező esetben az "adás engedélyezés" jel kikapcsolása
  9. végtelen ciklus vége


*: kicsit egyszerűsítettem a valódi programhoz képest, mert ott tárolom, hogy az aktuális gomb megegyezik-e az előzőleg találttal, és ha igen, akkor nincs várakozás és a PORT A-t sem piszkálom, mert felesleges

Kérdéseim:

- A ** sorokhoz kapcsolódóan: A billentyűzet mátrix bekötésekor kell-e felhúzó (PORT B beépített), lehúzó, áramkorlátozó ellenállásokat ill. védődiódákat használni (bármelyiket a felsoroltak közül)?
- A prell jelenség kiküszöböléséhez mennyi ideig érdemes várni, mielőtt elkezdem figyelni a gomb felengedését?
- Az RA4 (open drain) lábat kimenetként szeretném felhasználni, és rákötni a HT12E engedélyező bemenetére (CMOS, beépített felhúzó ellenállással, aktív alacsony). Ehhez elég csak simán összekötnöm a lábakat?
- A SLEEP utasításnak tényleg nincs beépített függvénye C-ben (HI-TECH C), vagy csak nem keresgéltem elég soká a neten?
- A TMR0 működését nem sikerült teljesen megértenem. Mikor indul el a számlálás a hozzá tartozó regiszterben (a PIC órajeléről hajtva)? A PIC bekapcsolásakor, ill. mikortól az órajel van a bemenetéhez rendelve? Másképp fogalmazva: le lehet-e állítani a számlálót (anélkül, hogy a bemenetét újra a PIC lábához rendelném)?
(#) vilmosd válasza Stadi hozzászólására (») Máj 22, 2012 /
 
Az elkepzeles jo, de eloszor is engedelyezni kellene a felhuzo ellenallasokat a bemeneteken. Masik dolog hogy inkabb csinalj egy periodikus IT-t TMR0 segitsegevel, es 10-20 mS suruseggel olvasd a Kbd-t. A TMR0 kezeleset leirasat megtalalod a 30430C.pdf adatlapban, a 27. oldalon. Vilagosan leirja az orajel forrasat, es ennek a beallitasat. A Sleep utasitast lehet esetleg asm utasitassal beszurni, de nem tudom ebben a forditoban ezt hogyan tudod beszurni.
Ja egy kis sugas kbd kezelesre a mellekletben. CCS C-ben.

flex_kbd.h
    
(#) Stadi válasza vilmosd hozzászólására (») Máj 22, 2012 /
 
Idézet:
„engedelyezni kellene a felhuzo ellenallasokat”


Világos, minden konfig bitet nem írtam be a fenti pszeudo-kódba.

Idézet:
„Masik dolog hogy inkabb csinalj egy periodikus IT-t TMR0 segitsegevel, es 10-20 mS suruseggel olvasd a Kbd-t.”


Ezzel az a baj, hogy ez az MCU nem ébred fel a TMR0 megszakításra, mivel nincs benne belső oszci. Amúgy nem írtam, mert az eddigi kérdéseimnél nem volt jelentősége, de 2xAA elemes táplálást szeretnék megoldani, tehát mindenképp szükség van a fogyasztás minimalizálására. Egyébként egy infra táv hatótávolságát szeretném megnövelni (természetesen egy vevőt is építek majd), tehát napjában átlag pár gomb lesz lenyomva. Ehhez sok lenne a 10-20ms gyakoriságú feléledés. A tápegységhez a TI oldala az LM2623-at dobta ki, mint ajánlott step-up konverter. Valakinek van tapasztalata ezzel, vagy esetleg más IC-t javasolnátok a 3V->5V konverzióra?

Idézet:
„A TMR0 kezeleset leirasat megtalalod a 30430C.pdf adatlapban, a 27. oldalon. Vilagosan leirja az orajel forrasat, es ennek a beallitasat.”


Az adatlapot olvastam, meg a Kónya-féle PIC könyvet, de ezekben csak a sorok között olvasva véltem felfedezni a választ a kérdésemre, mert hogy direktben nincs leírva se pro, se kontra.

Idézet:
„A Sleep utasitast lehet esetleg asm utasitassal beszurni, de nem tudom ebben a forditoban ezt hogyan tudod beszurni.”


Az ASM-es megoldást már megtaláltam a neten, köszi.

Idézet:
„Ja egy kis sugas kbd kezelesre a mellekletben. CCS C-ben.”


Ha jól olvasom, ez abból indul ki, hogy periodikusan ránézel a billentyűzetre, és ez alapján pár "ránézést" kihagy, ha kell. Nálam eseményvezérelt beolvasás lesz, nem periodikus.
(#) vilmosd válasza Stadi hozzászólására (») Máj 22, 2012 /
 
Persze lehet igy is csinalni, de ha Te kis aramfelvetelt akarsz, akkor talan valami 8 labast kellene alkalmazni. Pl 12F683. 2 volt felett uzemkepes. Csinaltam ilyennel cuccot ami 2 ceruzaelemrol eldolgozott 2-3 honapot. Ebben van belso oszci amit akar 31 kHz-re is be lehet allitani. Ja es igy nem kell semmi kulso tap varazslassal sem foglalkozni.
(#) Zsora válasza Stadi hozzászólására (») Máj 22, 2012 /
 
Bár a kérdésedet ide a "PIC kezdőknek" témába tetted, azért a gondolatmenetedből látszik hogy nem vagy kezdő.
TMR0: A PIC indulásakor nem indul automatikusan, de egy engedélyezőbit segítségével bármikor indítható/megállítható. Nem kell a kimenetét lábhoz rendelni, mert az ált. fix.
(#) icserny válasza vilmosd hozzászólására (») Máj 22, 2012 /
 
Idézet:
„akkor talan valami 8 labast kellene alkalmazni.”
Kevés lesz neki, mert a 6 bemeneten kívül biztosan kell valami kimenet is...
(#) vilmosd válasza icserny hozzászólására (») Máj 22, 2012 /
 
DE van testvere 14 labas 16F684.
(#) HL84 válasza edison14 hozzászólására (») Máj 22, 2012 /
 
Hát én valami olyasmire gondoltam, hogy két NPN lenne a kimeneten, pl 1-1 diódával, kérdés, hogy ezt "lehet-e" így?
Tehát valami ilyesmi, mint a képen. Ez hülyeség?

1ki2be.jpg
    
(#) potyo válasza HL84 hozzászólására (») Máj 22, 2012 /
 
Ezt így nem lehet, mert mindkét tranzisztor egyszerre kap vezérlőjelet, akkor meg már nem kezdenek külön életet élni, hanem egyszerre vezetni is kezd mindkettő. De miért akarsz a lábszámmal spórolni? Majd később esetleg érdekes lehet, de kezdőként ne foglalkozz szerintem ilyesmivel.
(#) HL84 válasza potyo hozzászólására (») Máj 22, 2012 /
 
Az is lenne a cél, hogy egyszerre kezdjenek vezetni, két külön valamit vezérelni (kicsit pontosabban az egyik gnd-re húzna le valamit, a másik egy +5V vagy +12V ágat "szakítana meg" egy további pnp fet segítségével.
Sőt, mindezt a két vezérlést egy másik eszköznek is indítania kell, hogy kicsit még nehezedjen a helyzet

Eredetileg pedig egy két morzés relé kiváltása lenne a cél, hasonló felállással (PIC és egy másik "száraz" kontaktus is kapcsolná)
Következő: »»   258 / 1216
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