Mình dùng PIC18F2620 và CCS compiler. Đoạn mã sau mình muốn nhận giá trị từ cổng input cho ADC từ tín hiệu bên ngoài:
Code:
#include <18F2620.h>
#DEVICE HIGH_INTS=TRUE
#DEVICE ADC=10
#include <STDLIB.H>
#include "mylib.h"
#fuses HS,NOWDT,NOPROTECT,LVP
#use delay(clock=8000000)
#use SPI(BITS=8)
#use rs232(BAUD=57600,parity=N,XMIT=PIN_C6, RCV=PIN_C7, bits=8)
void setup_node(){
// set_tris_a(0x0F);
set_tris_b(0xFF);
set_tris_c(0x90);
// --- setup SPI -------------------
setup_spi(SPI_MASTER |SPI_H_TO_L |SPI_CLK_DIV_4); //50ns
output_float(PIN_B0);
//-------- setup ADC ----------------
// Setup_port_a(AN0_TO_AN4);
Setup_ADC(ADC_clock_DIV_8);
Setup_ADC_ports(AN0_TO_AN4);
Set_ADC_channel(4);
delay_us(10);
// ---- enable interrupts ----------
enable_interrupts(INT_RDA);
ext_int_edge(H_TO_L);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
}
void main(void)
{
long value;
setup_node();
value=adc_read();
while(true){
}
}
Tín hiệu analog là điện áp có biên độ từ 0V-1.2V .
Không biết mình có setup sai chỗ nào không? giá trị nhận được không được đều cho lắm. Chẳng hạn cùng 1 điều kiện nhưng giá trị nhận được thay đổi từ 0-60 hoặc 160-180