Вообщем использую отладочную плату OLIMEX с МК LPC2148. На этой плате есть
переменное сопротивление и два светодиода. Суть что я хочу: изменяю сопротивление на плате
=> меняется напряряжение на определенной ноге МК, переводим его в цифру сравниваем,
с тем напряжением которое заданно в программе, если это напряение больше заданного зажигаем светодиод.
Если меньше тушим.
Кусок программы:
CODE
#include <lpc21xx.h>
int val = 0;
int t = 1;
int main(void)
{
VPBDIV = 0x02; //Set the Pclk to 30 Mhz
IODIR0 =0x0C00; //set p.10 and p.11 outputs
IO0SET =0x0C00;
ADCR = 0x00210708; // Setup A/D: 10-bit AIN0 @ 3MHz
IO0SET =0x400;
ADCR |= 0x01000000; // Start A/D Conversion
b:
val = ADDR; // Read A/D Data Register
while(1)
{
while ((val&0x80000000)==0) ;
t= val&0xFFC0; // здесь накладывается маска на результат
if (t>=0x026C) // проверяется результат, если напряжение больше 1 Вольта (0x026C), то LED зажигает
{
int j;
for (j = 0; j < 500000; j++ ); // wait 500
IO0CLR =0x400;
t=0;
}
else // если меньше тушит
{
int j;
for (j = 0; j < 500000; j++ ); // wait 500 msec
IO0SET =0x400;
t=0;
}
goto b;
}
}
int val = 0;
int t = 1;
int main(void)
{
VPBDIV = 0x02; //Set the Pclk to 30 Mhz
IODIR0 =0x0C00; //set p.10 and p.11 outputs
IO0SET =0x0C00;
ADCR = 0x00210708; // Setup A/D: 10-bit AIN0 @ 3MHz
IO0SET =0x400;
ADCR |= 0x01000000; // Start A/D Conversion
b:
val = ADDR; // Read A/D Data Register
while(1)
{
while ((val&0x80000000)==0) ;
t= val&0xFFC0; // здесь накладывается маска на результат
if (t>=0x026C) // проверяется результат, если напряжение больше 1 Вольта (0x026C), то LED зажигает
{
int j;
for (j = 0; j < 500000; j++ ); // wait 500
IO0CLR =0x400;
t=0;
}
else // если меньше тушит
{
int j;
for (j = 0; j < 500000; j++ ); // wait 500 msec
IO0SET =0x400;
t=0;
}
goto b;
}
}
Вообщем в эмуляции работает, заливаеш в МК не работает. С чем связано? Помогите пожалуйста никак не могу разобраться!!!