Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   824 / 1319
(#) potyo válasza moderboy hozzászólására (») Okt 28, 2010 /
 
Ha minden igaz, akkor neked 16F887-es chiped van, annak pedig az RB0 lábán van analóg bemenet is, amit nem tiltottál le. ANSELH regisztert nézd meg.
(#) moderboy válasza potyo hozzászólására (») Okt 28, 2010 /
 
Ezer köszönet, ha jól rémlik a könyvben is le volt írva... sosem jöttem volna rá, legalábbis nem ma az is biztos!
El is kezdem bütykölni a kapuprogit.

Még egyszer köszönet!
(#) moderboy hozzászólása Okt 28, 2010 /
 
Ha mechanikus kapcsolóval megszakítást váltok ki, akkor azt áramkörileg pergésmentesítsem?
(#) potyo válasza moderboy hozzászólására (») Okt 28, 2010 /
 
Nem muszáj áramkörileg, mert ha már kontroller, akkor megcsinálhatja szoftveresen is.

Egyébként én nem erőltetném a kapcsolót a megszakítást okozó lábra. A kapcsoló kellően lassú periféria ahhoz, hogy a főprogram a "holtidejében" néha ránézzen, pergésmentesítse és lereagálja. Egy esetben fontos megszakítást kiváltó lábra tenni: ha ezzel a kontrollert is akarjuk ébreszteni SLEEP-ből. Viszont ekkor sem muszáj megszakításból kezelni, kontroller felébred, fut mondjuk egy másodpercig és közben pergésmentesíti a bejövő jelet (ennyi biztosan elég rá, hogy leálljon a pergés), aztán megcsinálja amit kell, és ismét SLEEP.
(#) trudnai válasza potyo hozzászólására (») Okt 29, 2010 /
 
Idézet:
„fut mondjuk egy másodpercig és közben pergésmentesíti a bejövő jelet (ennyi biztosan elég rá, hogy leálljon a pergés),”


Az nagyon sok! Ha nehany tiz ms alatt nem pereg le akkor a kapcsolot ki kell hajitani. Amugy a kontroller fel is ebredhet bizonyos idokozonkent hogy a kapcsolora ranezzen, pl a WDT is tud ebresztgetni es 65ms-enkent megnezni mi a helyzet, ami ugye nehany utasitasbol megoldhato, es ha nincs semmi akkor alvas... Ha megnyomtak a gombot akkor status beallit, meg egyszer varunk 65ms-et aludva, aztan megint megnezzuk, ha meg mindig nyomva van akkor tenyleg megnyomtak a gombot es a perges is lefutott minden bizonnyal.
(#) moderboy válasza potyo hozzászólására (») Okt 29, 2010 /
 
Egyenlőre csak a gányolás megy, de jegyzem a pontos ismereteket.
Most nincs szükség az energia takarékosságra és a szép kódra sem, határidőre van optimalizálva a feladat, mert kellemetlen már ilyen hidegben ráncigálni a kaput

Abban tudna valaki segíteni, hogy milyen tranzisztorral tudok max. 30V-ot kapcsolni? Esetleg egy vázlatot is igényelnék, hogy hogyan tegyem a PICre.
(#) potyo válasza moderboy hozzászólására (») Okt 29, 2010 /
 
Mekkora áramot akarsz a tranzisztorral kapcsolni?
(#) moderboy válasza potyo hozzászólására (») Okt 29, 2010 /
 
Mennyit fogyaszthat egy nagyobb relé, maximum 200mA?
(#) potyo válasza moderboy hozzászólására (») Okt 29, 2010 /
 
Akkor pl. BC 337 megfelelő neked, az 800mA-ig jó. Icserny linkelt neked egy oldalt nemrég, az ott levő kapcsolási rajz jó lesz, csak a PIC felé 1k ellenállást tegyél a 10k helyére, illetve az 5V1 zener helyett tegyél valami 35V körüli zenert. Bár én zener helyett sima diódát tennék, pl. 1N4148-at.
(#) moderboy válasza potyo hozzászólására (») Okt 29, 2010 /
 
A dióda mire kell? Nem fog beleszólni, ha 24V AC-t kapcsolgatok?

A teljes kép úgy néz ki, hogy a PIC-kel figyelem a végállásokat (2) + egy fotocella bemenet + a rádióvevő jele, amire indul a dolog. A jelszintek kívülről 24V váltó, mindenhonnan, mert az van gyárilag.

A bemenetekhez a feszosztót mekkora nagyságrendbe számoljam? Egyik ismerős MOhmban ajánlotta....
(#) potyo válasza moderboy hozzászólására (») Okt 29, 2010 /
 
Tisztázzunk valamit: 24V váltakozót kapcsolnál a tranzisztorral? Mert az nem fog menni, akkor triak kell. Ha viszont a relé kapcsolná a váltakozófeszültséget, akkor semmi probléma. A dióda a kikapcsolásnál a tekercsben maradó energiát vezeti el, hogy ne legyen túlfeszültség és ne nyírja ki a tranzisztort.

Az osztó alsó tagját én inkább kiloohm nagyságrendbe tenném. Mondjuk 2k2 az alsó oldalra, a felső oldalra meg a 24V-hoz 8k4 kellene, ezt csinálhatsz úgy, hogy 8k2 és 220 ohm sorban, vagy esetleg tehetsz 9k1-et.
(#) trudnai válasza moderboy hozzászólására (») Okt 29, 2010 /
 
Dioda arra kell, hogy a rele tekercseben indukalodo ellen aramot levezesse.

Az pedig, hogy a rele mit kapcsol tulajdonkepp mindegy, a lenyeg, hogy a behuzo tekercset mivel hajtod meg. Ez pedig le kell legyen irva a rele doksijaban, hany volt mekkora aram.
(#) moderboy válasza trudnai hozzászólására (») Okt 29, 2010 /
 
Köszönöm a válaszokat! Akkor valószínűleg inkább letudom a problémát 5V-os relékkel. Ehez is érdemes tranzisztort beraknom vagy a PIC lába elbír ~100mAmpert?
(#) Fittnessz válasza moderboy hozzászólására (») Okt 29, 2010 /
 
Hali!

Szerintem mindenképpen tegyél be egy tranzisztort, vagy egy nMOSFET-et ami kapcsolja a relét. A PIC lába adatlapi adat szerint 25 mA az összes portról pedig egyszerre 200mA-el lehet terhelni.
(#) potyo válasza moderboy hozzászólására (») Okt 29, 2010 /
 
Mindenképpen tranzisztor vagy kis mosfet kell. 100mA-re szinte bármilyen NPN tranzisztor jó, pl. BC546/547 is.
(#) moderboy hozzászólása Okt 30, 2010 /
 
A Hi-Tech C fordítóval hogyan kell megadni egy #define-t?

Például egy ilyet nem akar megenni, pedig a PICula oldalon is hasonló módon van megadva:
  1. #define gomb_lent() RB0==0
(#) potyo válasza moderboy hozzászólására (») Okt 30, 2010 /
 
Legújabb verziós a fordító? Mert volt itt valami olyanról szó, hogy ebbe is átrakják a C18-ból ismert jelöléseket és akkor így kellene írni:

  1. #define gomb_lent() PORTBbits.RB0


Ha nemjó, akkor esetleg próbáld meg így (bár akkor a tiédnek is menni kellene):

  1. #define gomb_lent() !RB0


Ha egyik sem jó, akkor mutasd meg azt a részt is, ahol használni próbálod.
(#) moderboy válasza potyo hozzászólására (») Okt 30, 2010 /
 
  1. #include <htc.h>
  2. #include <pic16f887.h>
  3.  
  4.         __CONFIG(INTCLK & WDTDIS & PWRTDIS & MCLRDIS & UNPROTECT & DUNPROTECT & BORDIS & IESODIS & FCMDIS & LVPDIS);
  5.         __CONFIG(BORV40);
  6.  
  7. #define gomb_lent() PORTBbits.RB0==0
  8.  
  9. void config()
  10. {
  11.                 TRISD=0x00;
  12.                 TRISB=0xFF;    
  13. };
  14.  
  15. void wait()
  16. {
  17.         unsigned int var=0;
  18.         for (var=0; var<30000 ; var++)
  19.         {
  20.                 NOP(); NOP(); NOP();
  21.         }
  22.         return;
  23. };
  24.  
  25. void main()
  26. {
  27.         ANSELH=0;
  28.         config();
  29.         while (1)
  30.         {
  31.                 PORTD=0x00;
  32.                 while(gomb_lent)
  33.                 {
  34.                 PORTD=0xFF; wait();
  35.                 }
  36.         };
  37. return;
  38. }


Ha megprobálom a második WHILE feltételének bárhogyan beírni a define-elt részt akkor ezt a hibát kapom: "undefined identifier "gomb_lent" "

Ha gomb_lent()-nek írom be akkor még csúnyábbat, tehát arra jutottam hogy zárójel nem kell utána. Sokféle képpen probáltam megadni a define utáni feltételt, de mindig ezt a hibát kapom, amikor használnám, akkor is amikor úgy probáltam define-elni, ahogy írtam az elöbb.

9.70-es a C fordító, 45 napos PRO próbaverzióban használom, a Pickit2-höz adták
(#) potyo válasza moderboy hozzászólására (») Okt 30, 2010 /
 
Abban a verzióban még szerintem RB0 kell. Viszont ha zárójellel definiálsz valamit, akkor azt ugyanúgy kell utána is használni. Tehát írd vissza RB0-ra, meg tedd be a while-hoz a zárójeleket, és akkor amit ad hibát, azt írd be ide.
(#) moderboy válasza potyo hozzászólására (») Okt 30, 2010 /
 
érdekes, most meg működik....

Köszönöm a segítséget!


Egy láb nevét hogy tudom átadni egy változóban? milyen tipust válasszak neki? (szeretnék csinálni pergésmentesítő függvényt, hogy ne kelljen annyiszor leírni)
(#) trudnai válasza moderboy hozzászólására (») Okt 31, 2010 /
 
  1. #define pergesmentesito(rb) { \
  2.     if ( 0 == (rb) ) { \
  3.         ... \
  4.         ... \
  5.         ... \
  6.     } \
  7. }


Az a lenyeg, hogy a makroban a sor vegen egy forditott per jel kell legyen (annak kell lennie a legutolso karakternek, sem space sem semmilyen mas kakakter nem lehet utana - akkor tudja a preprocesszor, hogy a makro folytatodik. Lattam mar olyan elvetemult C forditot ahol ez nem mukodik - akkor mas valasztas nincs mint egy sorba irni az egeszet...

Masik lenyeges dolog makroknal, hogy a parametereket mikor hasznalod mindig ki kell zarojelezni (tehat az if-ben a dupla zarojel nem veletlen!). Ez azert van, mert a parameterben barmi is lehet. Ne felejtsuk el, hogy a makro egy behelyettesito dolog, tehat ha egy kifejezes van ott akkor az egesz kifejezest behelyettesiti neked a parameter helyen.

Hasznalat:
  1. pergesmentesito( PORTBbits.RB0 );
(#) (Felhasználó 56240) hozzászólása Okt 31, 2010 /
 
Sziasztok
Ezzel a problémával még nem találkoztam
Teljesen új 12F629 szeretem, volna felprogramozni de, nem megy
De még törölni sem
A Vicsys mester munkáját szeretem, volna meg építeni

Bővebben: Link
(#) icserny válasza (Felhasználó 56240) hozzászólására (») Okt 31, 2010 /
 
Az Invalid OSCCAL betegségből ki lehet gyógyítani a Tools menü OSCCAL pontjában.
(#) (Felhasználó 56240) válasza icserny hozzászólására (») Okt 31, 2010 /
 
Szia
Meg próbáltam auto regenerate de nincs váltózás

Vagy manuálban kelen, de mint kel neki bealítanom?

12f629 4.jpg
    
(#) icserny válasza (Felhasználó 56240) hozzászólására (») Okt 31, 2010 /
 
Most találtam meg egy régi beírásomat: regeneráláskor az AUX vonalat (a PICkit2 készülék 6. kivezetése) össze kell kötni a PIC RA4/T1G lábával.

Egyébként egy RETLW valami kell neki, ahol valami egy közepes érték (ennek változtatásával hangolható az oszcillátor).
(#) (Felhasználó 56240) válasza icserny hozzászólására (») Okt 31, 2010 /
 
Szia
Akkor neki is álok remélem, segít
(#) (Felhasználó 56240) válasza icserny hozzászólására (») Okt 31, 2010 /
 
Sajnos ez nem segítet
Be tetem egy másik új 12F629 de ugyan az ara gondoltam hogy az előzőt is kinyírtam
Más orvosság nincs ere a problémára
(#) (Felhasználó 56240) válasza (Felhasználó 15355) hozzászólására (») Okt 31, 2010 /
 
Nem a kész áramkörben, hanem egy programozó foglalatot használok
Máskor is használtam igaz a DIL40, DIL28,DIL18 használtam
De a DIL8 nem
(#) Amarton válasza (Felhasználó 56240) hozzászólására (») Okt 31, 2010 /
 
Nekem akkor csinált ilyet, ha nem volt üres a PIC és Code protect hex-et akartam rátölteni.
Próbáld meg letörölni és utána programozni.
(#) (Felhasználó 56240) válasza Amarton hozzászólására (») Okt 31, 2010 /
 
Szia
Próbáltam törölni ki is írta, hogy kész a törlés, de ha visszaellenőrzöm, hogy üres a pic akkor viszont hibát jelez
Következő: »»   824 / 1319
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