07-08-2009, 22:35
|
|
|
חבר מתאריך: 25.06.08
הודעות: 36
|
|
בדקתי עם רגל שונה .. רגל של פורט C והבעיה לא נפתרה. אני ינסה להחליף את הטרמו קפל.
בנוסף. התוכנית שאני בונה היא קבלת מידע מטרמו קפל והצגת המידע דרך RS232 במחשב
עם שימוש ב MAX6675 PIC30F3012 MAX232
בעזרת "מפסק" רגל RC15 אני בוחר להתחיל לקבל מידע מהטרמוקפל ולהציגו במחשב.
כתבתי את הפונקציה של MAX232 וכתבתי את הפונקציה של קריאת המידע
אבל משום מה יש לי בעיות קלות בקוד. אם זה בתדירויות בין הרכיבים או בפקודות עצמם.
הקוד כמעט גמור ויש לי איתו בעיות
אני מצרף את הקוד שכתבתי
אלי, אני רואה בך בן אדם שגאון בתחום. אשמח אם תוכל לבדוק את הקוד , תוכל להציע יעול או לראות בעיות שקיימות בו
תודה מראש אלי.
קוד:
#include <p30f3012.h>
#include <stdio.h>
#define UXBRG ((7370000/9600)/16) - 1
int i;
int temp=0; // temp buffer
//-------Delay Function------
void Delay (long k)
{
int y;
for (y=0; y<k; y++); // function runs a number of "x" cycles
}
void Transmit (int x)
{
U1MODEbits.UARTEN=1; // UART is enabled
U1MODEbits.ALTIO= 1; //using UxATX pins
U1MODEbits.WAKE=1; // Wake-up enabled
U1MODEbits.LPBACK = 1; // Enable Loopback mode
U1MODEbits.ABAUD = 1; // Input to Capture module from UxRX pin
U1STAbits.UTXBRK = 0; // Not sure if this is needed or not
U1MODEbits.USIDL = 0; //Continue operation in Idle mode
U1STAbits.UTXEN = 1; // enable for transmission
U1TXREG = x ; //transmission data
}
// -------Function that Reads the Temperature------
int Read_Data()
// RD0 -> SO
// RB1 -> CS
// RB2 -> SCK
{
temp=0;
int i;
int input_bit =0;
Delay (10);
PORTBbits.RB1 =0;
for (i=0; i<8; i++) //LOOP 9 TIMES TO GET DETA
{
Delay (2000);
PORTBbits.RB2 = 1;
Delay (2000);
PORTBbits.RB2 = 0;
Delay (2000);
temp<<=1;
temp += PORTDbits.RD0;
//input_bit += temp;
Delay (200);
}
PORTBbits.RB1 =1;
//PORTDbits.RD0 =1;
//Delay(10000);
Transmit(temp);
//return;
}
int main(void)
{
int x;
TRISB = 0x00;
U1BRG = UXBRG; // Set the baud rate
U1MODEbits.PDSEL = 0; // 8-bit data, no parity
U1MODEbits.STSEL = 0; // 1 Stop bit
U1STAbits.UTXEN = 1; // UART transmitter disabled
TRISB = 0b00000000;
TRISD = 0b11111111;
TRISC = 0b11111111;
PORTDbits.RD0 = 1;
PORTBbits.RB1 =1;
//while(1)
// {
//if ( PORTCbits.RC15 ==0)
while (PORTCbits.RC15 !=0)
{
Read_Data();
//else
Delay(20000);
}
// }
}
|