Fórum témák

» Több friss téma
Fórum » dsPic Timer
 
Témaindító: trabi12, idő: Márc 24, 2009
Lapozás: OK   1 / 1
(#) trabi12 hozzászólása Márc 24, 2009 /
 
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
>>
(#) Xenen Mo válasza trabi12 hozzászólására (») Márc 24, 2009 /
 
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?
(#) trabi12 válasza Xenen Mo hozzászólására (») Márc 24, 2009 /
 
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!
(#) trabi12 válasza Xenen Mo hozzászólására (») Márc 24, 2009 /
 
ja a whilet ugytunik lecsipte a kopipeszt eredetileg

while(TMR1 {}

es elvileg ezzel var>
(#) trabi12 válasza trabi12 hozzászólására (») Márc 24, 2009 /
 
hmmm a forum csipi le
while zarojel TMR1 kisebb delay zarojelzar
(#) Xenen Mo válasza trabi12 hozzászólására (») Márc 24, 2009 /
 
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.
(#) icserny válasza trabi12 hozzászólására (») Márc 24, 2009 /
 
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
(#) icserny válasza icserny hozzászólására (») Márc 24, 2009 / 4
 
Valahogy így gondoltam az átírást.
A PORTB-t is átírtam LATB-re, hogy ne érje szó a ház elejét...

main.c
    
(#) trabi12 válasza icserny hozzászólására (») Márc 25, 2009 /
 
Nagyon szepen koszonom mindkettotoknek! MUKODIK!

o en balga! megtanulhatnam mar hogy a uSec meg a mSec kozott van egy par helyiertek
(#) Xenen Mo válasza trabi12 hozzászólására (») Márc 27, 2009 /
 
Ha netán érdekelne hogy miért is kell vigyázni a read-modify-write utasításoknál: Leirás
(#) ikszdzs hozzászólása Máj 24, 2011 /
 
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!
(#) icserny válasza ikszdzs hozzászólására (») Máj 24, 2011 /
 
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
(#) ikszdzs válasza icserny hozzászólására (») Máj 25, 2011 /
 
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!
(#) icserny válasza ikszdzs hozzászólására (») Máj 25, 2011 /
 
Idézet:
„Még egy kérdés: az AD konverter 0-5V között tud mérni?”
Ha az általad használt dsPIC 5V-os, akkor igen. Alapértelmezetten 0 - Vdd között mér az ADC.
(#) ikszdzs válasza icserny hozzászólására (») Máj 25, 2011 /
 
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
(#) ikszdzs válasza icserny hozzászólására (») Máj 25, 2011 /
 
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!
(#) ikszdzs válasza ikszdzs hozzászólására (») Máj 26, 2011 /
 
Basszus, tényleg olyan gyökerek, h a 30f1010-ből kihagyták a vref-eket? grrrrr
Következő: »»   1 / 1
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