Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   609 / 1320
(#) raiman hozzászólása Nov 26, 2009 /
 
Sziasztok
Szeretném megépíteni ezt a kapcsolást .
Viszon nincs tapasztalatom a PIC-ekkel.
Még égetőm sincs
De szívesen építenék egy égetőt is amúgy sem ártana, mert annyi jó dolog van csak mindegyik PIC-el működik.
Programozni nem tudok de ahogy látom a .hex fájlok megvannak így elvileg azokat csak be kéne égetni a PIC-be.
Szóval visszatérve az égetőre... Nekem már nincs LPT port a gépen így vagy USB-s vagy Soros portú égetőt szeretnék építeni ami viszonylag sok féle PIC-el "elbánik".
Légyszíves segítsetek nekem!
Előre is köszönöm mindenkinek a segítséget!
(#) mammut válasza raiman hozzászólására (») Nov 26, 2009 /
 
Milyen típusú alaplapod van? (Sok újabb alaplapon van LPT, csak nincs kivezetve, tüskesoron elérhető...)

(#) beton cipő válasza icserny hozzászólására (») Nov 26, 2009 /
 
Nah sikerült végülis beleírni a programot a PIC-be. Beállítottam a megfelelő linker scriptet illetve az ajánlott kódot fordítottam le. Most már nagyon jól működik!
Nagyon szépen köszönöm a segítségeket!
(#) icserny válasza beton cipő hozzászólására (») Nov 26, 2009 /
 
Örülök, hogy sikerült! Következő lépésként valamelyik PICCOLO projektbeli LED villogtatóval kellene folytatni (lehetőleg nem az elsővel, mert akkor nem látod, hogy az új program megy-e vagy még a régi...).

A különbségek a reggel belinkelt programhoz képest:
1. A reset és interrupt vektorok áthelyezését és a LEDport/LEDtris definiálását elrejtettem a pic_all.h állományba, így ezekkel nem kell foglalkozni. Viszont ehhez a p18cxxx.h helyett a pic_all.h állományt kell becsatolni.
2. Az "univerzális" linker állományt kell használni (PIC18f4550.lkr)
3. A linkernek egy /uHID_BOOT opciót is meg kell adni

Ez a Kísérleti áramkör c. fejezet végén le van írva,meg az is, hogy mi a teendő, ha nincs bootloader, vagy az MCHPUSB botloader van beégetve. Mindez bonyolultnak látszik, de a használata annál kellemesebb:
  1. #include "p18_all.h"
  2. #include <delays.h>
  3. void main(void) {
  4.   LEDtris=0xf0;             //LEDport<3:0> legyen kimenet
  5.   LEDport=0x09;             //kezdetben LED4 és LED1 legyenek bekapcsolva
  6.   while (1) {
  7.     Delay10KTCYx(0);        //2 560 000 TCY késleltetés
  8.     LEDport = LEDport^0x0f; //LED-ek állapotának invertálása
  9.   }
  10. }

Ez a LED-eket ellenütemben villogtató program.
(#) raiman válasza mammut hozzászólására (») Nov 26, 2009 /
 
Szia
ASUS P5W Deluxe alaplapom van, de sajna nincs rajta még az alaplapon sem (tüskesor) kivezetve.
RS232-es csatim viszont van (alaplapi) Ezt z égetőt néztem, ezzel eléggé sok féle pic-et lehet égetni.
(Mondjuk én tényleg nem értek hozzá, csak a leírás alapján írom).
(#) beton cipő válasza icserny hozzászólására (») Nov 26, 2009 /
 
Köszönöm a kódot és a tippeket. Ez is lefordul és hasonlóan az előzőhöz szépen muzsikál
Nah akkor most ezt kicsit jobban átnézem és mazsolázom tovább a PICCOLO-t
Üdv
(#) beton cipő válasza beton cipő hozzászólására (») Nov 27, 2009 /
 
Már megy a Knight rideres furófény A következő lépés ugyanez, csak PWM-el. Nah nem OFF-olok tovább, csak ez most így feldobott..
(#) trudnai válasza beton cipő hozzászólására (») Nov 27, 2009 /
 
Idézet:
„Már megy a Knight rideres furófény”


Es csinalsz belole egy Knight Rider Kit-et? (bocs, nem birtam kihagyni )
(#) tallerbator hozzászólása Nov 27, 2009 /
 
Sziasztok!

5 voltos PICKit 2 klónnal tudok PIC18F67J60 -as PIC-et égetni?
(#) watt válasza tallerbator hozzászólására (») Nov 27, 2009 /
 
Röviden: nem.
Hosszabban: Ha építesz egy konvetert, akkor igen. Nézz fesz szilva oldalára és olvasgass!
(#) tallerbator válasza watt hozzászólására (») Nov 27, 2009 /
 
Sejtettem, hogy nem tudja,
köszi a választ.
(#) watt válasza tallerbator hozzászólására (») Nov 27, 2009 /
 
Nem pontosan ezt írtam. Olvasd el szilva oldalán az adapterről szóló dolgokat!
(#) sany hozzászólása Nov 28, 2009 /
 
Üdv mindenkinek!

Az alábbi programot mikroC - ben írtam:
  1. char beall[3];
  2. char idozites[3];
  3. int i;
  4. int j;
  5. int ido=0;
  6.  
  7. void main() {
  8.  
  9. cmcon=0x07;
  10. TRISB =0;
  11. TRISA =0xFF;
  12.  
  13. Lcd_Init(&PORTB);
  14. Sound_Init(&PORTB,0);
  15. Lcd_Cmd(Lcd_CLEAR);
  16. Lcd_Cmd(Lcd_CURSOR_OFF);
  17. Lcd_Out(1, 1,"Idozites:");
  18. Lcd_Out(2,10,"mp");
  19.  
  20. while(PORTA.F4==1)
  21. {
  22. IntToStr(ido,beall);
  23. Lcd_Out(2,1,beall);
  24. delay_ms(250);
  25. if(porta.f0!=1)
  26. ido++;
  27. if(porta.f1!=1)
  28. ido--;
  29. }
  30. Lcd_Out(1,1,"Eltelt ido:");
  31. Lcd_Out(2,10,"mp");
  32. while(j < ido)
  33. {
  34.  
  35. IntToStr(j,idozites);
  36. Lcd_Out(2,1,idozites);
  37. Delay_ms(1000);
  38. Sound_Play(500,500);
  39. j++;
  40. }
  41. j=0;
  42. }


A program helyesen működik. Ha lefut az utolsó while ciklus akkor egyszerűen megáll a számlálás .Eddig így kell működnie.De ha j=0 nulla után irok valamilyen kódot, akkor úgyveszi , hogy már lefutott a while ciklus . Miért?
(#) trudnai válasza sany hozzászólására (») Nov 28, 2009 /
 
Idézet:
„De ha j=0 nulla után irok valamilyen kódot, akkor úgyveszi , hogy már lefutott a while ciklus . Miért?”


Nem biztos, hogy ertem a kerdest, de a j=0 a while ciklusod mogott van, azaz a while mar lefutott... Tehat ha j=0 moge teszel kodot, akkor a while mar lefutott, mi is a kerdes?

Amugy ha nem teszel a vegere (main bezaro kapcsosa ele) egy vegtelen ciklust akkor compiler fuggo modon vagy megall a program futas, vagy a main-t ujra es ujra le fogja futtatni, vagy init-nel kezdi es utana futtatja le a main-t... Mivel compiler fuggo sokkal jobb, ha te magad hatarozod meg mi tortenjen...
(#) sany válasza trudnai hozzászólására (») Nov 29, 2009 /
 
  1. char mytext[3];
  2. char idozites[3];
  3. int i;
  4. int j;
  5. int ido=0;
  6. void main() {
  7.  
  8. cmcon=0x07;;
  9. TRISB = 0;
  10. TRISA =0xFF;
  11.  
  12. Lcd_Init(&PORTB);
  13. Sound_Init(&PORTB,0);
  14. Lcd_Cmd(Lcd_CLEAR);
  15. Lcd_Cmd(Lcd_CURSOR_OFF);
  16. Lcd_Out(1, 1,"Idozites:");
  17. Lcd_Out(2,10,"mp");
  18.  
  19. while(1)
  20. {
  21.  
  22. while(PORTA.F4==1)
  23. {
  24. IntToStr(ido,mytext);
  25. Lcd_Out(2,1,mytext);
  26. delay_ms(250);
  27. if(porta.f0!=1)
  28. ido++;
  29. if(porta.f1!=1)
  30. ido--;
  31. }
  32.  
  33.  
  34. Lcd_Out(1,1,"Eltelt ido:");
  35. Lcd_Out(2,10,"mp");
  36. while(j < ido)
  37. {
  38. IntToStr(j,idozites);
  39. Lcd_Out(2,1,idozites);
  40. Delay_ms(1000);
  41. Sound_Play(500,500);
  42. j++;
  43. }
  44. j=0;
  45.  
  46.  
  47. Lcd_Out(1, 1,"Letelt az ido!");
  48. }
  49. }


Egy while(1) végtelen ciklus valamiért lemaradt a forráskódból.Így gondoltam a forráskódot eredetileg.

"ha j=0 moge teszel kodot, akkor a while mar lefutott, mi is a kerdes?"

Csak úgy fut le így a program , hogy a while(j
(#) watt válasza sany hozzászólására (») Nov 29, 2009 /
 
Jobb lenne, ha ilyen hosszú forrást inkább fájlban csatolnál, legyen az C, vagy asm, vagy txt. Van egy tallózás gomb... Köszi!
(#) néván hozzászólása Nov 29, 2009 /
 
Üdv.Mindenkinek!

Épitettem egy OBD2-es interfészt, Pic 16F84A-20. mikrovezérlővel.
A mikrovezérlő programozását kérem egy hozzáértő, segitőkész embertől.
Választ várva, Tisztelettel néván.
(#) trudnai válasza sany hozzászólására (») Nov 29, 2009 /
 
Ja, ertem... Tehat PORTA.F4-en varakozol egy jelre, mikor az megjon akkor kiirnad az LCD-re a mert idot?

Akkor mondanam az eszreveteleim

1. A fo problema ha jol ertem amit keresel, hogy megjon a jel, majd megtortenik a kiiras, es utana a jel nyilvan egy darabig meg ott van a labon, tehat ujra es ujra tullep a jel varakozasi cukluson. Kellene a while(PORTA.F4==1) ele egy while(PORTA.F4==0) {} is... Magyaran az nem csinal semmit, csak var ameddig a felfuto el meg nem jon. Ha ott nyomo gomb van vagy egyeb mechanikus kapcsolo eszkoz, akkor kell prellmentesites is...

2. j=0 -nak a while(j < ido) ele kellene kerulnie...

3. ido-t nem nullazod, csak a progam legelejen (bar lehet epp ez volt a cel nem tudom)

4. indentalast meg space-eket az operatorok koze tegyl mar -- igy eleg nehez olvasni a kodot >
(#) bbalazs_ válasza néván hozzászólására (») Nov 29, 2009 /
 
Semmi gond, ugorj at este!

(#) googa hozzászólása Nov 29, 2009 /
 
Hali Srácok! SD kártyára tudok menteni FAT formátumban PIC-ről, beágyazott lib segítségével, SPI-n. A kérdés, hogy SPI FLASH memóriára is lehet akkor ilyen módon és egyáltalán FAT rendszert létrehozni? (De végül miért ne lehetne, hiszen a pendrive-okban is flash memória van.) Köszi előre is!
(#) watt válasza googa hozzászólására (») Nov 29, 2009 /
 
Kicsit másként kell kezelni, miután az SD-nek van beépített protokollja a sima flashnek nincs. Tehát ha megírod az SD illesztőprogramot, akkor ugyanez a lib kezelni fogja. Bevallom én nem állnék neki.
(#) googa válasza watt hozzászólására (») Nov 29, 2009 /
 
Hát, akkor én sem állok neki. Kíváncsiság hajtott, meg volt egy ötletem, de mindegy...
(#) sany válasza trudnai hozzászólására (») Nov 29, 2009 /
 
Köszönöm a segítséget!


(#) delmur82 hozzászólása Nov 30, 2009 /
 
Sziasztok!

Szeretnék érdeklődni, hogy valaki elkészítette e már a következő kapcsolást és , hogy működött - e neki? A neve VEKer Bővebben: Link Csak azért kérdezném mert én megépítettem de nem akar jó lenni. A program adott, PIC16F877 - re. Csak azért mert ha már működött valakinek akkor én néztem el valamit. Egyenlőre simán összedugtam számítógéppel de meg se nyikkan. Azt írja nincs kábel bedugva.
(#) Ktulu válasza delmur82 hozzászólására (») Nov 30, 2009 /
 
A halokartyat felkonfiguraltad elotte?
Idézet:
„Egy szűz hálózati kártyát mielőtt összeépítenénk a PIC-el, először egy lassabb ISA buszos PC-be be kell konfigurálni.
Az I/O címet 300h-ra az IRQ-t bármire és a PNP (Plug And Play) Disabled-re (tiltottra) kell állítani ezzel a DOS-os konfiguráló programmal: 3C5x9bcfg.zip (182 kB)! Sajnos gyors PC esetén a config program nullával való osztás hibával le fog állni, ilyenkor nincs mit tenni, keresni kell egy régebbi, lassabb PC-t .”
(#) delmur82 válasza Ktulu hozzászólására (») Nov 30, 2009 /
 
Természetesen beállítottam. A panelen nem találok hibát, alig van benne alkatrész. Igazából csak a forráskódot nem ismerem. Lehet hogy a PIC programozásakor állítok be valamit rosszul? Nem tudom. Az zavar hogy meg se nyekken a hálókártya. Semmi kapcsolat a PC - vel. Pedig tápot is kap több helyen is a panelről. Ezért kérdeztem esetleg valaki foglalkozott e vele.
(#) nemgyuri hozzászólása Nov 30, 2009 /
 
Kedves kollégák, segítség!
A mellékletben van egy programrészletem (multiplexelt bináris óra). A megszakításban történne az óra léptetése. MPLAB szimulátorával hibátlannak tűnik, "vasban" viszont az 1. sec után nem történik semmi sem.
A PIC közben megy, az óra beállítás, kijelzés hibátlan...
Merre keresgéljek?

isr_óra
    
(#) Hp41C válasza nemgyuri hozzászólására (») Nov 30, 2009 /
 
Szia!

Észrevételek:

- A megszakítási rutinból mindig úgy lépjen ki a program, hogy a mentett értékeket visszaállítja (Maga a mentés is elront adatokat - ld. W).

- A program a kijelzés címke útán mit csinál? A kontrollerek élete egy végtelen ciklusban telik el....

Szia
(#) nemgyuri válasza Hp41C hozzászólására (») Nov 30, 2009 /
 
Szia!
Szerintem a megszakítási rutinból úgy jön ki, hogy visszaállít mindent!-(W_TEMP. STATUS_TEMP). A progi hátsó részét azért nem tettem bele, mert hosszú lenne, de ott semmi nem történik aminek köze lenne a megszakításhoz. Arra tippelek, hogy csak ott kell keresni a bibit. (szimulátoron hibátlanul fut!)
(#) trudnai válasza Hp41C hozzászólására (») Nov 30, 2009 /
 
Idézet:
„A kontrollerek élete egy végtelen ciklusban telik el....”


...vagy sleep uzemmodban
Következő: »»   609 / 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