Saya menggunakan PIC12F675 untuk sebuah proyek, dan semuanya berfungsi dengan baik kecuali satu hal. GP4 tidak berfungsi sebagai IO digital. Saya telah melihat banyak konfigurasi dan kode, tetapi tidak dapat menemukan apa pun.
Konfigurasi:
#pragma config FOSC = INTRCCLK
#pragma config WDTE = OFF
#pragma config PWRTE = OFF
#pragma config MCLRE = OFF
#pragma config BOREN = ON
#pragma config CP = OFF
#pragma config CPD = OFF
Kode:
#include <xc.h>
#include <math.h>
#include "config.h"
#define _XTAL_FREQ 4000000
void delay(unsigned int freq){
for(int i = 0; i < (int)freq; i++){
__delay_ms(1);
}
}
void dClock(unsigned int freq){
GPIO1 = 1;
delay(freq);
GPIO1 = 0;
delay(freq);
}
void InitADC(){
ANSEL = 0x11;
ADCON0 = 0b10000001;
CMCON = 0x7;
VRCON = 0;
}
unsigned int GetADCValue(){
ADCON0 = 0b10000011;
while(GO_nDONE);
return (ADRESH << 8) + ADRESL;
}
void main(void) {
TRISIO0 = 1; //analog input
TRISIO1 = 0; //output
TRISIO2 = 0; //indication
TRISIO3 = 1; //mode
TRISIO4 = 0; //halt
TRISIO5 = 1; //pulse_button
char pressed = 0;
GPIO1 = 0;
InitADC();
while(1){
if(GPIO4 == 0){
if(GPIO3 == 0){
GPIO2 = 1;
unsigned int freq = GetADCValue();
dClock(freq);
}
else{
GPIO2 = 0;
if(GPIO5 == 1 && pressed == 0){
GPIO1 = 1;
__delay_ms(50);
GPIO1 = 0;
pressed = 1;
}
else if(GPIO5 == 0 && pressed == 1){
pressed = 0;
}
}
}
}
return;
}
pic
c
embedded
programming
audio
oscillator
spark
dc-dc-converter
boost
charge-pump
eagle
analog
battery-charging
failure
humidity
hard-drive
power-supply
battery-charging
charger
solar-energy
solar-charge-controller
pcb
eagle
arduino
voltage
power-supply
usb
charger
power-delivery
resistors
led-strip
series
usb
bootloader
transceiver
digital-logic
integrated-circuit
ram
transistors
led
raspberry-pi
driver
altium
usb
transceiver
piezoelectricity
adc
psoc
arduino
analog
pwm
raspberry-pi
converter
transformer
switch-mode-power-supply
power-electronics
dc-dc-converter
phase-shift
analog
comparator
phototransistor
safety
grounding
current
circuit-protection
rcd
batteries
current
battery-operated
power-consumption
power-electronics
bridge-rectifier
full-bridge
ethernet
resistance
mosfet
ltspice
mosfet-driver
ftdi
synchronous
fifo
microcontroller
avr
atmega
atmega328p
verilog
error
modelsim
power-supply
solar-cell
usb-pd
i2c
uart
Ali Abo Shady
sumber
sumber
#pragma config FOSC = INTRCCLK
memberi tahu PIC untuk mengeluarkan jamnya di GP4? Apakah tidak adaFOSC
opsi lain yang harus Anda gunakan?Jawaban:
Hanya untuk menambah jawaban Spehro yang benar:
Karena mikrokontroler yang Anda gunakan hanya memiliki 8 pin, mereka harus berbagi fungsionalitas untuk menyediakan berbagai fitur yang dapat dilakukan perangkat.
Saya hanya ingin memberikan semacam "peta jalan" untuk membantu menjelaskan cara kerja konfigurasi.
Lihat diagram fungsi pin pada lembar data halaman 2:
Anda akan melihat bahwa pin fisik 3 memiliki setidaknya lima fungsi: GP4, AN3,! T1G, OSC2, dan CLKOUT. Kadang-kadang Anda harus menentukan dalam konfigurasi fungsi yang harus dimiliki pin. Jelas tidak selalu jelas. Saya merasa terbantu untuk mencari lembar data untuk referensi ke fungsi register atau pin yang saya alami masalah.
Berikut kutipan dari halaman 52 tempat GP4 ditemukan:
Mikrokontroler sangat sering dapat beroperasi menggunakan osilator internal jika mereka memilikinya, atau dari osilator eksternal seperti kristal. Lebih jauh lagi, mereka dapat menghubungkan osilator internal mereka ke pin untuk clocking perangkat lain. Register konfigurasi di sini memiliki tiga bit (
FOSC
) yang menentukan bagaimana pengaturan ini.Jika Anda melihat dua mode yang tercantum dengan nilai
101
dan100
, keduanya menentukan untuk menggunakan osilator internal, tetapi salah satu opsi menghubungkan GP4 ke jam, di mana yang lain mempertahankan fungsinya sebagai GPIO.Konstanta yang didefinisikan
INTRCCLK
danINTRCIO
Spehro yang disebutkan harus mencerminkan nilai-nilai ini.sumber
Anda telah mengkonfigurasi PIC untuk mengeluarkan sinyal jam internal pada GP4 menggunakan
Ganti INTRCCLK dengan INTRCIO.
sumber