Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   698 / 1320
(#) Hp41C válasza icserny hozzászólására (») Márc 10, 2010 /
 
Szia!

Idézet:
„A kérdésem tehát az lenne, hogy a mellékelt képen az első 3 legördülő menüvel hogy lehet beállítani, hogy pl. egy 4 MHz-es kvarcról járó PIC 48MHz frekin járjon?”


Én végigolvastam...

Szia
(#) icserny válasza Hp41C hozzászólására (») Márc 10, 2010 /
 
Idézet:
„Én végigolvastam...”
Igazad van, figyelmetlen voltam!
(#) karesz25 válasza lidi hozzászólására (») Márc 10, 2010 /
 
Szimulátorban nekem is szépen megy, de amikor a tesztáramkörben fut akkor egy darabig "futnak" a ledek majd újraindul.Ezt onnan gondolom, hogy a program elején még a végtelen ciklus előtt az összes ledet bekapcsolom...Ezért gondoltam, hogy a watchdog újraindítja, de lehet, hogy rossz úton járok.
Köszi.
(#) szilva válasza karesz25 hozzászólására (») Márc 10, 2010 / 1
 
Induláskor ki kellene olvasni azokat a státuszbitekek (PCON-ból talán), amik alapján meg lehet állapítani, hogy mi okozta a resetet, és ezeket kitenni pl. egy másik portra. Ebből talán meg lehet állapítani, hogy merre vizsgálódj tovább.
(#) potyo válasza karesz25 hozzászólására (») Márc 11, 2010 /
 
Én úgy emlékszem, hogy ha a watchdog jár le, azt az MPLAB SIM jelzi.
(#) watt válasza potyo hozzászólására (») Márc 11, 2010 /
 
Igen, de ha a nincs a hex-ben a config, akkor lehet, hogy szimulátorban jól fut az MPLAB beállításaival, viszont a PIC-ben nem. Legalább is ha jól emlékszem lehet ilyen helyzetet okozni, akár az égetőprogrammal is, ha nem viszi ki automatikusan a configot. A WPB_F18 is tud részenként programozni pl.

Én azt javaslom karesz25-nek, hogy mindenképpen a programban legyen beállítva a config és meg kell győződni, hogy a PIC-be kikerül-e az égetés után!
(#) watt válasza karesz25 hozzászólására (») Márc 11, 2010 /
 
A korábban csatolt projectben a ConfigWord értékét, igaz kikommentezve, de 0x3FF9 re írtad. Ez azt jelenti, hogy az LVP bit engedélyezve van! Tiltsd le és ne az MPLAB-ban állítsd be a biteket, hanem a main.c -ben!
Az égető programban ellenőrizd, hogy milyen értéket akar kivinni(írd meg milyet!)!
A BODEN-t is letiltanám, és a PWRTE-t engedélyezném.
(#) potyo válasza watt hozzászólására (») Márc 11, 2010 /
 
Ebben lehet valami. Látszik, hogy én mindig a kódban állítottam be a konfigurációs biteket...
(#) szilva hozzászólása Márc 11, 2010 /
 
Beírom ide is (hátha nem ütnek fejbe a modik), hogy kértem ajánlatot egy PIC programozó adapter NYÁK gyártására, lehet jelentkezni. Részletek itt: Bővebben: Link
(#) vaszil29 válasza szilva hozzászólására (») Márc 11, 2010 /
 
Szia!
én szivesen gyártok nyákot !!!
PicKit2 Klón -hoz van mindenem mennyikell??
és milyen árba kéne?
üdv szabolcs
( szerintem 50/100 darabot egy nap alatt simán megcsinálok marással eggyütt, de fúráshoz nincs gépem.
Akár bonyolultabb nyákot is megcsinálok 2 oldalast is
350x400-as méretig, de ha kell tudok nagyobb méretet is)
(#) szilva válasza vaszil29 hozzászólására (») Márc 11, 2010 /
 
A linkelt panel kétoldalas, furatgalvános, nem hiszem, hogy ezt érdemes lenne otthon legyártani. A PK2 paneljét én is kinyomtatom itthon, ha kell, de egy gyártatott panel ezerszer különb, főleg, ha kétoldalas, és nem kell az átkötésekkel sem foglalkozni.
(#) peti13 hozzászólása Márc 11, 2010 /
 
Hali! Nem tudná valaki elmondani, hogy hogy lehet olyan programot írni, ami a következőt csinálja:

Fut egy alap program, ha megszakítás érkezik, akkor elnavigál egy másik labelre. Utána azt csinálja folytonosan, és utána ha megint érkezik a megszakítás akkor a harmadik labelre lépjen és így tovább... Én addig eljutottam, hogy Labelek megvannak, megszakításhoz is bemegy a pic de nem tudom, hogy azt hogy kell, hogy onnan mindig a következő labelre lépjen vissza... Ha valaki tud megoldást akkor leírná? Köszi, üdv!
(#) vicsys válasza peti13 hozzászólására (») Márc 11, 2010 /
 
A megszakításodban növelj egy változót, pl 1-gyel. Ide tegyél egy feltételes elágazást pl.:
Ha c=1 akkor goto label1
és a többi.
Ha kilépsz a labelből és visszatérsz a főprogramba, akkor pedig nullázod a c változót. Gondolom így meg lehetne oldani.
(#) peti13 válasza vicsys hozzászólására (») Márc 11, 2010 /
 
Ahamm, én is valami ilyesmivel gondoltam, csak nem ment... Ha az INCF paranccsal növelem azt a változót, de nem írok be mögé helyet hova mentse akkor automatikusan a W-be menti?
(#) potyo válasza peti13 hozzászólására (») Márc 11, 2010 /
 
Ezt pl. ki lehet deríteni a disassembly listingből, hogy mit írt a fordító oda, mert a hardverben ott mindenféleképpel lesz valami, a kérdés, csak az, hogy fordító mit tesz oda. De az egyik "message" a fordítási logban pontosan ezt mondja, hogy mit vesz alapértelmezettnek azokon a helyeken, ahol valami hiányzik. Szóval nézd meg a logot, benne van.
(#) benjami válasza szilva hozzászólására (») Márc 11, 2010 /
 
Bár nekem nincs szükségem ilyen programozó adapterre, de a nyákgyártási ötlet az jó. Az icserny oldalán levő DSP80-as fejlesztő panel jobban érdekelne, főleg hogy azt már macerásabb lenne sima egyoldalas panelon esetleg próbapanelon megcsinálni mint ezt az adaptert.
(#) peti13 válasza potyo hozzászólására (») Márc 11, 2010 /
 
Értem. Közben rájöttem, hogy egyszerűbb ha elforgatjuk azt a változót, és akkor lehet ilyen szűrést csinálni... Ha minden igaz...
  1. ORG     4
  2.                                                
  3.         MOVWF   W_SAVE         
  4.         MOVFW   STATUS                 
  5.         MOVWF   STATUS_SAVE    
  6.  
  7.         BCF     INTCON,INTF              
  8. MEGSZAK  
  9.           RLF       T4
  10.           BTFSC     T4,0
  11.         GOTO      LABEL1
  12.         BTFSC     T4,1
  13.         GOTO      LABEL2
  14.         BTFSC     T4,0
  15.         GOTO      LABEL3
  16.        
  17.         MOVFW   STATUS_SAVE
  18.         MOVWF   STATUS
  19.         MOVFW   W_SAVE
  20.           RETFIE

Ez így rendben van? A T4 a változóm, és alabpól b'10000000' értéket adtam neki, ha balra forgatjuk akkor elméletben b'00000001' lesz, és akkor megnézi, hogy a 0. biten mi van, és ha egyes, akkor elmegy a lebelhez. Következőnek még egyet fordít tehát b'00000010' lesz és akkor a 0. biten 0 van tehát kihagyja az ugrást és megnézi az 1. bitet, ott 1 van tehát elugrik a második labelre, stb., stb. Javítsatok ki ha nem jó. Üdv!
(#) vaszil29 válasza szilva hozzászólására (») Márc 11, 2010 /
 
Szia!
most egy ilyen nyákkal kisérletezek, mint amit ítrtál.
szerintem megoldom.
de majd mondom, mi lett a végeredmény
(#) vaszil29 hozzászólása Márc 11, 2010 /
 
Ezt a nyákot kelett volna átkonvertálni, nyomtatható változtra A és B oldalra, de sajna senki nem jelentkezett a műveletre, így hát át kell rajzolnom az egészet.
Ja és én nem nyomtatom az áramköröket, hanem úgy gyártom, mint ahogy a kis példányszámú nyákokat szokták "szitázom" :-filmnyomás-:
(nyomda technika)
üdv szabolcs
(#) icserny válasza benjami hozzászólására (») Márc 11, 2010 /
 
Idézet:
„Az icserny oldalán levő DSP80-as fejlesztő panel jobban érdekelne”
Ebben a topikban azt is ajánlgatta már egyik fórumtársunk! Csak nem jutott eszembe, hogy te kerested...
(#) t-dani válasza peti13 hozzászólására (») Márc 11, 2010 /
 
És a LABEL-ek hol lesznek elhelyezve a végleges programban? Csak mert, ha a megszakítási rutinon kívül, akkor csúnya véget érhet a program az esetleges helytelen stack-kezelés miatt.
(#) szilva válasza vaszil29 hozzászólására (») Márc 11, 2010 /
 
Átkonvertálni talán annyit lehet belőle, hogy bitmap képet csinálsz a gerber fileokból. A másik topicban belinkeltem azt az ingyenes gerber nézegetőt, amivel meg tudtam nézni, hogy mi van a Foxdeltától letölthető csomagban. Az tud exportálni képfileba. Én maximum ennyi konvertálást tudok erre, de abból még nehezen lesz kész panel. Még ott a fúrófile, amihez külön szöveges infóban van benne, hogy melyik fúró milyen vastag, és akkor még a furatgalvánról nem is beszéltünk. Ha van kedved, nézd meg a gerber fileokat a viewerrel, hátha segít a házi nyomtatásban.
(#) benjami válasza icserny hozzászólására (») Márc 11, 2010 /
 
Köszi, írtam neki pü-t, remélem van még belőle
Ez a topic nekem valahogy kimaradt. :hide:
(#) icserny hozzászólása Márc 11, 2010 /
 
Lassan, de bizonytalanul készülget a háttérben a PICCOLO projekt, de Húsvét előtt biztosan nem lesz időm leírni az új fejlesztéseket. Mostanában az USB CDC (virtuális soros port) projektbe történő integrálásával foglalkoztam. Ízelítőül itt egy "Hello world!" programocska, amiből látszik, hogy a PICCOLO projekt támogatásával kezdőként is könnyen összehozható egy olyan program, ami USB-n kommunikál és valamit kiír a PC képernyőjére. Jelen esetben a printf utasítást próbáltam ki.

  1. #include "piccolo_all.h"
  2. char c;
  3. void main(void) {
  4.    InitializeSystem();
  5.    stdout=_H_USER;
  6.    while(1) {  
  7.         c=usb_cdc_getc();  
  8.         printf("Hello world! %c = %d\r\n",c,c);
  9.    }
  10. }


A mellékelt képen látható, hogy a vett karakterek betűjét és kódját írja vissza a program.

A fenti volt a pollingos eset (a lekérdezés az usb_CDC-getc() függvényben van elrejtve). Az interruptos eset sem sokkal bonyolultabb, csak definiálni kell az interrupt kiszolgáló eljárásokat:
  1. #pragma interrupt hi_isr
  2. void hi_isr()
  3. {
  4.   USBDeviceTasks(); //--- USB service  
  5. }
  6. #pragma interruptlow lo_isr
  7. void lo_isr()
  8. {            
  9. }

hello.png
    
(#) peti13 válasza t-dani hozzászólására (») Márc 11, 2010 /
 
Kár, hogy nem olvastam ezt előbb.... Mostanáig ezzel bénáztam... xD De még mindig nem az igazi... De rájöttem magamtól x) Nha jóéjt mindenkinek
(#) Braf hozzászólása Márc 11, 2010 /
 
Üdv!

Már pár órája szenvedek egy led villogtatásával hitech c lite alatt. Az alany egy 16F690.

  1. #define _16F690
  2. #include <pic.h>
  3. #include <pic16f685.h>
  4.  
  5. main()
  6. {
  7.         TRISB = 0b11101111;
  8.         unsigned int ido;
  9.  
  10.         while(1)
  11.         {      
  12.                 // nem megy
  13.         /*      for(ido =0;ido<10000;ido++);
  14.                 RB4 = !RB4; */
  15.  
  16.         /*      //ez sem megy
  17.                 for(ido =0;ido<10000;ido++);
  18.                 if(RB4 == 1)
  19.                 {
  20.                         RB4= 0;
  21.                 }
  22.                 else
  23.                 {
  24.                         RB4 = 1;
  25.                 }*/
  26.  
  27.                 // ez megy
  28.                 for(ido =0;ido<10000;ido++);
  29.                 RB4=1;
  30.                 for(ido =0;ido<10000;ido++);
  31.                 RB4 =0;
  32.  
  33.         }
  34. }


A probléma az, hogy az if el pl miért nem megy? Meg a negáló operátorral sem...
ASM kód amit generál jónak néz ki... (Azért poén hogy 3-4 goto van egymás mögött tehát ugrik az egyikről a másikra és így tovább.. nem az hogy egyből oda ugrana. Ok hogy lite verzió de akkor is...)
(#) potyo válasza Braf hozzászólására (») Márc 11, 2010 /
 
http://www.hobbielektronika.hu/forum/topic_hsz_458622.html?highligh...458622

Ha 16F690-et használsz, akkor annak a h fájlját includold be, ne a 16F685-ét!
(#) Braf válasza potyo hozzászólására (») Márc 11, 2010 /
 
16f690-hez nincs külön include, a 16f685-ét használja. ( ill a pic16f685.h-ban van kb 3-4 cpu egyben)

Tudom, hogy létezik a rmw hiba, de ebben az a poén hogy ezt most gyorsan megírtam asm ban és tökéletesen megy.
Hitech c meg "berak magának" egy rakat késleltetést már azzal hogy 3-4 goton át jut el hogy invertálja a kimenetet a teszt után.

Most itt ebben az asm kódban a legkevesebb késleltetéssel csinálom olvasás után az írást és megy.
  1. Org 0x0000
  2.  
  3.          
  4.     BSF STATUS,RP0
  5.     BCF STATUS,RP1
  6.     MOVLW 0xEF
  7.     MOVWF TRISB
  8.  
  9. start
  10.  ; késleltetés c ből
  11.  
  12.  
  13. ledinvert
  14.         BTFSS PORTB,4
  15.         GOTO LEDON
  16.         ; LED OFF
  17.         BCF PORTB,4
  18.  
  19.         GOTO start
  20. LEDON
  21.         BSF PORTB,4
  22.         GOTO start



Ja és más funkció nincs a lábon ami bezavarhatna.
(#) potyo válasza Braf hozzászólására (») Márc 11, 2010 /
 
Ez az az eset, amikor két hibát is elkövetsz, és a két hiba eredménye véletlenül az, hogy látszólag az történik, mint amit szeretnél, hogy történjen. Olvasd végig alaposan a linkelt hozzászólást, mert abban van a megoldás az előző kódod hibájára. A mostaniban meg azon kívül még az is hiba, hogy nem váltottad vissza az RP0 bitet.

Akkor a pic.h állomány includold be, abban benne van feltételes fordítási direktívákkal a megfelelő h fájl beincludolása.
(#) geri12 hozzászólása Márc 11, 2010 /
 
Üdv mindenkinek!

Egy PIC-el maximum hány darab 7 szegmenses kijelzőt tudunk multiplexeres módon vezérelni?
Következő: »»   698 / 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