Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
És mi a hibaüzenet, ha olyat írsz, amit nem fogad el?
Ezt most nem értem, hol kapok hiba üzenetet?
MPLAB + ICD2 debuggerel dolgozok Egy másik PIC-re írt programomat akartam átrakni egy új hardverre és PIC-re, de nem tudom az RC7 lábra tervezett bemenetemet életre kelteni.
Azt írod, a TRISC = 0x1F-et fogadja el csak. Akkor mi történik, ha ehelyett pl. 0x2F et írsz?
Kicsit pontosabban is leírhatnád a problémádat, és csatolj kódrészletet, hogy mit hogyan állítasz.
Debugger próbáltam közvetlenül a regisztert módosítani /0xFF/ majd lépj egyet és látom, hogy 0x1F-let az értéke. Bármit elfogad ami nem nagyobb mint 1F de ha nagyobbat írok leveszi a többletet.
Persze az adatlapban lévő PORTA LATA TRISA beállításakor sem meggy a dolog.
ANSEL = 0
ANSELH = 0 PORTC = 0 LATC = 0 TRISC = 0xFF SSPADD = 5 SSPSTAT = 0 SSPCON1 = 0x28 SSPCON2 = 0
Debugger alatt szimulatort ertesz? Nem lehet, hogy az a hibas? (Nem ez lenne az elso eset)
Szia trudnai!
Nem szimulátorban megy, de valós debugolásnál jön elő a próbléma.
Sziasztok !
Abban kérném a segítségeteket hátha tudtok nekem segíteni abban, hogy PIC mikrokontrollerre hol tudnék olyan matematikai függvényeket (acos, cos, sin ) találni amelynek az eredménye 6 tizedes jegynél több ( 1.047198 ). Amit ismerek C fordító ( High tech, Mikroe ) az csak 6 tizedes jegyig adja meg az eredményt. Köszönöm Sanyi
Szia!
A sin, cos Taylor sorba fejtett alakja (1/x)^n alakú tagokból all. Ezeket a tagokat számolja a fordítóban levő rutin is, míg a legutoljára hozzáadott tag abszolut értéke egy bizonyos érték alá nem csökken. Itt megint előjön a számítási pontosság: A 6 tizedes jegy kb. 20 bites alapot igényel. A 32 bites double 24 bites alapot tartalmaz.
Sziasztok!
Írtam egy programot amiben növelem az "osszes" változó értékét 10-el. Az értéket felbontom ezresekre százasokra tízesekre egyesekre. Majd elmentem ezeket a belső EEpromba. A PIC bekapcsolásakor pedig újra olvasom és az "osszeg" növelése onnan folytatódik. Ez működik 250-ig néha 300-ig szépen felbontja és a bekapcsoláskor ki is írja hogy PL.: 300 esetén 0 3 0 0. Viszont mikor 310-et kéne írnia akkor ezt kapom helyette 0 3 25 6. Néha ezt 250 után csinálja természetesen akkor 0 2 25 6-os értéket ír. Tudna valaki segíteni?
Valami a felbont függvénnyel lesz, bár első ránézésre jó.
Miért nem tárolod le 2 bájton az EEPROMban simán? write_eeprom(0x0, osszes/256); write_eeprom(0x1, osszes%256); osszes = read_eeprom(0x0)*256 + read_eeprom(0x1)
Köszönöm erre nem is gondoltam megpróbálom. Én is arra gyanakodtam mert ugye mindig egy adott pontnál és annak a többszöröseinél hibázik pl 300 600 900. De a függvény elméletileg jó. 100 szor átnéztem. Köszi még egyszer
Szia!
Sajnos a 1/10 egy végtelen kettedes tört... Csináld fordítva:
Ez 7 időigényes osztást tartalmaz... Minek ennyit osztogatni, egy egyszerű léptetős megoldás található itt, ami tetszőleges számjegyig bővíthető...
Szerintem egyszerubb lenne a helyzeted ha az EEPROM-ban csak az "osszes" valtozot mentened, az atszamitas csak a kijelzes elott tortenne meg. Igy csak 2 byte irasa es olvasasa szukseges. Mellekelek 2 fvenyt ami 16 bites int erteket irja, valamint olvassa az EEPROM-ba.
Nagyon szépen köszönöm a válaszokat Hp41C-nek és vilmosd-nek! Jó megoldás használom is! Köszi!
Helló,mindenki! Többszörös PWM-et szeretnék, de csak azonos (TMR2) frekivel csinálja. MIÉRT? De hardveresen ezt még nem próbáltam; lehet hogy csak az MPLAB nem képes? A mellékelt kód egy jóval nagyobb program részlete. Előre is köszönöm a segitséget.
A banksel-ek ott vannak a megfelelő helyen? Nekem ilyenen szoktak elcsúszni a dolgok.
Helló
Én egy kerék fordulatszámát szeretném mérni, PICel a kerékre raktam mágneseket amik egy hall jeladó előtt haladnak el, ezt vezetem bele a picbe. A probléma az, hogy játékautó motor adja a hajtást és nagyon sok zavart termel. Ha úgy írom meg a programot, hogy várja meg a PIC amíg logikai 1est kap a hall jeladótól, aztán számolja hány órajel telik el mire logikai 0 lesz, akkor tökéletesen működik minden, viszont a PICnek mást is kéne csinálnia, ezért úgy gondoltam megszakítással oldom meg, csakhogy itt a le- fel- futó élre következik be a megszakítás és úgy veszem észre a motortól jövő zavarjelre is megszakad a program, ha kézzel hajtom a kereket akkor minden tökéletes. A motoron van soros tekercs és tele van pakolva kondival(azt hittem egy életre megoldódik a zavargerjesztése). Van valami logikai áramkör komparátor amivel ezt meglehetne oldani vagy bármi más? Az egész egy 7,2V Nimh aksiról megy és sajnos más táplálás nem lehetséges.
Meg kell szurnod a tapot ami a PIC fele megy. Hogy nez ki jelenleg a kapcsolasod? (Rajzold le es tedd be a kepet)
Sziasztok egy furcsa kérdéssel fordulok hozzátok.
Azt szeretném kérdezni, hogy az ICD 3-as PIC programozóhoz árulnak e az rj12-es csatlakozóvégre átalakítót olyanra gondolok amibe beletudom rakni rögtön a PIC-et ?
Vehetsz valami ilyesmit is, de szerintem ezt borzalmas egyszeru otthon is ossze dobni... Kell hozza egy RJ12 aljzat, egy ZIF foglalat, es ha dugdosos probapanelen rakod ossze akkor meg tuskesorok sem kellenek a jumpereleshez...
Ha olcsobb kell akkor pedig ZIF helyett DIL tokot hasznalsz es minden tipusra kulon maratsz egy panelt igy jumperelgetned sem kell...
Hát lehet maradok az AC162069-nél egy egy vezetél aminek a vége tüskés és simán befér az ic lába mellé az univerzális foglalatba például vagy lehet csinálok hozzá egy kisebb panelt
"banksel CCP1CON;...5. bank inic" jó kell legyen, mivel CCP1CON (0293H) és CCPTMRS (029E) azonos bankban vannak a manuál szerint. CCPTMRS felelős a timerek PWM-hez hozzárendeléséért.
Elküldtem kérdésem a melléklettel együtt MICROCHIPnek is már, de fülükbotjátsem...
Sziasztok! Lenne egy olyan kérdésem, hogy nem-e tud valaki olyan programot, vagy módszert amivel tudom tesztelni a megírt programomat. A probléma valójában az, hogy amit ismerek program az a pic simulator ide, ami nagyon jó lenne, viszont a hét 5 napjában koleszba vagyok ahol olyan gépek vannak amikre nem tudok telepitteni semmit, és úgy ha felmásolom egy pendrive-ra és onnan akarom indittani hibaüzenetet ír ki. Valaki nem tudna erre megoldást? Előre is köszönöm
sziasztok azt szeretném kérdezni hogy hogyan tudom beállítani az ICD3-on hogy a PIC (16f628A) a programozóról kapja a feszültséget bármikor beállítom ki írja hogy nem sikerült beállítani a feszültséget az ICD-3on és nem akar semmit se ki olvasni. mit tegyek ? mit rontottam el ?
Target Device ID (00000000) does not match
expected Device ID (000007c0). If you experience persistent problems communicating, the ICD 3 test interface can be used to help diagnose the problem. Ezt az üzenetet kapom ha külön adok rá feszültséget.
MPLAB-ban ha beállítottad a Programmer vagy Debugger eszköznek az ICD3-at, akkor látogasd meg a Programmer/Settings... menüpontot és a Power lapon tegyél pipát a Power target cicuit from ICD3 felirat elé!
(Ja, nem volt még ICD3 a kezemben, csak megnéztem a menüpontokat...)
Ezt meg tetem utána fel urgik egy ablak és ha rányomok hogy OK akkor kiszedi a pipát a beállításokból.
Ha meg külön adok neki tápot akkor ICD3Err0086: Target Device ID (00000000) does not match expected Device ID (000007c0). If you experience persistent problems communicating, the ICD 3 test interface can be used to help diagnose the problem. Ezt az üzenetet dobja fel :S |
Bejelentkezés
Hirdetés |