Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.16.66.156] |
|
Сообщ.
#1
,
|
|
|
Ребят! Мне очень стыдно что я обращаюсь к вам с такой просьбой, но просто мне очень нужна ваша помощь=)мне в курсовом проекте необходимо задание сделать, а я не могу ни в чем разобраться=( нужно уже сдавать а у меня ничего толком не готово=(.В задании написано: на вход устройства поступают два напряжения, затем берется их отношение, находится некоторый коэфициент, который умножается на величину, которая поступает на третий вход устройства. В итоге выходит скорректированный аналоговый сигнал. Максимум, что я смогла сделать - это отношение напряжений и то не могу поверить правильность написанной программы, т.к не могу разобраться в vmlab.Дорогие мальчики помогите пожалуйста проверить правильность программы.Писала на codevisionavr, микроконтроллер взяла ATmega8
#include <mega8.h> #define _BV(bit) (1 << (bit)) //для совместимости с codevision #define ADSC 6 //(без этого программа компилируется WinAVR) void IoInit(void) { DDRB=0x01;//PORTB0 будет выходом //насройка АЦП ADCSRA=0x06;//частота дискретизации //sei();//разрешение всех прерываний } unsigned short ADC_Read(unsigned char ch) { SFIOR=0; ADMUX=0xC0|ch;//установка канала (VREF=внутренний опорник) ADCSRA=0xC3; while(ADCSRA&_BV(ADSC));//ждем окончания преобразования return (ADCH<<8)+ADCL;//результат 10 битный } void main(void) { static unsigned short U1, U2, U3;//напряжение питания- от блока питания static unsigned short Porog=234;//какойто порог IoInit(); while(1) { U1=ADC_Read(0);//читаем нулевой канал АЦП U2=ADC_Read(1);//читаем первый канал АЦП U3=ADC_Read(3);//читаем второй канал АЦП if(U3*U1/U2>Porog) PORTB=0x01;//в порт пишем единичку( нулевой выход PORTB) else PORTB=0x00;//в порт пишем нолик } } |
Сообщ.
#2
,
|
|
|
...странно, а 25 декабря на кибере вы создавали аналогичную тему и все было ок ...код ведь не ваш
|