Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   791 / 1319
(#) Hp41C válasza danci1995 hozzászólására (») Aug 23, 2010 /
 
Szia!

Az első, a meghajtót is tartalmazó megoldás a megbízhatóbb. Ehhez hasonlóval programoztam éveken keresztül (még Dos és Window$ 3.1 alatt). Egy - két probléma szokott a párhuzamos portos programozókkal előjönni: - Az LPT port feszültség szintjei alacsonyabbak, mint évekkel ezelőtt, de a beépített meghajtó miatt ez az áramkör kevésbé érzékeny rá. - Az újabb window$ rendszerek nyomtatót keresnek a portokon...
A programozható eszközök száma nem túl nagy, csak az 5V-os példányokat fogja kezelni. De ezek között ott van a 18F2550, és segítségével meg tudsz majd építeni egy PicKit2 klónt...
(#) cNobody válasza danci1995 hozzászólására (») Aug 23, 2010 /
 
Helló!

Inkább Ezt az égetőt ajánlom, ha már mindenképpen LPT-set akarsz. (amit linkeltél másodszorra az ennek az elődje, olvasd is el mindkét cikket, mert összetartoznak).
Aztán az égetőt Ezzel a programmal használd.

Mind az égetőt, és mind a programot Watt fórumtárs tervezte/készítette. Ezzel a programmal sokkal jobbak az esélyek hogy menni fog az égetés, mint akármilyen más programmal, de a problémát már HP41C leírta előttem.
Sokan mondják hogy más program nem égeti a PIC-be a programot, aztán ezzel a programmal sikerül elsőre (égető ugyanaz).

A program által támogatott PIC típusok:
  1. 18F                                                     16F    
  2. ===========================             ==========================
  3. PIC18F242       PIC18F2410              PIC16F627       ok
  4. PIC18F252       PIC18F2510              PIC16F627A      ok
  5. PIC18F442       PIC18F4410              PIC16F628       ok
  6. PIC18F452       PIC18F4510              PIC16F628A      ok
  7. PIC18F248       PIC18F2420              PIC16F631       no teszt
  8. PIC18F258       PIC18F2520              PIC16F636/639   no teszt
  9. PIC18F448       PIC18F4420              PIC16F648A      ok
  10. PIC18F458       PIC18F4520              PIC16F677       no teszt
  11. PIC18F1220      PIC18F2480                PIC16F684     no teszt
  12. PIC18F1320      PIC18F2580                PIC16F685     no teszt
  13. PIC18F2220      PIC18F4480                PIC16F687     no teszt
  14. PIC18F2320      PIC18F4580                PIC16F688     no teszt
  15. PIC18F4220      PIC18F2515                PIC16F689     no teszt
  16. PIC18F4320      PIC18F2610                PIC16F690     no teszt
  17. PIC18F2331      PIC18F4515                PIC16F818     no teszt
  18. PIC18F2431      PIC18F4610                PIC16F819     no teszt
  19. PIC18F4331      PIC18F2525                PIC16F870     ok
  20. PIC18F4431      PIC18F2620                PIC16F871     ok
  21. PIC18F6525      PIC18F4525                PIC16F872     ok
  22. PIC18F6621      PIC18F4620                PIC16F873     ok
  23. PIC18F8525      PIC18F2585                PIC16F874     ok
  24. PIC18F8621      PIC18F2680                PIC16F876     ok
  25. PIC18F6585      PIC18F4585                PIC16F877     ok
  26. PIC18F6680      PIC18F4680                PIC16F882     no teszt
  27. PIC18F8585      PIC18F6527                PIC16F883     no teszt
  28. PIC18F8680      PIC18F6622                PIC16F884     no teszt
  29. PIC18F6520      PIC18F6627                PIC16F886     no teszt
  30. PIC18F6620      PIC18F6722                PIC16F887     no teszt
  31. PIC18F6720      PIC18F8527                PIC16F913     no teszt
  32. PIC18F8520      PIC18F8622                PIC16F914     no teszt
  33. PIC18F8620      PIC18F8627                PIC16F916     no teszt
  34. PIC18F8720      PIC18F8722                PIC16F917     no teszt
  35. PIC18F2455      PIC18F2221                PIC16F946     no teszt
  36. PIC18F2550      PIC18F2321                     
  37. PIC18F4455      PIC18F4221                     
  38. PIC18F4550      PIC18F4321                     
  39.                                
  40.         72példány                             33példány
(#) Hp41C válasza cNobody hozzászólására (») Aug 23, 2010 /
 
Sziasztok!

A programozó programokról:
Itt az a probléma, hogy egy adott pillanatban (technológia - pc felépítés) mellett készül egy programozó kapcsolás és a hozzá tartozó program és azokat egy újabb konfigurációval szeretnénk működtetni. A paralell portos tervek kb. 10-15 évesek, ezalatt a PC-ből 3 generáció lement. A jelek előállításának időzítésével van a probléma. Az írások / olvasások közötti időt kellene betartani, ezzel kell a programozási jelalakot előállítani.
- Az LPT-re kapcsolódó programozók tervezésénél az ISA buszra kötött periféria írás - olvasás sebességét vették figyelembe (kb. 1us volt egy írási ill. olvasási ciklus hossza.) Az akkori fordító programok ms nagyságú időzítéseket tudtak kezelni (ld. Turbo Pascal / C delay függvénye), ezt használva a programozás csiga lassú. A másik megoldás pont az írás/olvasás időzítésének felhasználása volt: Két írás között meghatározott számú más (feleslegesnek látszó) periféri műveletet elvégezve kialakult a kívánt időzítés.
- Az ISA bus kifutott, jöttek az alaplapra integrált perifériák és a gyorsabb processzorok. Az írási / olvasási időre nincs semilyen adat, bőven lehet rövidebb mint 33 ns (>33MHz belső busz sebesség). A két írás és olvasás közötti idő, attól függ, hogy milyen sebességű a pc. Sajnos a mostanában írt programokra is eljön majd az idő, amikor a gépek túl gyorsak lesznek hozzájuk - ha még lesz rajtuk LPT port-.
A pontos időzítéseket olyan programozókkal lehet biztosítani, amiben kontroller van...
(#) cNobody válasza Hp41C hozzászólására (») Aug 23, 2010 /
 
Igen ez igaz.
Viszont Watt pont ezt a gyorsaságot próbálta kiküszöbölni a programjában. Van is a programban egy csúszka amivel a programozás sebességét lehet állítani.

De igaz ami igaz, az LPT az idejétmúlt és lassú, és 1000-szer jobban megéri az USB-s PICKit2. Érdemes építeni/venni egy PK2-t.
(#) potyo válasza Hp41C hozzászólására (») Aug 23, 2010 /
 
Sajnos a perifériaműveletet nem lehet tudni, hogy pontosan mikor történik, de két parancs kiküldése közötti időt lehet us pontossággal időzíteni. Erre való a queryperformancecounter és a queryperformancefrequency nevezetű páros. Utóbbi mutatja, hogy mekkora sebességgel történik a belső hardveres számláló növelése, előbbi pedig a számláló pillanatnyi értékét adja vissza. Ha egy kis ciklus arra vár, hogy az előző értékhez képest adott mértékben emelkedjen a számláló értéke, akkor ezzel a kiküldések közötti idő minimális értékét be lehet állítani. Persze megszakítások elhúzhatják az időt, de ugye általában az a gond, hogy túl gyors az égetés, tehát a nyújtás nem probléma. EEPROM égetőben használtam ezeket, és processzortól függetlenül közel azonos égetési időket kaptam, pedig nem volt semmi utólagos állítás, csak a fentire támaszkodtam. Persze ha az égetőprogram úgy van megoldva, hogy for (i=0;i<1000;i++); akkor nagyobb sebességű processzoron rövidebb lesz a ciklus végrehajtási ideje, illetve egyéb más hardveres dolgok is beleszólnak, ez kétségtelen.
(#) watt válasza Hp41C hozzászólására (») Aug 24, 2010 /
 
Én úgy vettem észre, hogy adatlapban előírt időzítéseket nem tartanak be, leginkább a szüneteket. Sok más programot is lehet lassítani elég nagy mértékben, az írás még sem működik, mert nem mindenre hat a lassító rutinjuk, legtöbbször csak az órajelre.
Összességében valóban a PC-k sebességében és az LPT portok eltérő kialakításában keresendő a hiba, de programozói hibák is tetézik a bajt, pedig ez egy alapvetően egyszerű programozási feladat.
(#) watt válasza cNobody hozzászólására (») Aug 24, 2010 /
 
Hozzátenném a listához, hogy közben a 16F84A is kezelhető.
(#) danci1995 válasza cNobody hozzászólására (») Aug 24, 2010 /
 
Hello!

Először is köszönöm a válaszokat. Még az a kérdésem lenne hogy Watt programozójával semmilyen 12f -es PIC - et nem lehet programozni? Nekem leginkább PIC12F629 hez kellene mert elektromos dobókockát szeretnék építeni. A többi tipus ami kell nekem az benne van a listában.

Előre is köszi
(#) gddr80 hozzászólása Aug 24, 2010 /
 
Hello!
Próbálkoztam PIC-ről meghajtani motort (mobiltelefon rezgője) a kapcsolás szerint meg is építettem, de mikor bekapcsolom az áramkört, akkor a motor folyamatosan megy ahelyett hogy az alábbi kód szerint 2-szer impulzusszerűen menne. Valaki tudna segíteni, hogy esetleg a kapcsolás rossz, vagy a kód.
A motor elvileg mindkét irányban forog a polaritás változtatásával, nem tudom hogy ez számít-e esetleg a dióda bekötésnél. Segítségetek előre is köszönöm.

a kód amivel vezérlem:

void main() {
ANSEL = 0;
ANSELH = 0;
TRISC.F1 = 0x00; //motor kimenet
PORTC=0x00;

Delay_ms(5000);

PORTC.F1 = 1;
Delay_ms(300);
PORTC.F1 = 0;
Delay_ms(300);
PORTC.F1 = 1;
Delay_ms(300);
PORTC.F1 = 0;
Delay_ms(300);
}

dcmot.png
    
(#) pako válasza gddr80 hozzászólására (») Aug 24, 2010 /
 
Üdv!
A "TRISC.F1=0x00" parancsba nem kötött bele a fordító? Ugyanis bit szinten akarod módosítani a változót, de hexa értéket adsz neki.
Próbáld meg így:
  1. TrisC = 0x00;

Konfig bitek jól be vannak állítva? Kvarc berezeg? MCLR fel van húzva 5V-ra?
Amúgy így csak egy irányba tud forogni.
(#) gddr80 válasza pako hozzászólására (») Aug 24, 2010 /
 
Nem kötött bele, de igazad van. Nem használok kvarcot, belsőt használok.
Nincs felhúzva az MCLR, fel kellene? Ha igen, miért kell felhúzni 5V-ra?
Tudom hogy egy irányban forog, most nem is szeretnék mást, csak hogy akkor működjön amikor kell.
A kapcsolás egyébkánt jó? Eredetileg nagyobb ellenállás volt bent (10k), de azzal el sem indult.
(#) pako válasza gddr80 hozzászólására (») Aug 24, 2010 /
 
MCLR: Ha a konfig biteknél a funkciója "external"-ra van állítva, akkor azzal a lábbal tudod resetben tartani a PIC-et. Hogy beinduljon, 5V-ra kell húzni. Ha "internal"-ra van állítva, akkor nincs ilyen gond. (Bár ezt nem javaslom, lehet hogy csak én bénáztam vele, de 16F627-nél amikor internal-ra állítottam, nem tudtam utánna újraprogramozni. Talán akkor Low Voltage programming szükséges.(?) )
Kapcsolás: Jónak kell lennie, igaz én a hagyományos felállásban csináltam volna: Emitter a földre, Bázis ellenálláson át PIC-be, Collector pedig motorra, motor másik lába 5V-ra.

A progiddal kapcsolatban még annyi: a "delay_ms(5000);" utáni részt szándékosan nem tetted végtelen ciklusba?
(#) gddr80 válasza pako hozzászólására (») Aug 24, 2010 /
 
Idézet:
„A progiddal kapcsolatban még annyi: a "delay_ms(5000);" utáni részt szándékosan nem tetted végtelen ciklusba?”

Igen, ezt majd egy függvénybe fogom tenni, és azt hívom majd meg egy gombnyomásra.

Az MCLR-el kapcsolatban pedig, nem használtam még sosem ezt az internal/externalt és működtek a dolgok rendesen.
Kipróbáltam úgy hogy a motor nincs rákötve bekapcsoláskor, és csak 2 másodperc után kapcsolom rá (egy csatlakozóval), és akkor működik a két impulzus.
Viszont így nem jó nekem. :no:
(#) pako válasza gddr80 hozzászólására (») Aug 25, 2010 /
 
Ha nem állítottál a MCLR-en, alapértelmezésként externálon van. Akkor viszont kell neki a felhúzó, nem tart sokáig beforrasztani egyet.
Az is valószínű, hogy a 22 Ohm-al nagyon leterheled a lábat, és nálad is az RMW hiba jelentkezik. Cseréld le legalább 300 Ohm-ra. Meg lehet próbálni, hogy nem bit szinten változtatsz értéket, hanem a teljes portot írod:
  1. PORTC.F1 = 1; helyett PORTC = PORTC | 0x02;
  2. PORTC.F1 = 0; helyett PORTC = PORTC & 0xFD;
(#) gddr80 válasza pako hozzászólására (») Aug 25, 2010 /
 
Köszi!
Most működik rendesen, az MCLR-hez ugyan nem tettem felhúzó ellenállást (a mikroC alapból pedig external-ra állítja, de mégis működik), de kicseréltem egy 330 ohmosra a motor előtti ellenállást és a programkódba pedig tettem egy olyan sort ami rögtön nullára állítja a kimenetet. Talán az volt a baj, hogy bekapcsoláskor hirtelen túl nagy áramot vett fel a motor és resetelte a PIC-et. Vagy nem tudom...

  1. void main()
  2. {
  3.   ANSEL = 0;
  4.   ANSELH = 0;
  5.   TRISC = 0b00001000;
  6.   PORTC.F1 = 0;                     // motor ki
  7.  
  8.   Delay_ms(5000);
  9.  
  10.   PORTC.F1 = 1;
  11.   Delay_ms(300);
  12.   PORTC.F1 = 0;
  13.   Delay_ms(300);
  14.   PORTC.F1 = 1;
  15.   Delay_ms(300);
  16.   PORTC.F1 = 0;
  17.   Delay_ms(300);
  18. }
(#) watt válasza gddr80 hozzászólására (») Aug 25, 2010 /
 
MCLR tönkre mehet felhúzó nélkül, és egyébként is kell oda, ha nem vagy biztos benne milyen módban van!
(#) gddr80 válasza watt hozzászólására (») Aug 25, 2010 /
 
Rendben, beforrasztok egyet. De mekkora lenne ideális?
(#) icserny válasza gddr80 hozzászólására (») Aug 25, 2010 /
 
10 kOhm a szokásos érték. Akkor is kell felhúzás, ha MCLR internal módban van, mert akkor a láb digitális bemenet, amit nem illik lebegni hagyni.
(#) Meggányver hozzászólása Aug 25, 2010 /
 
Sziasztok!


Az szeretném kérdezni, hogy melyikkel járok jobban ha megveszem Pickit 2 vagy Pickit 3 ? Nem igazán vagyok otthon a témában.
(#) potyo válasza Meggányver hozzászólására (») Aug 25, 2010 /
 
Manapság már nem divat értelmes mondatokat írni?
(#) lidi válasza Meggányver hozzászólására (») Aug 25, 2010 /
 
Legyen PK2, olcsóbb is, kezdetnek jó lesz az.
(#) Hp41C válasza Meggányver hozzászólására (») Aug 25, 2010 / 7
 
Szia!

Ezt a kérdést sokan felteszik...

Érvek a PICKit3 mellett:
- Új fejlesztés, karbantartják - továbbfejlesztik,
- Több típust lehet vele programozni,
- Gyorsabb, a nyomkövetés kényelmesebb,

Érvek a PICKit3 ellen:
- A programjainak szolgáltatási szintje nem éri el a PICKit2 -éit,
- Kontroller család váltáskor a beépített kontrollert átprogramozza - a felhasznált kontroller garantást írhatósági száma alacsony,
- Ha az át programozás nem sikerül, a PICKit3 kontrollere csak egy másik ICSP kompatibilis (3.3V) programozóval éleszthető fel - amennyiben a programját előre kiolvastuk.

Érvek a PicKit2 mellett:
- Kiforrott fejlesztés,
- A programjainak szolgáltatási szintje meghaladja a PICKit3-éit.
- A teljes firmware -t nyilvánosságra hozta a gyártó, letölthető, frissíthető,
- Kontroller család váltásnál nem programozza át a belső kontrollert.

Érvek a PicKit2 ellen:
- Régebbi fejlesztés, nem tudhatjuk meddig tartják karban, meddig fejlesztik,
- Lassabb a programozás és a nyomonkövetés.
- Kevesebb fajta kontroller programozható vele.

Egyikkel sem lehetséges a 16Cxxx, 18Cyyy egyszer programozható kontrollerek programozása.
(#) Meggányver válasza Hp41C hozzászólására (») Aug 25, 2010 /
 
Köszi a választ.
(#) icserny hozzászólása Aug 25, 2010 /
 
MCP2200-vel találkozott már valaki? Próbálnám elindítani a konfigurációs programját, de vagy azt modja, hogy "Az alkalmazást nem sikerült elindítani, mert a konfigurációja helytelen.", vagy csak annyit mond, hogy "Error executing program!". Az eszem megáll az ilyen "informatív" hibaüzenetektől.

Egyébként magyar Windows XP + SP3 alatt próbálkozok, .NET 2.0 is van fenn (pl. Pickit2.exe miatt), és van fenn Visual 2005 C++ 2005 Express meg Windows Platform SDK is.
(#) The_Saint hozzászólása Aug 25, 2010 /
 
Sziasztok!

Remélem jól telt, telik a nyár mindenkinek.... Egy olyan problémával találtam szembe magam, amivel már egy ideje nem tudok mit kezdeni.
Most már zsinórban a 3. PIC-el történik ugyan az. 16F876A-t próbálok használni, de 3 különböző nyákon 3 különbőző céllal épített kapcsolásban a quartzos órajel nem akar elindúlni, addig a pillanatig, amíg az ujjomat hozzá nem érintem a quartz fém házához. Ha nem érek hozzá akkor lei is áll.
A szokásos elrendezésben van a 20Mhz-es cucc, kettő 22pF os kondival, amik a testre csatlakoznak. Nem értem hogy mi lehet a gond, mert 2 korábbi panelen ugyanebben az elrendezésben van a quartz, de tökéletesen működik.
Ha van valami ötletetek, kérlek osszátok meg velem...
Köszönöm!

The_Saint
(#) The_Saint válasza The_Saint hozzászólására (») Aug 25, 2010 /
 
Üdv újra

Nagyon jó hogy van ez a fórum Most, hogy leírtam neketek a problémát, azt hiszem közben rá is jöttem a megoldásra. Rosszul volt a CONFIG beállítva. Hiába quartz, de 20MHz-es és nem XT, hanem HS osc-t kellett beállítani neki..... Mosmár úgynéz ki, hogy megyeget!!!

Üdv
The_Saint
(#) icserny válasza icserny hozzászólására (») Aug 26, 2010 /
 
Ebben a topikban találtam olyan információt, ami az MCP2200 témakörben a .NET 2.0 konfigurálásával kapcsolatos, de az ott leírtakkal sem sikerült életre kelteni a Configuration Utility programot, úgyhogy végül a kukában landolt...
(#) steev hozzászólása Aug 26, 2010 /
 
Sziasztok

Az mitől van, hogy ha tápod adok a nyáknak rajta a piccel az 10-ből egyszer nem kezdi a programot futtatni?

Miután a WDT ideje lejár és resetel utána indul.
POR 64ms
BOR 2V

Találkozott már ilyennel valaki?
(#) watt válasza steev hozzászólására (») Aug 26, 2010 /
 
Van néha, hogy külön reset áramkör szükséges, ha a tápfesz nem stabilizálódik kellő idő alatt a bekapcsolás után.
(#) icserny válasza steev hozzászólására (») Aug 26, 2010 /
 
Idézet:
„az 10-ből egyszer nem kezdi a programot futtatni?”
Milyen oszcillátorral? Nem lehet, hogy az nem indul?

Idézet:
„BOR 2V”
Én ezt valószínűleg emelném (2,7 V-ra állítanám).
Következő: »»   791 / 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