Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Ú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
Igen, és az is jó, hogy nem kell minden programozás után újból beállítani az időt.
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....
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.
Ööö 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
Hali.
A nyomógomboknál egy kicsit elakadtam. Az a gond hogy beállítom a portd-n levő felhúzókat így:
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.
Elkészült a program. Rájöttem hogy van. Működik. Köszönöm a segítséget
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...
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.
Átjavítottam de a 0-ás 1-es és a 2-es biteken levő ledek állandóan világítanak.
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.)
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.
Szia! Hol olvastad? Engem is érdekelne a cnc-m miatt.
Elvileg működnie kéne, mert teljes értékű lpt port.
Itt olvastam, bár lehet, hogy nem hagyományos PCI-os LPT porta vonatkozik.
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.
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...
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.
Elmés megoldás. Csak azt nem értem, hogy a 65536 miért nem kapott pontot.
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.
Feledékenységből...
Persze, mindent módot ismernek a dsPIC-ek. Miután azt sem írtad milyen PIC-ről van szó, ennyit tudok mondani.
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.
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!!
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)
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?
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.
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.
|
Bejelentkezés
Hirdetés |