Fórum témák

» Több friss téma
Fórum
Keresés
Lapozás: OK   1 / 2
(#) giskard válasza niedziela hozzászólására (») Dec 30, 2022
Nem hiszem, hogy programozásnál külön figyelgetni kellene a PGM lábat és külön drótokat kéne beforrasztani (főleg, hogy különböző pic-eknél ez mind máshova esik) adott helyekre. Nem is kell ezt, több fajta piccel gond nélkül működik a pickit2, kivéve a 16f884-et (több darabbal próbáltam). Tehát csatlakozóról pickit2 lehúz TAIT feldug, s lőn.
A hozzászólás módosítva: Dec 30, 2022
(#) niedziela válasza giskard hozzászólására (») Dec 30, 2022
Idézet:
„Szerettem volna 16f884-et programozni PICKIT2-vel, de sehogy sem sikerült”

PGM lábat testre kell kötni.
(#) giskard válasza david87 hozzászólására (») Dec 30, 2022
Ha nem a legújabb legbonyolultabb PIC-eket akarod programozni kezdésnek érdemes egy egyszerű programozóval próbát tenni.
Szerettem volna 16f884-et programozni PICKIT2-vel, de sehogy sem sikerült (holott más PIC-eket programoz)
Fogtam egy TAIT nevezetű egyszerű programozót (74ls06 , pár tranzisztor, stab IC, db25 csatlakozó cirka 1000 ft) és a:picpgm-1.9.3.1-win32-x86 programmal láss csodát simán ment. (a program rengeteg PIC-et ismer, olyanokat is amit a PICKIT2 nem)
(#) kormika hozzászólása Aug 10, 2016
Sziasztok! Az előző oldalon már volt egy kis gondom a modellszabályzóm PIC-jének a bemeneteivel, de az megoldódott, haladok tovább a programban és megint elakadtam. (Ha valaki esetleg nem tudná, az RC vevő kimenetein négyszögjelek vannak, amiknek az impulzusszélessége változik 1 és 2 ms között, 1ms a minimum, 1,5ms a középállás, 2ms a maximum) az impulzusok szélességének mérése már tökéletesen megy, ebből a motorok PWM jelének kiszámítása, és az irányváltó relék vezérlése is sima liba, a gond a kanyarodásnál van. A szóbanforgó modell ugyebár egy hernyótalpas jármű, egyenesvonalú előre-hátra haladásnál no problem, mindkét motor ugyanazt kapja, mindenki boldog. Kanyarodáskor viszont a kanyar belső ívén haladó hernyótalp motorjának kitöltési tényezőjét kellene csökkenteni úgy, hogy a csökkenés a kormánykerék elfordításának szögével legyen arányos, és maximálisan elfordított kormánykerék esetén a kitöltési tényező a másik motor kitöltési tényezőjének fele legyen. A helyzetet tovább bonyolítja az, hogyha áll a jármű, és akkor fordítják el a kormánykereket, akkor az egyik motort előrefelé kell elindítani, a másikat pedig hátrafelé, viszont a kitöltési tényezőknek egyezniük kell, és arányosnak kell lenniük a kormánykerék elfordulási szögével. Nna ennél a kanyarodásos dolognál mondott csődöt a tudományom, tudom, hogy mit kellene csinálnom, de nem tudom, hogy ezt hogyan tudnám belegyúrni a programba. Csatolom az eddig működő forráskódot, igyekeztem kommentelni, hogy érthető legyen a gondolatmenetem. A forráskódban 3. csatornaként szereplő részlet a jármű világításának kapcsolásáért felelős, az áramkörben egy NPN tranyó kapcsolja a LED-eket, a motoroktól teljesen függetlenül.
  1. #include <16f884.h>
  2. #fuses NOWDT,INTRC_IO,PUT,NOPROTECT,BROWNOUT,NOLVP,NOCPD,NOMCLR
  3. #use delay(clock=4000000)
  4. #define FET1 PIN_C2
  5. #define FET2 PIN_C1
  6. #define Relay1 PIN_B0
  7. #define Relay2 PIN_B1
  8. #define Ch3 PIN_B2
  9.  
  10.  
  11. void wait_for_low_to_high1() {  /* 1-es csatorna */
  12.  
  13.    while(input(PIN_A0)) ;       /* Ha magas, várunk, amíg alacsony lessz */
  14.  
  15.    delay_us(3);                
  16.  
  17.    while(!input(PIN_A0));       /* Várunk, hogy magas legyen */
  18. }
  19.  
  20. void wait_for_low1() {
  21.  
  22.    delay_us(3);                
  23.  
  24.    while(input(PIN_A0));        /* Várunk, hogy alacsony legyen */
  25. }
  26.  
  27. void wait_for_low_to_high2() {  /* 2-es csatorna */
  28.  
  29.    while(input(PIN_A1)) ;       /* Ha magas, várunk, amíg alacsony lessz */
  30.  
  31.    delay_us(3);                
  32.  
  33.    while(!input(PIN_A1));       /* Várunk, hogy magas legyen */
  34. }
  35.  
  36. void wait_for_low2() {
  37.  
  38.    delay_us(3);                
  39.  
  40.    while(input(PIN_A1));        /* Várunk, hogy alacsony legyen */
  41. }
  42.  
  43. void wait_for_low_to_high3() {  /* 3-as csatorna */
  44.  
  45.    while(input(PIN_A2)) ;       /* Ha magas, várunk, amíg alacsony lessz */
  46.  
  47.    delay_us(3);                
  48.  
  49.    while(!input(PIN_A2));       /* Várunk, hogy magas legyen */
  50. }
  51.  
  52. void wait_for_low3() {
  53.  
  54.    delay_us(3);                
  55.  
  56.    while(input(PIN_A2));        /* Várunk, hogy alacsony legyen */
  57. }
  58.  
  59. void main(){
  60.  
  61.    int16 time1;                 /* 1-es csatorna impulzusszélessége */
  62.    int16 time2;                 /* 2-es csatorna impulzusszélessége */
  63.    int16 time3;                 /* 3-as csatorna impulzusszélessége */
  64.    int16 duty;                  /* 2-es csatorna alapján kalkulált kitöltési tényező */
  65.    int16 duty1;                 /* 1-es motor végleges kitöltési tényezője */
  66.    int16 duty2;                 /* 2-es motor végleges kitöltési tényezője */
  67.    
  68.    setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);      /* Timer1 beállítása, 65,5 ms után túlcsordul */
  69.    setup_ccp1(CCP_PWM);                         /* CCP1-es modul PWM módba állítása */
  70.    setup_ccp2(CCP_PWM);                         /* CCP2-es modul PWM módba állítása */
  71.    setup_timer_2(T2_DIV_BY_1, 1023, 1);         /* Timer2 beállítása, PWM freki 1kHz */
  72.    set_pwm1_duty(0);
  73.    set_pwm2_duty(0);
  74.    delay_ms(250);
  75.    
  76.  while (TRUE){
  77.  
  78.    wait_for_low_to_high1();      /* 1-es csatorna impulzusszélesség mérése */
  79.    set_timer1(0);
  80.    wait_for_low1();
  81.    time1 = get_timer1();
  82.    
  83.    wait_for_low_to_high2();      /* 2-es csatorna impulzusszélesség mérése */
  84.    set_timer1(0);
  85.    wait_for_low2();
  86.    time2 = get_timer1();
  87.    
  88.    wait_for_low_to_high3();      /* 3-as csatorna impulzusszélesség mérése */
  89.    set_timer1(0);
  90.    wait_for_low3();
  91.    time3 = get_timer1();
  92.    
  93.    if(time3<1500){               /* Ha a 3-as csatorna impulzusszélessége kisebb mint 1500us, akkor kimenet kikapcsolása */
  94.      output_low(Ch3);
  95.    }
  96.    
  97.    if(1500<time3){               /* Ha a 3-as csatorna impulzusszélessége nagyobb mint 1500us, akkor kimenet bekapcsolása */
  98.      output_high(Ch3);
  99.    }
  100.    
  101.    if(time2<1500){               /* Ha a 2-es csatorna impulzusszélessége kisebb mint 1500us, akkor relék hátramenetbe, és kitöltési tényező kalkulálása */
  102.       duty=1500-time2;
  103.       output_high(Relay1);
  104.       output_high(Relay2);
  105.    }
  106.    
  107.    if(1500<time2){                /* Ha a 2-es csatorna impulzusszélessége nagyobb, mint 1500us, akkor relék előremenetbe, és kitöltési tényező kalkulálása */
  108.      duty=time2-1500;        
  109.      output_low(Relay1);
  110.      output_low(Relay2);
  111.    }
  112.    
  113.    duty=duty*1.99;               /* Kitöltési tényező igazítása */
  114.    
  115.    if(1000<duty){                /* Ha a kitöltési tényező nagyobb, mint 1000, akkor kitöltési tényezőt 100%-ra állítja */
  116.      duty=1023;
  117.    }
  118.    
  119.    if(duty<30){                  /* Ha a kitöltési tényező kisebb, mint 30, akkor a kitöltési tényezőt 0%-ra állítja */
  120.      duty=0;
  121.    }
  122.    
  123.    duty1=duty;                   /* 1-es motor végleges kitöltési tényezője megegyezik a kalkulált kitöltési tényezővel */
  124.    duty2=duty;                   /* 2-es motor végleges kitöltési tényezője megegyezik a kalkulált kitöltési tényezővel */
  125.    
  126.    set_pwm1_duty(duty1);         /* 1-es PWM kimenet beállítása */
  127.    set_pwm2_duty(duty2);         /* 2-es PWM kimenet beállítása */
  128.    
  129.    }
  130.    
  131. }


A segítséget előre is nagyon köszönöm
(#) kormika hozzászólása Aug 10, 2016
Sziasztok! Elkészültem az egyik modellembe való egyedi szabályzóval. Egy hernyótalpas szovjet tüzérségi vontatóról van szó, készen nem találtam olyan szabályzót, amivel élethűen lehetne irányítani a járművet, illetve eléggé kevés hely van a modellben, mert 1/14-es méretarányban készül. A lelke a cuccnak egy 16f884-es PIC, ez dekódolja a vevőből jövő 3 csatorna jeleit, és ezek alapján vezérli a 2 villanymotort, a hangmodult és a világítást. A motorok forgásirányváltását relékre bíztam, a modell kis méretéből adódóan kicsi motorok is vannak benne, terhelve sem vesznek fel 1,5-2A-nál többet, a 2db relével egyszerűbb volt megoldani a dolgot, mint 2db H hidat vezérelni. A FET-ek egy rossz videókártyáról származnak, elvileg 50A-t tudnak, szóval szerintem hűtés nélkül is bírni fogják. Sajnos belecsúszott egy hiba a gyártásba, 2 verzió készült a paneltervből, és naná, hogy a rosszat sikerült kinyomtatnom, és csak beültetés közben vettem észre, ezért van a bal felső sarokban az átkötéshalmaz.
(#) kormika hozzászólása Aug 7, 2016
Sziasztok! Egy egyedi RC modell építéséhez szükségem van egy igencsak egyedi szabályzóra, sehol nem találtam ilyet készen, szóval marad a megépítés. A lelke elgondolásom szerint egy PIC 16f884 lenne, mivel a szabályzónak többek között 2 motort kell függetlenül vezérelnie ezért szükség van a 2db egymástól független PWM jelre, amire (ha jól fejtettem meg az adatlapot) ez a PIC képes. A kérdésem arra irányulna leginkább, hogy a vevőből érkező PWM jelekből hogyan tudok pl. 8 bites változókat kreálni, amikből utánna majd kikalkulálom, hogy melyik motornak mekkora PWM kell. CCS fordítót használok, a példák között van egy impulzusszélesség méréses példa, de nem akart működni többszöri kísérletezés után sem. A szóban forgó modell egy hernyótalpas szovjet tüzérségi vontató, a két hernyótalpat külön motor hajtja, és a menetiránynak megfelelően a különböző lámpákat is vezérelni kell, és egy szintén PIC-es dizelmotor hanggenerátort is vezérelni kell a szabályzónak. Találtam ugyan tankokba való gyári szabályzót, de pl. egyik sem olyan, hogy ún. pisztoly távirányítóval lehessen vezérelni. Nekem olyan szabályzóra van szükségem, ami 2 csatorna jeléből dönti el, hogy mi a szitu, az egyik csatorna az előre-hátramenet, a másik pedig a kormányzás. Ha a kormány középen van, akkor mindkét motort ugyanúgy kell vezérelnie a gázkar hatására, ha pedig elfordítom valamelyik irányba a kormányt, akkor az adott oldalhoz tartozó motort kell arányosan lassítania. Erre még találtam egy gyári szabályzót ebay-en "potom" 200 dollárért, de az egyik legfontosabb funkiót az sem tudja mégpedig azt, hogyha nem adok gázt, de elfordítom a kormánykereket valamelyik irányba, akkor az iránynak megfelelően az egyik motort előrefelé kell elindítania, a másikat pedig hátrafelé. Erről még éppenséggel lemondanék, de a gond ezzel a szabályzóval az, hogy eléggé kicsi méretarányú modellről van szó, és fizikailag nem fér el benne, ezért is vagyok rákényszerülve a saját szabályzó építésére.
(#) Hp41C válasza giskard hozzászólására (») Jan 18, 2016
Remélem még nem borítottad ki a kukádat...
Tools / Use Vpp First Programming Entry csodát tehet a 16f884 -eiddel.
(#) giskard hozzászólása Jan 18, 2016
Már a harmadik 16f884 megy tönkre programozáskor (nem áramkörben programozva).
Programozó: pickit2 gyári (pl. f627-est rendesen programozza).
A szűz IC-t felismeri bekapcsoláskor, programozáskor már nem.
(valaha volt már hasonló probléma, de már nem emlékszem (valamit nem volt szabad úgy kofigurálni ?))

__CONFIG _CONFIG1,_DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_OFF & _WDT_OFF & _HS_OSC
__CONFIG _CONFIG2,_WRT_OFF & _BOR21V

Tud valaki segíteni ?
(#) tango51 hozzászólása Jún 24, 2014
Üdv mindenkinek.
Köszönöm az eddigi válaszokat és linket. Még egy kérdés lenne. Ha a 16f84 helyett
16f884 vagy 887-et használok a 16f84-es progija probaképpen betölthetö-e és müködik-e
vele. Ugyanis igazábol egy többfunkcios müszer lenne. L-C-ESR-F.
(#) kokesz185743 hozzászólása Aug 14, 2013
Amikor próbáltam beégetni a programot az 16f884-be, akkor ezt az üzenetet kaptam:

"Programming Target (2013.08.14. 23:06:41)
PK2Error0009: Write failure (GetLastError = A művelet sikeresen befejeződött.)
PICkit 2 Ready"

lenne pár kérdésem ezzel kapcsolatban:

1. nem tudom, hogy ilyenkor a PIC égetése sikeres volt-e
2. az MPLAB-ban a VDD-t ON-ra állítottam be (programmer-->set Vdd on)
ez azt jelenti, hogy a pickit2 az USB-ről kapja a tápfeszültséget az égetéshez.
3. a pk2-őt úgy kötöttem rá az USB-re, hogy már a PIC már rá volt dugva és ezután nyomtam meg az mplab-ban a connect gombot.
(#) Hp41C válasza kokesz185743 hozzászólására (») Júl 26, 2013
Szia!
A PGM lábal Vss -re kell húzni 10k -val. Az LVP minden törlés után enegedélyezett lesz.
Ha a 16f884 már fel volt programozva és a konfigurációban belső oszcillátor engedélyezett, MCLR funkció letiltva, a bekapcsolási időzítő letiltva és a PGC és / vagy PGD láb kimenetnek van felprogramozva közvetlenül a program elején: PICkit2 saját kezelőprogramjában a "Use Vpp first programming entry" funkciót bekapcsolva próbáld. Ekkor a programozónak kell adni a Vdd feszültséget. Érdemes a program legelején egy néhány ms -os várakozást beiktatni a lábak kimenetté állítása elé. Ekkor az automatikus felismerés sem működik valószínűleg, állítsd át a programot "Manual device select" -re, a Device menüben válaszd a "Midrange / Standard" csdaládot, a listából pedig a 16f884 -et.
Ha az adapteredet csak programozásra használod, a MCLR ellenállása inkább a Vss -re menjen.
A hozzászólás módosítva: Júl 26, 2013
(#) Hp41C válasza bbazs hozzászólására (») Máj 18, 2012
Szia!

Keress egy kicsit a topikban: Bővebben: Link Ugyan nem teljes kapcsolás, de a program benne van...
(#) _vl_ válasza Soós Antal hozzászólására (») Ápr 18, 2012
Ha:
- kell a 18F széria tudása
- kell, hogy 5V-ról menjen
- kell, hogy DIP-tokkal elérhető legyen
- kell 28-nál több láb
akkor a K22 végűeket nézegesd, pl. a 45K22 kétharmadába kerül a 4520-nak, és minden paraméterében ugyanazt tudja vagy többet. (pl. van benne két USART!)

Ha a fentiek közül le tudsz mondani az 5V-ról, elég a 3.3V, akkor választhatod még a J10 és a K20 végűeket is, ők valamivel olcsóbbak. A J10-ben nincs Data EEPROM.

Ha kell az 5V, de nem kell a 18F, akkor meg lehet nézni az Enhanced midrange szériában a 16F1519-et, a 16F1937/39-et, vagy a sima 16F-ből a 16f884/887-et, ezek ilyen nettó 450-550 körüliek.

Idézet:
„Mit jelent a K és ha mindenben jobb akkor miért olcsóbb gondolom van valami hátránya.”


Alapvetően azért olcsóbb, mert később jelent meg. Az újabb, korszerűbb cuccokat a Microchip általában alacsonyabbra lövi be árban, a régiek árát pedig nem csökkenti, így "szoktatva" át a népeket az újabb termékekre. Meg lehet pl. nézni a 16F84A vagy a 16F87x-ek árát...
(#) Hp41C válasza MrBrown hozzászólására (») Márc 7, 2012
Szia!

Ezt valóban nem én írtam, benne is van a forrásban a szerző: Uwe Nagel. Az általad emlegetett 4 csöves Nixie óránál is szerepel a szerző:
Idézet:
„Köszönet illeti Uwe Nagel-t a szoftverért!”


Merő véletlen lenne? ?
Nem. Egy kicsit átírtam a programot 2010 nyarán. Más kontrollerre és nem multiplexált kijelzésre.

Itt választható az órajel:
  1. ;****** Konstanten
  2. ;#defineTICKS109; NTSC-Quartz (ungenau)
  3. ;#defineTICKS122; 4 MHz (ungenau)
  4. ;#defineTICKS100; 3,276800 MHz (genau)
  5. #defineTICKS128; 4,194304 MHz (genau)

A 13. és 14. lábakra megy a quartz.

Azt is írtam, hogy ment a görcsölés a quartz körül, pedig a 16F628(A) ... 16f884 rendelkezik Timer2 -val és CCP modullal, amivel kerek 4MHz -ből is pontos órát lehet kihozni.

RA4 -en levő nyomógomb vált dátum kijelzésre. Beállítás nincs benne.
(#) kormika válasza vilmosd hozzászólására (») Júl 11, 2011
Igen, ezeket elmondta az is akitől kaptam, van valós RS-232-őm, letöltöttem a sofware-t feltelepítettem, és egy egyszerű LED villogtatásos progit belenyomtam vele egy 16f884-be, engem igazából gyakorlati tapasztalatok érdekelnének, mennyiren megbízható, fejleszthető-e a későbbiekben, ilyesmik, persze, ha már találkozott valaki ezzel a programozóval...
(#) Hp41C válasza watt hozzászólására (») Jún 13, 2011
Sajnos nem...

A 16F886 és 16F887 8 belső latch -vel rendelkezik és programozható 8, 4 és 1 szavas módon, a 16F882, 16F883, 16f884 csak 4 latch -vel rendelkezik és csak 4 és 1 szavas módon programozható. ld.: 3.2 Program/Erase Algorithms @ DS41287C-page 11.
(#) Hp41C válasza n_yálastrubadúr hozzászólására (») Ápr 28, 2011
Sziasztok!

ps1:
A JDM bitenként megnegálva programozta be a programutasításokat.

ps2:
Akkor tapasztaltam ilyen címeltolódást, amikor a programozó nem töltötte fel teljesen a pic belső tárolóit.
A 16F883 és 16f884 -nek 4 darab, a 16F886 és 16F887 -nek 8 darab belső tárolója van.
(#) szilva válasza szitko hozzászólására (») Feb 16, 2011
Ez azért fura, mert én használtam ilyen PIC-eket, és sosem volt gondom a PK2-vel a saját programjával, inkább az MPLAB-nak találtam bizonytalannak a PK2 kezelését. Most éppen egy olyan hardvert gyűrök, amibe 16F882-t terveztem, volt is benne az elején olyan, aztán próbáltam 16F883-mal is, majd most éppen 16F886 van benne, de csak a fejlesztés könnyebbsége miatt (több memória, hogy a fejlesztéskor bekerülő tesztrutinok miatt ne kelljen szűkölködni). Ezek mind DIP tokos cuccok. Ezen kívül van egy 28 pin demo boardom, amiben DIP tokos 16F886 van, azon szoktam rendszeresen kipróbálni a szerelt-élesztett klónokat, miután mindent végigmértem, és van egy 44-pin demo boardom is, amiben TQFP-s 16F887 van. Konkrétan 16f884 nem volt a kezemben, de a család többi tagját mindet használtam többször is, és sosem volt gondom velük, sem eredeti PICkit2-vel, sem klónnal.

Ezt nem azért írom, mert nem fordulhat elő, hogy valaki más ellenkező dolgot tapasztal, csak én nagyon rácsodálkoztam a lentebb írt észrevételekre.
(#) Balázs 1.3 JTD válasza trudnai hozzászólására (») Feb 15, 2011
Hát a programozó kábelre azért nem gyanakszom, mert számtalan PIC-et égettem már vele (az előbb le is írtam, hogy most is megnéztem 3at)

100nF ott van, semmi más nincs mert dugdosós panelen van.

Holnap megnézem egy rövidebb kábellel hátha, de szerintem nem az lesz a ludas.

2db teljesen új 16f884-el próbáltam, mind2 szórakozik velem.
(#) Balázs 1.3 JTD hozzászólása Feb 15, 2011
Sziasztok! Van valakinek tapasztalata 16f884-el? PICkit2 bizonytalanul égeti (5ből 1szer) nem ismeri be, nem olvassa ki csak minden 5. alkalommal. Mitől lehet? Úgyonazzal a kábellel használom, mint eddig! Sok PIC-kel jó volt már. Minden VDD és VSS láb be van kötve. Bekötést átnéztem mégegyszer, nincs hiba
(#) Hp41C válasza MolnarG hozzászólására (») Aug 31, 2010
Szia!

A jelenlegi program nincs 256 utasítás, a legkisebb szóbajöhető picben is van legalább 4k, de mindnek van 8-k verziója is. Az árkülönbözet nem éri el a 200 Ft-ot... Sok-sok megjelenítési mód beleférne.

Milyen kontrollerre tervezzünk: 16F74 @ 950, 16F77 @ 1090, 16F747 @ 910, 16F777 @ 1010, 16F874 @ 1250, 16F874A @ 1040, 16F877 @ 1440, 16F877A @ 1120, 16f884 @ 460, 16F887 @ 500? Milyen tokozás (a fenti árak dip40 tokosak netto árai)? Ez is lényeges, mert az smd-hez az ICSP programozási csatlakozó is kellene. A nixie-k mérete nem igényli az smd-s panelt...
(#) Hp41C válasza MolnarG hozzászólására (») Aug 30, 2010
Párhuzamosan hajtott 6 csöves nixie óra:
Ha Valakinak van kedve, tervezzen egy panelt az alábbiak szerint:
- Kontroller : 16F74, 16F77, 16F747, 16F777, 16F874(A), 16F877(A), 16f884, 16F887, 16F914, 16F917 - 40 lábú tok, mindkét földjét - tápját be kell kötni, közvetlenül mellé 100nF kerámia kondenzátorok kellenek.
- Bemenet: RA0 - DCF77 vevő jele ugyan úgy mint az eredetiben,
RA4 - nyomógomb 10k felhúzás - ha nyomva tartjuk a dátum jelenik meg az idő helyett,
RE 2..0 - Nem használt bemenet - 10k felhúzás a leendő nyomógomboknak...
- Kimenetek:
RA3..1 - DCF állapot kimenetek,
RD 3..0 - 1 másodperc D, C, B, A bcd kódja,
RD 7..4 - 10 másodperc D, C, B, A bcd kódja,
RB 3..0 - 1 perc D, C, B, A bcd kódja,
RB 7..4 - 10 perc D, C, B, A bcd kódja,
RC 3..0 - 1 óra D, C, B, A bcd kódja,
RC 7..4 - 10 óra D, C, B, A bcd kódja.
A kapcsolásból ekkor elmaradnak a MPSA tranzisztorok, csak a glim-é marad. Az anód ellenállások közvetlenül mennek a nagyfeszültségre, értékük 62K - 1 W - 3 raszter. A nyomtatásnál nagyobb helyet hagyni nekik. Az alap panel kiegészül még öt (összesen 6 db lesz rajta) 74141 -gyel. Még nem dolgoztam át az időzítést, az órajel marad a 3.2768 MHz.
Itt a programja, szimulátorban fut, a kiválasztott kontrollere le kell fordítani - ennyifélét csak összekevernék...
(#) Hp41C válasza Hp41C hozzászólására (») Aug 28, 2010
Párhuzamosan hajtott 6 csöves nixie óra:
Ha Valakinak van kedve, tervezzen egy panelt az alábbiak szerint:
- Kontroller : 16f884 - 40 lábú tok, mindkét földjét - tápját be kell kötni, közvetlenül mellé 100nF kerámia kondenzátorok kellenek.
- Bemenet: RA0 - DCF77 vevő jele ugyan úgy mint az eredetiben,
- Kimenetek:
RD 3..0 - 1 másodperc D, C, B, A bcd kódja,
RD 7..4 - 10 másodperc D, C, B, A bcd kódja,
RB 3..0 - 1 perc D, C, B, A bcd kódja,
RB 7..4 - 10 perc D, C, B, A bcd kódja,
RC 3..0 - 1 óra D, C, B, A bcd kódja,
RC 7..4 - 10 óra D, C, B, A bcd kódja.
A kapcsolásból ekkor elmaradnak a MPSA tranzisztorok, csak a glim-é marad. Az anód ellenállások közvetlenül mennek a nagyfeszültségre, értékük 62K - 1 W - 3 raszter. A nyomtatásnál nagyobb helyet hagyni nekik. Az alap panel kiegészül még öt (összesen 6 db lesz rajta) 74141 -gyel. Még nem dolgoztam át az időzítést, az órajel marad a 3.2768 MHz.
Itt a programja, szimulátorban fut, még rövidebb is mint az eredeti..

Nixie_884.zip
    
(#) Hp41C válasza p_istvan hozzászólására (») Aug 28, 2010
Szia!

A 16F84 lecserélése 16F883-ra fele árért, a 28 lábon kialakítható közvetlen párhuzamos vezérléssel, ne lenne egyszerűbb??? (2 föld + 1 táp + 2 oszcillátor + 1 dcf + 4 anód + 4*4 bcd +1 MCLR= 27 láb. Még marad 1 vagy 2 (ha MCLR-t bemenetnek használjuk) más funkcióra (pl. impulzus sorozat kiadása a nagyfeszültségű tápnak - ha kimarad impulzus kikapcsolna a táp, megvédve a csöveket). (6 csöveshez a 16f884: 2 föld + 2 táp + 2 oszcillátor + 1 dcf + 4 anód + 6*4 bcd +1 MCLR= 36 láb). Ráadásul ott van benne a timer2, ami lehetővé tenné, hogy sokféle kerek frekvencijú kvarccal pontos legyen az óra... Az az 1.4W egy hónapban 1KWh....
Én inkább átírnám a programot...
(#) szilva válasza hackerfish hozzászólására (») Jún 8, 2010
16F84 helyett a 16F627/628/648 szokott helyettesítőként felmerülni. Ezek gyakorlatilag lábkompatibilisek a 84-gyel, sajnos a firmware-be bele kell nyúlni a helyettesítéskor, így olyan projekteknél, ahol csak a hex érhető el (nincs forráskód), ott talán érdemesebb nem szenvedni a portolással (hex-ben túrkálva), hanem venni egy 84-et, sajnos sokkal drágábban.

Ha viszont saját cuccokat szeretnél kitalálni, akkor javasolni tudom a 16F882/883/884/886/887 családot, ezek nagyon jól eltalált mikrovezérlők, a 16F882/883/886 28 lábú, a 16f884/887 pedig 40 lábú kivitel. A magjuk gyakorlatilag ugyanaz, az eltéréseket (memóriaméret és hasonló apróságok) ki kell lesni az adatlapból. Fejlesztéshez érdemes beszerezni 16F886-ot és 16F887-et (28 és 40 láb, minden megvan bennük), majd a végleges cuccba lehet a kisebbik testvért tenni, ha elég hozzá.

Érdemes elgondolkodni talán 18F-eken is, pl. a 18F2321/4321 szintén 28 illetve 40 lábú, viszonylag barátságos áron, vagy ami még elég jó árban, az a 18F2550/4550 (28, 40 láb), amikben USB illesztő is van.

De persze ha van egy speciális igény valami különleges fejlesztéshez, akkor ahhoz is lehet találni jól illeszkedő PIC-et. A fentiek általános célokra, fejlesztésekhez eléggé bevált alaptípusok.
(#) efiscp válasza bbalazs_ hozzászólására (») Nov 8, 2009
Itt a kód, amúgy 16f884

cblock 0x20
seged1
endc

org 0x00
goto init

org 0x04
bcf INTCON,T0IF ;T0IF törlés
movlw b'11111111'
xorwf seged1,W
movwf PORTC
movwf seged1 ;seged1&PORTC invertálás
retfie

init
bsf STATUS,RP0 ;BANK1-be lapozás
movlw 0x00
movwf TRISC ;PORTC kimenet
bsf OPTION_REG,PS0
bsf OPTION_REG,PS1
bcf OPTION_REG,PS2 ;előosztó=011
bsf INTCON,GIE ;GIE 1
bsf INTCON,T0IE ;T0IE 1
bcf STATUS,RP0 ;BANK0-ba lapozás
movwf PORTC ;PORTC=0
movwf seged1 ;seged1=0
goto loop

loop
nop
goto loop

end

Szerk: a tabokat kiszedte a fórum motor, de benne vannak.
(#) geri303 hozzászólása Szept 19, 2009
Hali mindenkinek!

Készítettünk egy órát fotomen32-vel alias Jánossal. Gondoltam megosztom, ne csak mindig vicsys órát lássatok
Az órát fotomen tervezte és én programoztam. A lelke egy PIC 16f884, és mellette egy RTC IC. Semmi portbővítő.
Az óra közepén hétszegmenses, körülötte pedig 60db SMD LED (kék). A hátulján 4 db SMD gomb a beállításnak.
Ébresztője is van. És elemje is, ha elmenne az amper .
Itt egy : Videó

Mellékelek egy képet is.

S5001917.jpg
    
(#) Hp41C válasza Hujikolp hozzászólására (») Aug 22, 2009
Szia!

Az I2C egyszerű programozásához az MSSI modul kell. Sajnos ilyen nincs a 16F871-ben, a nagyobb testvérekben (16F874(A), 16F877(A), ill. a feleannyiba kerülő 16f884, 16F887) benne van.
Nézd meg ezeknek a típusoknak az adatlapját, és a Microchip AN976-ot.
A 16F871-el is meg lehet csinálni - ha jól emlékszem a tervedben az E port csak az I2C-é. Nézd meg a topikokban a 16F628-cal megvalósított Wand ill. Propeller órát. A forrásban megtalálod a SW I2C kezelő rutinokat. Itt csak a portot és a bitet kell átírni az E port címére és a kiszemelt bitre....
(#) Hp41C válasza Hujikolp hozzászólására (») Júl 15, 2009
Szia!

Pont a 16F871-ben nincs MSSI. A 16F874 , 16F877 már van, a 16f884 és 16F887 is rendelkezik vele és feleannyiba kerük. Az utóbbi kettőben van "Ultra low power wake up" lehetőség is.

Szia
(#) Hp41C válasza Hujikolp hozzászólására (») Júl 15, 2009
Szia!

A pic tápjának megszünése után a belső védődiódáján kialakuló áram kb egy hét alatt lemeríti az elemet. Az RTC -hez tartozó I2C vonalakak felhúzó ellenállások is a pic tápjára kell kötni, különben az azokon átfolyó áram miatt merül az elem. (Kipróbáltam...)
Az újabb pic-eken (16f884-887) van "Ultra low-power wake up", ami csak 200nA-rel terhel.

Szia
Következő: »»   1 / 2
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