Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   829 / 1319
(#) cua válasza watt hozzászólására (») Nov 6, 2010 /
 
Úgy látom ebben egyezik az ízlésünk Kacérkodtam a PIC frissítéssel (régebbi típusokat használok), főleg az RTC miatt, de mivel úgyis kell hozzá külső kvarc, így marad az r2025. Főleg mivel azzal nem kell bíbelődni (software-ből figyelni ha leesik a tápfesz és elmenni energiatakarékos módba), kap egy elemet + két diódát és kész a backup
(#) watt válasza cua hozzászólására (») Nov 6, 2010 /
 
Igen, és az is jó, hogy nem kell minden programozás után újból beállítani az időt.
(#) Balázs 1.3 JTD hozzászólása Nov 6, 2010 /
 
Sziasztok.

Lenne egy gyors kérdésem. Ismerkedem a PIC programozással. Írtam már 1-2 saját programot. Most eljutottam oda, hogy (egyelőre teszt jelleggel) szeretnék a számítógépem és a PIC között kommunikációt létrehozni. Egyelőre annyit szeretnék, hogy a PICkit2 Uart tool segítségével oldódjon meg ez a dolog. Egy 16F628-as (ezt találtam itthon, többi elfogyott ) lenne az alany. Annyit szeretnék, hogy lenne 2 gomb, az egyikkel egy regiszter értékét növelném. A másik gombbal pedig a regiszter értékét elküldeném a számítógépnek. Tudom ennek így egyelőre semmi értelme, abszolút csak teszt jellegű a dolog. A kérdésem az lenne, hogy ha jól értelmeztem pár hozzászólást, akkor ha bemásolom a regiszter értékét a TXREG-be akkor az már magától küldi is? Nem találok start bitet....
(#) Hp41C válasza Balázs 1.3 JTD hozzászólására (») Nov 6, 2010 /
 
Szia!

A TXREG -be történő írás előtt azért el kell végezni néhány dolgot. Be kell állítani a BaudRate -nek megfelelő értéket (SPBRG regiszter) és osztást a (TXSTA:BRGH). A 16F628 adatlapja táblázatokat tartalmaz a beállításokhoz. Engedélyezni kell az egységet (RCSTA.SPEN) és az adást (TXSTA:TXEN). Ha ezeket elvégezted, a TXREG írható, ha a PIR1:TXIF == 1. Ez a jelzőbit a TXREG írása után automatikusan törlődik - csak néhány utasításnyi idővel később.
(#) Balázs 1.3 JTD válasza Hp41C hozzászólására (») Nov 6, 2010 /
 
Ööö igen ez még részemről természetes. De a kérdésre nem kaptam konkrét választ, a beállítások után, amint beírok TXREG-be egy adatot azonnal küldi is ki? Vagy van valami küldést indító bit?

Ui:Köszi a gyors reagálást
(#) edison14 hozzászólása Nov 6, 2010 /
 
Hali.

A nyomógomboknál egy kicsit elakadtam. Az a gond hogy beállítom a portd-n levő felhúzókat így:
  1. MOVLW   B'01111111'
  2. MOVWF   OPTION_REG

Ezzel bekapcsolom a felhúzókat és a porton ha minden igaz akkor 1-es szintet kéne látnom. Nos ez meg is van csak az a gond hogy a D porton 2 led világít aminek az okait nem tudom és mikor a program elér a gombnyomáshoz akkor másik 3 led kezd el világítani ott ahol a gombnyomás után kéne világítaniuk a ledeknek. Nem értem hogy mi lehet a baj? Felteszem a kódot is hátha abban van valahol a hiba.

Köszönöm a segítséget.

gomb.asm
    
(#) Balázs 1.3 JTD válasza Hp41C hozzászólására (») Nov 6, 2010 /
 
Elkészült a program. Rájöttem hogy van. Működik. Köszönöm a segítséget
(#) Hp41C válasza Balázs 1.3 JTD hozzászólására (») Nov 6, 2010 / 1
 
Szia!

Ha beírod, máris küldi...: Start bit, 8 adatbit (a 9. bit-re van lehetőség), 1 stopbit. Ha üres a puffer, PIR1.TXIF 1 lesz, lehet írni a következőt...
(#) Hp41C válasza edison14 hozzászólására (») Nov 6, 2010 /
 
Szia!

Ha a gomb nincs lenyomva, a vissza cimkénél nem 0 kerül a PORTD regiszterbe, a movwf PORTD a W aktuális értékét írja ki. Közvetlenül a vissza címke után kellene egy clrw utasítás.
(#) edison14 válasza Hp41C hozzászólására (») Nov 6, 2010 /
 
Átjavítottam de a 0-ás 1-es és a 2-es biteken levő ledek állandóan világítanak.
(#) L2773 válasza potyo hozzászólására (») Nov 6, 2010 /
 
Hali!
Kérdésem:
Az Oshon PICProgParallel működik az újabb alaplapokból (estleg) hiányzó LPT portot PCI-os LPT porttal "pótolva"?
Kérdem ezt, mert végigolvastam a 830 oldalból jó párat, meg watt által bemutatott WLPT Vpp mini v4-et, de nem találok erre utalást? S olvastam egy LPT-s CNC vezérléssel foglalkozó oldalon, hogy gondot okozhat...
WinXP, Windows 7 alatt? Ha van erre tapasztalat
(Láttom, hogy az ICPrognak is külön XP drivere van.)
(#) szaffo555 válasza Ideiglenes hozzászólására (») Nov 7, 2010 /
 
Még mindig érdekelne kinek volna ötlete a Compare - Timer1 programom működési hibájával kapcsolatosan.
A kérdés lényegében itt van

És hogy válaszoljak Ideiglenesnek a megszakítások priorizálása valóban nem fontos ebben a kódban, de maga a progi egy bonyolultabb program része, és már előre így állítottam be őket. Mellesleg nemhiszem, hogy komoly zavart okoznának, mert nem a megszakítás kezelésével van a gondom...hanem egyfelől értelmetlen időzítéseket kapok.
És a használt PIC 18F67J10.
(#) dinokal válasza L2773 hozzászólására (») Nov 7, 2010 /
 
Szia! Hol olvastad? Engem is érdekelne a cnc-m miatt.
Elvileg működnie kéne, mert teljes értékű lpt port.
(#) L2773 válasza dinokal hozzászólására (») Nov 7, 2010 /
 
Itt olvastam, bár lehet, hogy nem hagyományos PCI-os LPT porta vonatkozik.
(#) icserny válasza L2773 hozzászólására (») Nov 7, 2010 /
 
Az első bukfenc az lehet, ha a program nincs felkészítve a "nem hagyományos" portcímek kezelésére. A belinkelt leírásban pl. 0xfcf8 és 0x9800-as címek szerepelnek példaként.
(#) Ideiglenes válasza szaffo555 hozzászólására (») Nov 7, 2010 / 1
 
Látom, te sem kíméled magad - hajnal kettőkor még fórumra írni.
Szerintem nem kerek 5ms-onként jönnek azok a megszakítások, hanem úgy kb 5,5 ms-onként.
A compare módban a timer 0-65535-ig szabadon fut. Ha elérte a maximumot, akkor kezdi elölről.
Frekvenciával számolva: 48MHz / 4 adja a belső ciklus frekvenciáját, ami 12Mhz. Ha ezt leosztod 65536-tal, akkor kijön, a 183Hz-es frekvencia, aminek a periódusideje nagyjából 5,5 ms.
A komparálási szintet ez esetben hiába állítod akárhova, az csak a kezdőpontot jelöli meg a folyamatban. Ha beállítasz 50-et, attól a timer1 számol tovább 65535-ig, majd ismét 0-tól és 50-nél kapsz egy megszakítást, te a timer1 fut tovább, ismét 65535-ig és így tovább...
(#) Hp41C válasza Ideiglenes hozzászólására (») Nov 7, 2010 /
 
Szia!

Szerimtem mégiscsak működne, pl. .50000 -rel kellene osztani:
0. lépés: Timer regiszterek nullázása
1. lépés CCPRxH:CCPRxL= (1 * .50000) % 65536 = .50000
2. lépés a CCPx megszakításban CCPRxH:CCPRxL = (2 * .50000) % 65536 = .34464
...
n. lépés a CCPx megszakításban CCPRxH:CCPRxL = (n * .50000) % 65536

A CCPRx megszakítások .50000 timer órajelenként jönnének.
(#) Ideiglenes válasza Hp41C hozzászólására (») Nov 7, 2010 /
 
Elmés megoldás. Csak azt nem értem, hogy a 65536 miért nem kapott pontot.
(#) messer hozzászólása Nov 7, 2010 /
 
Sziasztok, egy bipoláris 2fázisú léptetőmotrot szeretnék vezérelni microstepping módban dspic-el esetleg foglalkozott már közületek valaki a témával? A lényeges kérdés az volna, hogy a pwm modul tudná-e vezérelni szinkronban a tekercseket.
(#) Hp41C válasza Ideiglenes hozzászólására (») Nov 7, 2010 /
 
Feledékenységből...
(#) watt válasza messer hozzászólására (») Nov 7, 2010 /
 
Persze, mindent módot ismernek a dsPIC-ek. Miután azt sem írtad milyen PIC-ről van szó, ennyit tudok mondani.
(#) dinokal válasza L2773 hozzászólására (») Nov 8, 2010 /
 
Csak a régi kártyák voltak kézzel beállíthatóak, az újak már mind ilyenek. Teljes értékű LPT port. Csak akkor van gond, hogyha a programban nem lehet a port értékét beállítani, mert csak a normál fix értékekkel dolgozik. Sajnos régi programok csak így használják, ezek felejtősek, nem tudnak együtt dolgozni a kártyával.
(#) L2773 válasza dinokal hozzászólására (») Nov 8, 2010 /
 
Hát akkor gondolom, hogy az Oshon tudja kezelni azokat, mert egy időben lehetett látni kérdéseket, hogy velük mi van, de a Parallel Port PIC programmer a 18F szériát is támogatja.
Kösz minden esetre, s a gyakorlat megmutatja (mihelyt időm lesz összerakok egy égetőt), hogy jól használható-e!!
(#) szaffo555 válasza Ideiglenes hozzászólására (») Nov 8, 2010 /
 
Ez jogos, tényleg semmi nem akadállyozza meg Timer1 -et abban, hogy tovább számoljon. A komparálási szintnél lesz egy megszakításom, de aztán 65535 lépés után megint lesz egy. Ebből tényleg 5,5 msec os megszakításaim lesznek. Most akkor ez így arra jó, hogy a Timer1 indulása után a komparalálási szint beállításának függvényében késleltetem az első megszaítást.
A jó működéshez az kellene, hogy TMR1 számlálói resetelődjenek a komparálási szint elérésekor. Ehhez a megszakítás rutinban elhelyezhetném az alábbi kódot: (nem kell számolnom TMR1 túlcsordulással, így elegendő egyszerűen is megoldani)
  1. clrf  TMR1H
  2. clrf  TMR1L

Ez talán működne is, de olvasok olyasmit, hogy hardveresen is van lehetőség resetelni a számlálókat. Ez némileg szebb megoldás lenne, ráadásul gyorsítaná az időritikus részben a kódomat is.
Idézet:
„A Compare üzemmód értékegyezése esetén kiváltható belső események:
ˇ a Timer 1 számláló nullázása (a TMR1IF megszakításkérő jelzőbit aktiválása nélkül), amely a "Belső esemény indítás" engedélyezése esetén minden esetben végbemegy;
ˇ A/D-konverzió indítása.”

Sajnos erre a CCP modulról kierőszakolható TMR1 resetre aztán nem találok semmi konkrét beállítási lehetőséget.
Tudtok erre megoldást?
(#) watt válasza szaffo555 hozzászólására (») Nov 8, 2010 /
 
A CCP modul leírásánál keresd.
(#) szaffo555 válasza watt hozzászólására (») Nov 8, 2010 /
 
Ja igen, azthiszem megvan:
CCPxCON regiszter:
Idézet:
„1010 = Compare mode: generate software interrupt on compare match (CCPxIF bit is set,
CCPx pin reflects I/O state)
1011 = Compare mode: trigger special event, reset timer, start A/D conversion on
CCPx match (CCPxIF bit is set)”

Én b'1010' re állítottam, arra gondolva, hogy CCPx lábak ettől megmaradnak szabad felhasználású I/O ként, akkor még nem is gondolva arra, hogy a "special event" fontos lehet. Most nem tudom a Pin -ek megmaradnak -e, vagy kimentként definiálódnak a CCP modulhoz tartozóan.
(#) watt válasza szaffo555 hozzászólására (») Nov 8, 2010 /
 
Ott nem él a spéci trigger.
(#) szaffo555 válasza watt hozzászólására (») Nov 8, 2010 /
 
No ezt hogy érted?
Kifejtenéd?
(#) watt válasza szaffo555 hozzászólására (») Nov 8, 2010 /
 
A 1011-nél él a speciális trigger esemény(Timer1 reset, stb.) a többinél nem. Én legalább is így értelmezem az adatlapot.
(#) szaffo555 válasza watt hozzászólására (») Nov 8, 2010 /
 
Igen, én is. De 1010 nél úgy értelmezem megmaradnak a lábak I/O ként. 1011 nél nem mond semmit róla. Pedig nekem kell a CCP4 és CCP5 (RG3-RG4) láb.
Következő: »»   829 / 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