Fórum témák
» Több friss téma |
Sziasztok!
A segitsegeteket szeretnem kerni. dspiccel baratkozom es megakadtam a "villogjon a led"-nél. a hogyan repuljunk a pic24-el cimu konyv es az adatlap alapjan baratkozok egy dspic 30f3012-vel szigoruan C nyelven(asm nem fekszik), es eddig minden szepen ment, de most hirtelen elakadtam. a szimulator szerint mukodik a program, de a led a valosagban csak vilagit folyamatosan. Lehet hogy elszamoltam valamit az idozitonel, de a szimulator stopperje szerint kb fel masodpercenkent kene allapotot valtania a lednek, azt meg azert illene mar latnom. Valaki rakukkantana a forrasra hogy mi lehet a baj? Elore is nagyon koszonom udv Laci #include #define delay 200 int main(void) { //inputcfg TRISB = 0b00000000; //analog disable ADPCFG= 0b11111111; //timer1 cfg T1CON=0b1010000000010000; while(1) { PORTB=0b11111111; TMR1=0; while(TMR1 PORTB=0b00000000; TMR1=0; while(TMR1 }//while }//main >>
Hello!
Igaz még a ds sorozattal még nem nagyon foglalkoztam, de ahogy nézem vannak hasolóságok a 18-as szériával. Szerintem azért nem történik semmi mert a PORTx regiszterbe irsz, és mind a 18 szériában itt is van LAT regiszter(adatlap), azzal kell irní a lábakra TRIS irány PORT beolvasás LAT írás Jah és a kódban while(TMR1 {} rész mi akar pontosan lenni?
Hu hat ez gyors volt!
Koszonom szepen! Megprobalum ugy hatha az a baj. Nem ertettem mostanaig hgoy ez a LATx mire jo, de igy mar ertem koszonom szepen nagyon!
ja a whilet ugytunik lecsipte a kopipeszt eredetileg
while(TMR1 es elvileg ezzel var>
hmmm a forum csipi le
while zarojel TMR1 kisebb delay zarojelzar
Használd a kód beszurási lehetőséget(kötelezően ) kód beszurásnál,különben a Modik fognak kényszeríteni.
Milyen frekvencián megy a mikrovezérlőd, és mekkora előosztást állítottál be? A DELAY értéke gyanúsan kicsi. Lehet, hogy villog a LED, csak nem bírja a szemed követni...
Megpróbálkozhatsz ezzel a programmal. Itt 7.37 MHz-en ment a PIC24H mikrovezérlő (ennél nem Fosc/4 hanem Fosc/2 az utasításciklus). Az 1:256-os előosztással 2 Hz körüli frekvenciával villog. Az ODCB=0x8000 sort hagyd ki! Nálam open drain módba kellett tenni a kimenetet. Az #include-ot értelemszerűen cseréld le. Hasonlóan a kimenetnál a B15 billegtetése helyett kapcsolgathatod az egész PORTB-t. Csak akkor TRISB = 0 kell... Azt ne hidd el a többieknek, hogy a PORTB írása nem működik! Azt viszont nagyon szívleld meg, amit tanácsoltak, hogy a read-mofy-write utasításokat valóban a LATB regiszteren illik csinálni, így a külső terhelés (ami miatt lassan megy fel a feszültség a kimeneten) nem zavar be a túl hamar történő visszaolvasásnál. Kép: Hivatkozás
Valahogy így gondoltam az átírást.
A PORTB-t is átírtam LATB-re, hogy ne érje szó a ház elejét...
Nagyon szepen koszonom mindkettotoknek! MUKODIK!
o en balga! megtanulhatnam mar hogy a uSec meg a mSec kozott van egy par helyiertek
Ha netán érdekelne hogy miért is kell vigyázni a read-modify-write utasításoknál: Leirás
Hi!
Segítséget szeretnék kérni: dspic-et programozok (csak nemrég kezdtem) assembly-ben, és van egy olyan problémám, h ha változókat deklarálok a near data memoryban így: xxx .space 1 yyy .space 1 majd később mondjuk bele akarok írni a második byte-ba: mov #0x00,w0 mov w0,yyy elszáll a fordító hibaüzivel. (Invalid operands specified). Tudja valaki, hogy lehet hivatkozni így az egy byte-os adatra (asszem odd-ként emlegetik). Köszi szépen!
A MOV Wn,f utasítás alapértelmezetten szószélességű, ezért az f memóriacím csak páros lehet. A bájtszélességű művelethez használd a .B módosítót!
MOV WREG, 0x1000 ; szó szélességű adatmozgatás MOV.B WREG, 0x1001 ; a W0 regiszter tartalmának alsó 8 bitjét az 0x1001 című memória bájtba másolja Bővebben a honlapomon: PICkwik projekt
Köszi a gyors választ! Hasonló megoldásra jutottam, csak így címeztem: [w1]. Az oldalad nagyon szuper, pont előtte találtam meg, mint hogy írtál róla
Még egy kérdés: az AD konverter 0-5V között tud mérni? köszi előre is! Idézet: Ha az általad használt dsPIC 5V-os, akkor igen. Alapértelmezetten 0 - Vdd között mér az ADC. „Még egy kérdés: az AD konverter 0-5V között tud mérni?”
Köszi!
Csak nem értettem, h a datasheetjében az van írva, hogy upinoláris. Ez ejtett zavarba. Tehát ha mondjuk egy -1...+1 V közötti jelet akarok mérni, akkor el kell tolni 0...5 V tartományba. Ha jól emlékszem, a 16f sorozatnál be lehetett a vref+ - vref--szal állítani egy tartományt, fura, h itt nincs. Mindegy, most még azzal szívok, h nem sikerül korrekt adatokat beolvasni az ADC-vel
Bocs, még egy kérdés, mitől lehet, hogy a data memory-t 850-től kezdi használni a fordító? Hogy lehet átállítani, hogy 800-tól kezdje belepakolgatni az adatokat?
köszi!
Basszus, tényleg olyan gyökerek, h a 30f1010-ből kihagyták a vref-eket? grrrrr
|
Bejelentkezés
Hirdetés |