Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Hogyan fogtal ossze ket timert hogy dolgozzanak egyutt?
bset T2CON,#3 ; T32 control BIT Timer 2-3 32 bites számláló
Ah, most esett le PIC24-ezel. Es a jelet pollozassal vagy interruptosan kapod el?
sziasztok!
Lenne egy olyan kérdésem, hogy a pic vezérlőket külső rádióhullámokkal meg lehet e zavarni?? Vagyis a timerek frekijét vagy magát az órajelet el lehet e tolni bármilyen mértékben is?? Az ismerősöm amatőr rádiós és kisérletezget pic-kel is, de sokszor olyan mintha elmászna a freki....csak nem tudtunk rájönni, hogy mitől, mert már mindent átnéztünk....és csak ez a lehetőség maradt, de nem tudjuk, hogy lehetséges e??
Meg lehet-e zavarni radiohullamokkal? Termeszetesen igen, ha pl tap nincs megfeleloen szurve. Elmaszhat-e ettol a freki? En inkabb megmagyarazhatatlan resetelesekre tippelnek ilyen esetben. Vagy ha a tap valtozik (mert pl adasra kapcsol es az leszippantja a tapot), akkor a PIC belso orajele eshet, igen.
PIC-et amugy sokan hasznalnak a radioamatorok kozul, van aki VFO-kat vezerel vele, vagy CW-hez csinalnak mindenfele okossagokat, de vegeredmenyben szinte mindenre fel lehet hasznalni. Ugy gondolnam, hogy nem lehet gond a PIC hasznalata egy radioamator allomason -- de azert a biztonsag kedveert korbe kerdeznek a klubban vagy az eteren keresztul.
PIC24-nél assembllerben hogy tudok definiálni portokat pl hogy LATC,#1-et LED jelzéssel adjak meg?
C-ben 18F4550-est programozok.
Egy elég egyszerű, hibába botlottam. (nekem bonyolult, mert nem jöttem rá a megoldásra)
Ha ezt a kódot a szimulátorban lefuttatom, akkor a TMP végeredményem 0x2134 helyett csak 0x34. Tehát 8 bitesként kezelte a TMP változót, holott én int-nek deklaráltam, és a szimulátorban is 16 bites. Mit rontok el, hiszen ez egy nagyon egyszerű művelet?
A 10. sorban két byte-os értéket szorzol, az eredményt is byteosan fogja kiszámolni. Az egyik operandust casting-olni kellene int-re, akkor remélhetőleg az eredmény is int lesz.
Köszi, ez megoldódni látszik.
Még egy kérdés. A simulátrorban van TMR1 16 bites SFR is. Ugyan azon a címen, mint a TMR1L. Gondolom, akkor valahogyan lehet nekik egyszerre értéket adni. Valahogy így: TMR1 = 0xAAFF; Van erre is valami megoldás?
TMR1 csak a 16 bites reprezentacioja a TMR1H:TMR1L parosnak. Ugyanarrol a dologrol van szo, kiveve, hogy a PIC 18F 8 bites architektura, ezert kell neki Low (TMR1L) ill. High (TMR1H) regiszter paros, hogy 2x8 azaz 16 bites erteket el tudjanak tarolni.
C-bol nyilvan egeszsegesebb a TMR1 = 0xAAFF; mint TMR1H = 0xAA; TMR1L = 0xFF;
Erre gondoltam én is.
De eddig ha használni akartam, akkor "symbol 'TMR1' has not been defined" hibaüzenetet kaptam. Ezért kérdeztem, hogy hogyan lehet rá hivatkozni.
probaldd meg igy:
Szia!
Kérdés, hogy milyen sorrendben írja/olvassa a két byte-ot ilyenkor. A TMR1 magas helyiértékő byte-jának egy buffere van. Ezt a buffert kell előbb feltölteni és utána írni a TMR1L-t, ekkor a 16 bit egyszerre íródik a tényleges TMR1 regiszterekbe. Olvasáskor fordítva, a TMR1L olvasása feltölti a buffert is. (TMR3 hasonlóan működik.) Ha a fordítóra bízzuk a sorrendet, az egyik művelet biztosan nem lesz jó...
Köszönöm válaszod!
Megnéztem a linkeket, hasznos volt! :yes:
Teljesen igazad van! Kell irni akkor egy get/set makro parost.
Hali!
Tanítható távirányítós lámpa ki-be kapcsoló projektbe kezdtem, már működik is. Viszont hogy ne felejtse el a kódot, eepromba szeretném menteni, a pic eepromjába. De nem sikerült az írás. Nemtudom hogy az icd2-őm van megbolondúlva,met szokott érdekes dolgokat művelni, vagy nem jól csinálok valamit... Szóval már írtam külön egy kis programot, ami csak beírna valamit az eepromba, de ez sem működik. Hiába olvasom ki az eepromot, csupa FF betű... Mellékelem a programot, ha valaki segítene,azt megköszönném nagyon!
Első ránézésre várd meg a WREN bit törlésével a WR bit nullába billenését.
Beleraktam ugyan, de semmi. Amúgy az eredeti programban benne volt.
Szia!
A CIM és ADAT változóid a Bank0- ban vannak, te pedig a Bank2- ből szeretnéd betölteni. A MOVFW utasításra nem dobott hibát, csak mert nem látom az utasításkészletben ?! Zárójelbe hozzátenném, hogy jobb lenne BANKSEL makrót használni, úgy talán jobban olvasható a kód. Legalábbis számomra.
A MOVFW-t makróként kezeli és a File Regisztert mozgatja a Work-be, tehát nem ad hibát! Szerintem nem célszerű használni, mert elírás esetén nagyon nehéz észrevenni!
Steve
Szóval makró. Így már értem. Én mondtam, hogy számomra jobban olvasható, ez nem jelenti azt, hogy másnak is. Amúgy sem értem milyen elírásról beszélsz. Elírod az SFR nevét?? Szerintem sokkal könnyebb elnézni azt, hogy milyen bankban van egy SFR, mint a nevét leírni. De ez is csak az én véleményem.
Szóval aza baj, hogy a bank0-ban vannak a cim meg az adat regiszterek? És akkor hogy tudom átteni bank2-be? Még sose volt ilyen problémám. Ha bank1-ben voltam,akkor is működött, hiába volt bank0-ban az adat. De még bank2 és bank3-at most használok először
Szóval csak a sorrendet kell lecserélni.
Soha nem jöttem volna rá!
Mostmár működik! Köszönöm szépen! Ezer hála!
Nem arra gondoltam, hanem, hogy azt akarod írni, hogy MOVFW PORTB és helyette MOVWF PORTB-t írsz ( vagy fordítva! ), amit simán elfogad és lefordít, valamint ha Te keresed a hibádat, akkor is könnyen átsiklasz efelett! Ezért jobb többünk szerint a MOVF PORTB,W utasítás ( ez egyébként a PIC "sajátja" ! )!
Remélem érted, hogy mit akartam írni... Steve
Jah, én azt hittem a BANKSEL javaslatom nem tetszett valamilyen okból kifolyólag. Amit írsz, azzal maximálisan egyet tudok érteni. Én is a movf ...,W- t részesítem előnyben, tekintve, hogy nem is ugrott be a MOVFW makró létezése.
Szervusztok!
Aktivizálom magam itt évek után végre.... Én nemsokára túl vagyok a technikus minősítőn és akkor szeretnék C nyelven tanulni PIC programozást. Van hátránya a C nyelvnek? (Assembly-hez nem nagyon értek. Azért szeretnék a C-vel programozni, mert azzal nagyobb progikat kevesebb sorban lehet megírni.) Üdv! hanter
Mondjuk ez így nem teljesen fedi a valóságot... Inkább azt mondanám az asm vs C-re, hogy ízlés dolga mint a műtrágya... Én speciel kedvelem a C-t.
|
Bejelentkezés
Hirdetés |