![]() |
|
Tài trợ cho PIC Vietnam |
||||||||
| dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC |
![]() |
|
|
Ðiều Chỉnh | Xếp Bài |
|
|
#1 |
|
Đệ tử 1 túi
Tham gia ngày: Feb 2009
Bài gửi: 12
: |
I/O Ports
Các bác cho em hỏi:em dùng dsPic30f6010a, port C và Port E em có thể đọc vào từng bít được mà sao em không thể đọc được bất cứ bít nào của Port B vậy?em đã khai báo hướng của cổng rất chính xác rồi.Các bít vào em đều treo lên Vcc qua trở 4,7k rồi.Riêng Port B em đặt các bít đều là hướng vào hết.Nhưng nếu e đặt 1 bít của Port B là hướng ra thì em có thể đặt nó bằng 0 hoặc bằng 1 bình thường. Các bác giải thích cho em với ạ.em mới làm việc với dspic nên còn nhiều điều bỡ ngỡ quá.
|
|
|
|
|
|
#2 | |
|
Trưởng lão PIC bang
|
Trích:
Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
|
|
|
|
|
#3 |
|
Đệ tử 1 túi
Tham gia ngày: Feb 2009
Bài gửi: 12
: |
code của em đây:
Code:
int main(void)
{
//TRISA=0xFFFF;
TRISB=0xFFFC;
TRISC=0x800A;
TRISD=0x00;
TRISE=0x03E0;
TRISF=0;
TRISG=0x03C0;
_RD6=1;
//_RD14=1;
//UART_init();
Timer1_init();
//_RD14=_RE5;
delay();
_LATD2=_RG6;
if(_RB7==1) _LATD10=1;if(_RB7==0) _LATD10=0;
//_LATB9=0;
_LATD14=_RE5;
_LATD15=_RE6;
_LATC14=0;
_LATF4=_RC3;
_LATF5=_RC1;
while(1)
{
for(j=1;j<55;j++)
{
if(i==50) _LATD6=1;
if(i==180) _LATD6=0;
}
i++;
__asm__ ("CLRWDT");
}
}
thay đổi nội dung bởi: namqn, 01-03-2009 lúc 05:50 PM. |
|
|
|
|
|
#4 |
|
Đệ tử 1 túi
Tham gia ngày: Feb 2009
Bài gửi: 12
: |
nếu em gán _LATD10=_RE5 hoặc _RC1 hay bất cứ chân vào nào của Port E, C, G thì PortD10 đều lên 1, còn nếu em gán _LATD10 bằng bất cứ bít nào của Port B thì đều đo được mức 0.Trong khi em vẫn để tất cả các đầu vào này bằng 1.Bác xem hô e với ạ!
|
|
|
|
|
|
#5 | |
|
Trưởng lão PIC bang
|
Trích:
Bạn có các tụ ceramic 100 nF (104) giữa các cặp chân nguồn hay không? Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
|
|
|
|
|
#6 |
|
Đệ tử 1 túi
Tham gia ngày: Feb 2009
Bài gửi: 12
: |
code đầy đủ của em đây ạ, em mới thử test các cổng I/O thôi, chưa dùng đến Timer1 cả, em không có các tụ 104 giữa các cặp chân nguồn,chỉ có 3 tụ 104 lọc nguồn đầu vào thôi:
Code:
#include <p30fxxxx.h>
#include <libpic30.h>
_FOSC(CSW_FSCM_OFF & XT_PLL8);
_FWDT(WDT_OFF);
_FBORPOR(PBOR_OFF& MCLR_EN);
unsigned char pc[24]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24};
unsigned char pcin,i;
unsigned int count,j,k;
//void UART_init();
void Timer1_init();
void _ISR _T1Interrupt();
//void _ISR _U1RXInterrupt();
void delay();
//////////////////////////////////////////////////////////////////
int main(void)
{
//TRISA=0xFFFF;
TRISB=0xFFFC;
//TRISC=0x800A;
TRISD=0x00;
TRISE=0x03E0;
TRISF=0;
TRISG=0x03C0;
//_RD6=1;
//_RD14=1;
//UART_init();
//Timer1_init();
//_RD14=_RE5;
delay();
_LATD10=_RB6;
while(1)
{
for(j=1;j<550;j++)
{
if(i==50) _LATD6=1;/ Led nhap nhay
if(i==180) _LATD6=0;
}
i++;
}
}
/////////////////////////////////////////////////////////////////
void delay()
{
for (i=0;i<250;i++)
for(j=0;j<5000;j++);
}
thay đổi nội dung bởi: namqn, 01-03-2009 lúc 08:38 PM. |
|
|
|
|
|
#7 | |
|
Trưởng lão PIC bang
|
Trích:
Bạn cần thêm các tụ decoupling 100 nF vào giữa 5 cặp chân nguồn của dsPIC. Đảm bảo tần số thạch anh nằm trong khoảng 4 - 10 MHz, và cũng chú ý mục 14 của errata sheet sau: http://ww1.microchip.com/downloads/e...Doc/80258G.pdf Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
|
|
|
![]() |
| Ðiều Chỉnh | |
| Xếp Bài | |
|
|