View Single Post
Old 29-05-2008, 12:52 PM   #7
chukhivuitinh
Đệ tử 2 túi
 
Tham gia ngày: Jun 2005
Bài gửi: 27
:
Em dùng prototype có sẵn nên vẫn chưa hiểu 1 số chỗ :
_Trong phần adc ,phần ngắt :
Code:
// phần khai báo biến bên trên 
unsigned int adc_buf[16];
volatile unsigned int* ADC16Ptr = &ADCBUF0; //Pointer to ADC register buffer, 
unsigned int adc_filter_buffer[4][6] = { {0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0} };
unsigned int current_buf = 1; 


void __attribute__((__interrupt__)) _ADCInterrupt(void)
{
	unsigned int i;
        for (i=0; i < 6; i++)
  		adc_filter_buffer[current_buf][i] = ADC16Ptr[i];
        for (i=0; i < 6; i++)
     	        adc_buf[i] = (adc_filter_buffer[current_buf][i]/6 + 
     	              adc_filter_buffer[(current_buf+1)%4][i]/6 +
     	              adc_filter_buffer[(current_buf+2)%4][i]/3 +
     	              adc_filter_buffer[(current_buf+3)%4][i]/3);
	current_buf = (current_buf+1) % 4;
	IFS0bits.ADIF = 0;
}
_trong hàm PrintSignedInteger ,có đoạn :
Code:
// auto-align on 16bit size (655.. = 5 positions)
	for (radix=10000, i=0; i < 5; radix/=10, i++)
	{
		if (converted > radix-1) 
		{
			tmpChar[0] =  '0' + (converted/radix);
			printer(tmpChar);
			converted = converted % radix;
			emptyChar = '0';
		} 
		else if (emptyChar == '0') 
		{
			printer("0");
		}
	}
a giúp em phân tích với ^_^

PS : em là dân cơ khí nhưng vì 1 lí do bắt buộc em phải làm phần điều khiển nên thật sự em chỉ là ăn sổi nhưng em chắc chắn 1 điều là những cái em hỏi em đã đầu tư suy nghĩ ,chứ ko fải cứ bị trục trặc là xách lên hỏi ,nên mong các bác thông cảm nếu có những câu hỏi hơi ngớ ngẩn .

thay đổi nội dung bởi: chukhivuitinh, 29-05-2008 lúc 01:03 PM.
chukhivuitinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn