Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1119 / 1320
(#) Gibi89 hozzászólása Ápr 7, 2013 /
 
nagy áramokkal nem kellene dolgoznom, találtam viszont egy jó leírást- tulajdonképpen ezeket a jelalakokat szeretném elérni, amit csatoltam fájl abban a 17.oldaltól kezdve
(#) Gibi89 hozzászólása Ápr 7, 2013 /
 
igen Balázs, terápiás célokra szeretném használni
(#) bbalazs_ válasza Gibi89 hozzászólására (») Ápr 7, 2013 /
 
Az embernel ilyen aramokhoz kb 100V-ot kell hasznalnod.
En nem fognek bele a helyedbe.
Nem a PIC lesz a legnehezebb resze...
A hozzászólás módosítva: Ápr 7, 2013
(#) Gibi89 válasza bbalazs_ hozzászólására (») Ápr 7, 2013 /
 
nem fogom én ezt kipróbálni senkin délre értés ne essék-csak egy szakdolgozathoz kapcsolódik és ezen gondolkozok- hogy milyen áramkörel lehetne "elméletileg" megvalósítani
(#) Hp41C válasza Gibi89 hozzászólására (») Ápr 7, 2013 /
 
Szia!
DDS: Csinálsz egy "fázisregisztert", a felső bitjeivel megcímzel egy memória tarományt, a memóriában tárolt jelforma görbéről az aktuális pillanatértéket kiküldöd a PIC kimetetére. Pl 8 bit R--2R létra, SIP D/A stb. A frekvenciától függő növekményt ciklikusan hozzáadod a fázisregiszterhez. 24 bites fázisregiszterrel 1/16Hz felbontás érhető el, 256 minta / periódussal. A frekvencia min. 100 minta/periódusnál 10kHz egy 40MHz -es PIC18 -cal. Ui: Ez a feladat teljesen lefoglalja a PIC -et.
(#) icserny válasza Hp41C hozzászólására (») Ápr 7, 2013 /
 
Lehetne dsPIC33FJ128GP802-ben gondolkodni, amiben beépített DAC és DMA is van.
(#) Bubu256 hozzászólása Ápr 7, 2013 /
 
Megbeszélt juttatás ellenében , keresek egy hozzáértő embert *********
A fórumban tilos hirdetni. Ott van az apró!
A hozzászólás módosítva: Ápr 8, 2013
(#) Dokikaa hozzászólása Ápr 9, 2013 /
 
Üdv.

Van pickit 2-őm illetve hozzá a Low Pin Count Demo board. A kérdésem az volna, hogy ezzel lehet debuggolni? És ha igen, akkor kell felrakni valamit hozzá? Mert ha debuggernél kiválasztom, és debuggolni szeretném, problémázik valamit..

Előre is köszi
(#) Hp41C válasza icserny hozzászólására (») Ápr 9, 2013 /
 
Max. 1KHz frekvenciáig maradnék inkább a könnyebben kezelhető tokozású 16F178x -nél. A 18F -et azért említettem, mert itt működik egy kis dobozban...
(#) watt válasza Dokikaa hozzászólására (») Ápr 10, 2013 /
 
Csak a PIC-től függ. hogy lehet-e debuggolni. Nézd meg az adatlapban mit írnak a paneleden lévő PIC-ről, illetve mit mond az MPLAB amikor kiválasztod a PIC-et!
(#) icserny válasza Dokikaa hozzászólására (») Ápr 10, 2013 /
 
Idézet:
„Van pickit 2-őm illetve hozzá a Low Pin Count Demo board.”
Ebben eredetileg PIC16F690 van, azt nem lehet debugolni.
(#) Llajti válasza icserny hozzászólására (») Ápr 10, 2013 /
 
A microchip honlapja szerint ICD2-3, pickit2-3 tudja.
(#) _vl_ válasza Llajti hozzászólására (») Ápr 10, 2013 /
 
Persze. Csak azt nem olvastad el, hogy kell hozzá még valami külső "segédeszköz", mert a 16F690-ben konkrétan nincs benne a debugoláshoz szükséges áramkör.

Device Programming and Debugging Support
* Devices marked with an asterisk require a device specific ICD header board & the RJ-11 to ICSP Adapter to enable debugging. These are not required for programming.
PIC16F631*, 677*, 685*, 687*, 689*, 690*
- Use AC162061 ICD header & AC164110 adapter.
(#) Llajti válasza _vl_ hozzászólására (») Ápr 10, 2013 /
 
Aha! Ez nagyon érdekes. Ezek szerint olyan, mint a mesebeli királylány, lehet is debugolni meg nem is
Mindig tanul valami újat az ember, köszi!
(#) Hp41C válasza Llajti hozzászólására (») Ápr 10, 2013 /
 
Jól kitalálták ezt is:
A Low Pin Count Demo kártyát lehet a PICKit2 -vel megvenni egy csomagban. Ebbe a panelbe a 8, 14, 20 lábú kontrollerek tehetők be, mivel a tápbekötés az 1. és a vele szemben levő lábra megy. Csak néhány típus passzol a bekötéshez, de ezek nyomkövetéséhez kell egy header.
Ha a mesebeli tündér véletlenül a 18 vagy a 28 lábú kontrollereknek megfelelő lábnyomot, tápbekötést valósító panelt tette volna a PICKit2 -höz, sok típust lehetne használni és nem kellene adaptert venni az induláshoz....
(#) _vl_ válasza Llajti hozzászólására (») Ápr 10, 2013 /
 
Nyugodtan veheted úgy, hogy nem lehet debuggolni.
Ahhoz ugyanis egy olyan verziót kell venned belőle, ami egy adapterpanelra van felforrasztva (több lába van és bele van építve a debugáramkör), és kb. aranyárban árulják emiatt, tehát kijön az árából vagy 10 PIC. Ehelyett sokkal jobban megéri nagyobb modelleket használni, amik csak alig kerülnek többe, és amiknek amúgy is több lábuk van és nem kell hozzájuk ilyen adapterpaneles debugverzió.
(#) Llajti válasza _vl_ hozzászólására (») Ápr 10, 2013 /
 
Nekem is az jutott eszembe, hogy inkább váltanék és gyorsan átírnám a regiszterek neveit, meg átnézném a pár kompatibilitási problémát, jobban járunk vele. Úgy tűnik, mintha itt ez nem lenne megoldható (nem tudom biztosan, csak a szövegből érzem).
Hp41c: a mesebeli tündérlány hozott még sok mást is, amit a másik topikban is kitárgyaltunk, kb. használhatatlan ingyenes fordítót, nem támogatott icd2-t stb. Egyre kevésbé egyéni felhasználóbarát a microchip...
(#) Dokikaa hozzászólása Ápr 10, 2013 /
 
Úgy látom rosz helyre írtam a kérdést, köszönöm a válaszokat. Szóval akkor mit kell csinálnom?
(#) icserny válasza Hp41C hozzászólására (») Ápr 10, 2013 /
 
Az az igazság, hogy a Low Pin Count Board már 6 évvel ezelőtt is kissé elavult volt (én akkor vetettem egyet a PIC12F fejlesztésekhez). Aki ma ilyet vesz, magára vessen...

Akkor a Debug Express csomag volt a menő (a felületszerelt 44 lábú PIC16F887-tel), de azt nem találtam praktikusnak, mert nem cserélhető benne a mikrovezérlő. A szánalmas az a dologban, hogy az "olcsó" kártyák között van 28 lábú mikrovezérlőkhöz való is (DM164120-3), de azt valamiért nem lehetett kedvezményes árú KIT-ként megvenni, ennélfogva nem is terjedt el.

A Microchip versenytársai közben potom áron terítik a debuggerrel egybeépített kezdő kártyákat (MSP430 Launchpad, Stellaris Launchpad, STM32 Discovery kártyák, LPC Xpresso kártyák, Nuvoton Nutiny SDK kártyák).
A hozzászólás módosítva: Ápr 10, 2013
(#) Dokikaa válasza icserny hozzászólására (») Ápr 10, 2013 /
 
Nem vettem ilyet, hanem a szekrénybe volt, kb 5 éves, csak a suliba most kellett elővennem, és valahol elkell induljak.

Viszont van egy f18242-es panel(homemade), a board alapján lett készítve, kialakításra, de viszont valamiért ne mtudom programozni. Van 1 ellánállás a pikkit után, elvileg azt kell valahova tenni programozáskor/használatkor nemtudom. Esetleg ebben valakinek 5let hogy az mi lehet és mire való?
Köszönöm a választ.
(#) _vl_ válasza Dokikaa hozzászólására (») Ápr 10, 2013 /
 
Szerinted így látatlanban mi honnan fogjuk tudni, hogy a homemade paneleden mit sikerült nem jól megcsinálni, meg milyen ellenállást hova kéne rakni, hogy lehessen programozni? Talán ha egy kapcsolási rajzot beraknál...
(#) Dokikaa válasza _vl_ hozzászólására (») Ápr 10, 2013 /
 
Úgy gondoltam hogy ez általános megoldás, de akkor tárgytalan.
(#) Pali79 válasza (») Ápr 15, 2013 /
 
Szia! Köszönöm, elnéztem a topicot!
(#) geizol hozzászólása Ápr 16, 2013 /
 
Sziasztok!

Érdekes projektbe kezdtem még az előző hónapban . Van itthon egy elektromos kapunk (távirányítóval nyitható motoros kapu). Én ezt szétszedtem a múltkor motor csere miatt. Láttam hogy van külön kivezetés a nyomógombos nyitásra is. De én úgy voltam miért nyomógomb ha már úgyis kivülről szeretnék bejönni. Erre azt találtam ki hogy egy gsm modemet rákötök egy PIC-re és azzal szabályozom a telefonszámokat, ha találat van akkor egy relé rövidre zárja a megfelelő kivezetéseket a kapu ekeltronikáján.

Próbálom minél rövidebben leírni a kialakítást.:
18F452 mikrovezérlőre kötöttem 2 relét (tranzisztoron keresztül vezérlem valamint a reléknek védődiódája van). A relék 5 V-ak de voltak más 12 V-ra is kicserélve.
A PIC max232N IC-n keresztül csatlakozik egy GT64 T.E.L.L gyártmányú gsm modemhez.
40MHZ-es kvarz kristályt használok.
Persze vannak még kondenzátorok a mikrovezérlő táplábai mellett, valamint a max232N megfelelő lábainál megfelelő értékűek.

Az áramkört összeraktam. Innentől jöttek a problémák, mert ami elméletben működött az gyakorlatban csak egyszer - kétszer bekapcsolás után újabb bekapcsolásig. Hogy ezt miért írom?

Itt a kód amit írtam (Nyelv: CCS C):
  1. #include <18F452.h>
  2. #include <string.h>
  3. #fuses NOWDT, HS, NOPUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD
  4. #use delay(clock=40000000)
  5. //#use rs232(baud=9600, parity=N, xmit=PIN_C6, rcv=PIN_C7, bits=8)
  6. #use rs232(baud=9600,parity=N,rcv=PIN_C7,stop=1,bits=8,ERRORS,stream=radio)
  7.  
  8. int i,aszarny,bszarny,talalat;
  9. double kesleltet;
  10. char korzet1,korzet2;
  11. char hivoszam[9];
  12.  
  13. char adatb[1][9]={{'3','0','1','1','1','1','1','1','1'}, //Magyarné Mariann
  14.                    
  15.                    };
  16. int szamok=1; // ahány darab szám van az adatbázisban
  17.  
  18. char beolvasas(void) {
  19.    return getch();
  20. }
  21.  
  22. void korzettorles(void) {
  23.    korzet1="";
  24.    korzet2="";
  25. }
  26.  
  27. void hivoszamtorles(void) {
  28.    for (i=0;i<9;i++)
  29.          hivoszam[i]="";
  30. }
  31.  
  32. void hivoszambeolvasas(void) {
  33.    for (i=0;i<9;i++)
  34.          hivoszam[i]=beolvasas();
  35. }
  36.  
  37. void main(void) {
  38. output_d(0xFF);
  39. hivoszamtorles();
  40. output_high(PIN_D0);
  41. output_low(PIN_D1);
  42. aszarny=0;bszarny=0;kesleltet=0;talalat=0;
  43. output_low(PIN_D2);
  44. output_low(PIN_D3);
  45.  
  46.    for(;;) {
  47.    if (aszarny==1)
  48.    {
  49.       output_high(PIN_D1);
  50.       output_high(PIN_D2);
  51.       delay_ms(800);
  52.       output_low(PIN_D2);
  53.       output_low(PIN_D1);
  54.       aszarny=2;
  55.    }
  56.    if(bszarny==2)
  57.    {
  58.       output_high(PIN_D1);
  59.       output_high(PIN_D3);
  60.       delay_ms(800);
  61.       output_low(PIN_D3);
  62.       output_low(PIN_D1);
  63.       bszarny=3;
  64.    }
  65.    hivoszamtorles();
  66.    korzettorles();
  67.    if (beolvasas()=='"'&&beolvasas()=='+'){
  68.       korzet1=beolvasas(); korzet2=beolvasas();
  69.       if (korzet1=='3' && korzet2=='6')
  70.       {
  71.          hivoszambeolvasas();
  72.          for (i=0;i<szamok;i++)
  73.          {
  74.          if(strcmp(hivoszam[0],adatb[i][0])==0)
  75.          { if (strcmp(hivoszam[1],adatb[i][1])==0)
  76.            { if (strcmp(hivoszam[2],adatb[i][2])==0)
  77.              { if (strcmp(hivoszam[3],adatb[i][3])==0)
  78.                { if (strcmp(hivoszam[4],adatb[i][4])==0)
  79.                  { if (strcmp(hivoszam[5],adatb[i][5])==0)
  80.                    { if (strcmp(hivoszam[6],adatb[i][6])==0)
  81.                      { if (strcmp(hivoszam[7],adatb[i][7])==0)
  82.                        { if (strcmp(hivoszam[8],adatb[i][8])==0)
  83.                            {
  84.                               aszarny++;
  85.                               bszarny++;
  86.                            }
  87.                        }
  88.                      }
  89.                    }
  90.                  }
  91.                }
  92.              }
  93.            }
  94.          }
  95.          }
  96.       }
  97.    }
  98.    }
  99. }


A fenti kód leegyszerűsítve (de ígyse működik)
A probléma a következő:

Telefonálok, a GSM modem kicsörög, (ez a soros porton jelenik meg csörgésenként 2-szer is amit a mikrovezérlő elméletileg vesz is) de nem veszi, csak az első találatig. Mikor megvan az első találat növeli az aszarny értékét eggyel a következő körben ez lefut, behúzza a relét és utána bármivel próbálkozok nem csinál semmit a másik relé. Most a rövidebb kód miatt nincs nullázás de a bszarny értékét ígyis úgyis növelnie kellene de nem növeli , DE ha a sok if után csak egy output_toggle(PIN_D1)-et írok (LED villogtatás), akkor is csak felvillan de nem folyamatosan villog. Illetve volt már olyan hogy csak a led villogtatás volt és működött rendesen.

Úgy gondolom hogy a folyamatosság hiánya a soros porti kommunikáció hiányában rejlik, ebben kérek segítséget mert valamit tuti hogy elírtam. De néztem mindenhol interneten hogy ki hogyan állítja be a PIC-ét soros porti kommunikációra.

Ha ismert a szám akkor behúzza a relét, ha nem ismert akkor nem csinál semmit eddig OK. Ja igen A és B kapu is van szóval ezért kellene külön a D3 és D2 kimenet (2 külön relének).

Hát nem tudom így elsőre mennyire voltam érthető. Próbáltam minden fontosat leírni... Ha valamit kihagytam írjatok kérlek titeket. Köszönöm szépen!
(#) _vl_ válasza geizol hozzászólására (») Ápr 16, 2013 /
 
A logikád, amit megvalósítottál, na azzal lesz a gond. Mondhatni rossz irányból közelítetted meg a problémát. Pl. nem látom az elválasztó/sor vége karakter ellenőrzését (CR? LF?), anélkül nem csoda, hogy elveszti a fonalat az első hívás után. De ha más számról jön a hívás, szintén kieshet a szinkronból a program.
Úgy kéne csinálni, hogy legyen egy X karakteres puffer, ide olvasni végtelen ciklusban a karaktereket, amíg meg nem jön a sor vége (nem pedig fixen N db karaktert olvasni onnan, vakon). Amikor megjött, akkor feldolgozni/összehasonlítani a kapott sort.
Persze vannak apróságok, amire ügyelni kell, vagy amivel az ütésállóságot érdemes fokozni:
- kezelni kell az esetet, ha hosszabb sor jön, mint amekkora a puffer - valószínűleg ebben az esetben el kell dobni az egészet, és minden érkező további karaktert is a sor végéig,
- ha valami érkezett, de a sor vége jel nem jön meg X ideig (mondjuk 10s), ill. nem is jönnek új karakterek, akkor nyilván valami történt, de a puffer tartalmát nyugodtan el lehet dobni, hiszen az újonnan érkező karakterek biztosan nem az előző számhoz tartoznak.
A hozzászólás módosítva: Ápr 16, 2013
(#) geizol válasza _vl_ hozzászólására (») Ápr 16, 2013 /
 
Értem már... úgy gondolkoztam (nem tudom honnan vettem az ötletet), hogy majd a soros porton tartja az adatokat, mármint pufferben és mindig folyamatosan kiveszi a következőt. De akkor nem...
Tényleg van egy fix méretű adathatlmaz ami egy szám-hoz tartozik (ha ismert a szám) ha nem ismert akkor nyilván nem csak két idézőjel lesz. De akkor is felmerül még egy-két kérdésem:

9600 baud rate-nál milyen időközönként jönnek az adathalmaz elemei?
Timer0 beiktatásával felbomlik-e a folyamatos vizsgálat?
Ugyanis itt nulláznám az adatokat (aszarny,bszarny) időközönként. Ha folyamatosan nulláznám a kör végén akkor az a kapu reléje mindig behúzna és a kapu nem csak egy impulzusra dolgozik, de a második impulzusra (ha éppen nyit) akkor meg is állítja. Tudom hogy amúgy egyszerűbb és csörögjek csak egyszer, de van amikor csak az A kapura van szükség és van amikor mindkettőre.
Köszönöm a segítséget!
(#) _vl_ válasza geizol hozzászólására (») Ápr 16, 2013 /
 
Idézet:
„Tényleg van egy fix méretű adathatlmaz ami egy szám-hoz tartozik (ha ismert a szám) ha nem ismert akkor nyilván nem csak két idézőjel lesz.”

Nem ütésálló a programod. Ha nem pont akkora szám jön ott, akkor fejreáll, holott kezelhetné azt az esetet is.
Idézet:
„9600 baud rate-nál milyen időközönként jönnek az adathalmaz elemei?”

1s / 9600 * 10 időnként jöhet egy-egy byte.
Ezt az "aszarny, bszarny" logikádat abszolút nem értem (attól még akár lehet jó is). Azt se, hogy hogyan szeretne működni.
De tulajdonképpen az egész feladat létjogosultságával is vannak gondjaim: én tuti nem telefonhívásos megoldást használnék, hanem valamilyen rádiófrekvenciás távirányítót.
A hozzászólás módosítva: Ápr 16, 2013
(#) geizol válasza _vl_ hozzászólására (») Ápr 16, 2013 /
 
Ez a telefonhívásos dolog ez csak onnan jött, hogy volt itthon egy tucat gsm modemem, és gondoltam csinálok valami ilyesmit (tehát volt alaktrészem hozzá) különösebben nagyobb tervezést az áramkör nem igényel szerintem, és hobbiból ez nekem elegendő is volt.
Az aszarny és bszarny kérdésre:
A gsm modem (úgy van beállítva) hogy csak akkor ad ki soros porton adatokat ha van aki hívta. Amikor híváskor létrejön a kapcsolat akkor csörgésenként kidobja hogy:

blablabla"+36xxxxxxxxx"blablabla

blablabla"+36xxxxxxxxx"blablabla

blablabla"+36xxxxxxxxx"blablabla

...

és ezt addig ameddig le nem teszem a telefont.

Na itt jött be a gondolat hogy nem muszáj nekem egyszerre a kettő kaput nyitni mivel ha csak kis ideig csörgetem akkor kevesebb ilyen sor jelenik meg a soros porton.
Azt számolom meg, hogy hányszor jött ugyanattól a számtól a hívás.
Az aszarny és bszarny kezdetben 0 és amikor megérkezik az első sor, akkor növelem eggyel. amikor a második akkor megint...
Az A kapu az aszarny a B kapu a bszarny. Az A kapu reléjét már az első csörgésnél meghúzná a B kapu reléjét pedig az x-edik csörgésnél.
A timer pedig arra kellene hogy az első csörgéstől számított x idő után lenullázza, és kezdődhet előlről. Az x idő nyilván az az idő ami alatt a kapu újra becsukódik.
(#) Attilawap hozzászólása Ápr 21, 2013 /
 
Sziasztok! Légyszi segítsetek, mert nagyon fontos! Szeretnék egy olcsó, kevés alkatrészből megépíthető, RS232 portot használó PIC égetőt csinálni a PIC16F676 csiphez. A lényeg az, hogy próba panelen lehessen megcsinálni. A VSS, VDD, VPP, PGD, PGC lábakat tudom, hogy hol vannak. Valaki írta, hogy kell valami Debug áramkör. Ez mit jelent? Én erre a kapcsolásra gondoltam:
(#) pjg válasza Attilawap hozzászólására (») Ápr 21, 2013 /
 
Sorosat ne! Akkor inkább párhuzamosat. Én ezt építettem meg:
Bővebben: Link
Következő: »»   1119 / 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