Страница 14 из 199
.kkursor
Garik36
Да.
У нас кэп майора хочет. По выслуге давно пора. А должности майорской нет
\
Alexandr008
Garik36
Good все верно

Добавлено спустя 1 минуту 44 секунды:

.kkursor
Сейчас это норма, потому что очень много должностей сократили. Что бы получить должность, плати денег facepalm
Garik36
Alexandr008 писал(а):

все верно


Вот так. А я раньше думал, что достаточно просто отслужить какое-то время, и дадут звание. Типа, пришел из училища, года три послужил, и уже старлея получаешь.
Кстати, я все гадал, почему мой дед два года провоевал, но так и остался рядовым. Видимо поэтому... Хотя он еще в госпитале после ранения долго пролежал.
Alexandr008
Раньше старлея давали после года, кэпа ещё через 2. Но я уже на попал на это. На год сроки увеличились
Лысик
franzferdinand писал(а):

ну он кстати реально царапает


Он нет. Царапает грязь, примерзшая под коркой.
мертвая голова писал(а):

подогрева задних сидений.


hehe чай не премиум покупал! Razz

Добавлено спустя 4 минуты 12 секунд:

Аутбэке так и не завелся, даже с прикуром. Заряжаю его акб. Теана тоже молчит.. Рено Сценик молчит. Поло хэтч смог supercool Калина коллеги тоже. Паджеро спорт все дни пускалсся, правда не всегда с 1 раза
kazak1102
.kkursor
Заработало... dns4 gpn


Первая и последняя строки штатные, средние нужны для сотавления таблицы (оформления массива)...

Собственно, код:
Цитата:

#include <mega128.h>
#include <mega128_bits.h>
#include <delay.h>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>

#asm
.equ __lcd_port=3; PORTE
#endasm
#include <alcd.h> ,

#define ADC_VREF_TYPE 0x40

unsigned char i=0; // ПРИШЛОСЬ ОБЪЯВИТЬ ГЛОБАЛЬНО
//========================================
int Levels[6] = { 1006, 1005, 1004, 1002, 1001, 998, };

//==========================================
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

//==========================================
unsigned int convert( int i){ //ПРОПИСАЛ ВХОДНУЮ ПЕРЕМЕННУ.

for (i = 0; i < 5; ++i){
if(Levels[i] == read_adc(1)) //ПО ТВОЕМУ СОВЕТУ, ДЕЛАЮ ВЫБОРКУ ИЗ ацп
return i; //ВОТ ЭТО ТЕПЕРЬ ВЫГЛЯДИТ ВОТ ТАК
}
}
//==========================================
void main(void)
{
char string[8]; // ГЛОБАЛЬНО ПЕРЕМЕСТИЛ ПЕРЕМЕННЫЕ СЮДА
unsigned int adc_data;
float U;


ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x86;

lcd_init(16);

while (1)
{
adc_data=read_adc(0);
U=(float) adc_data*50.0/1024; // Переводим в вольты
sprintf(string, "U=%2.1fv", U); // форматируем
lcd_gotoxy(0,0); // Выставляем курсор
lcd_puts(string); // Выводим значение
delay_us(500);

adc_data=read_adc(1); // ВРЕМЕННОЕ
U=(float) adc_data*5.0/1024; // в КОНЦЕ ТВОРЧЕСКОГО ПРОЦЕССА ЗАЧИСТИМ
sprintf(string, "%1.4f", U);
lcd_gotoxy(0,1);
lcd_puts(string);
delay_us(500);

adc_data=read_adc(1); // ВРЕМЕННОЕ
U=(float) adc_data*1.0;
sprintf(string, "%4.0f", U);
lcd_gotoxy(0,2);
lcd_puts(string);
delay_us(500);

adc_data=convert(i); // ЗДЕСЬ ТОЖЕ НЕ ТАК, КАК БЫЛО
U=(float) adc_data*1.0-40;
sprintf(string, "T=%-3.1f", U);
lcd_gotoxy(0,3);
lcd_puts(string);
delay_us(500);




}
}



Терь займусь доводкой точности измерений до приемлемого, включая изменения во входной части АЦП...
Жаль, что АЦП 10-ти разрядный... Very Happy
Garik36
kazak1102
Ты инжекцию что ли строишь? hehe
kazak1102
Garik36 писал(а):

Ты инжекцию что ли строишь?


Та не... Very Happy
Карбюрацию довожу до ума... hehe
.kkursor
kazak1102
Поздравляю. Drinks or Beer Но в коде есть ошибки, которые по сути являются бомбой замедленного действия.
kazak1102 писал(а):

unsigned char i=0; // ПРИШЛОСЬ ОБЪЯВИТЬ ГЛОБАЛЬНО


kazak1102 писал(а):

unsigned int convert( int i){ //ПРОПИСАЛ ВХОДНУЮ ПЕРЕМЕННУ.


Глобальные переменные, прувет. Возможно, этот код будет работать совсем не так, как ты думаешь, потому что тип char к int приводится вполне.
Причём 10 раз может сработать, а в 11 встать раком и повиснуть.
А ещё ты к внешней i внутри доступ не получишь. Короче глобалы зло.

kazak1102 писал(а):

if(Levels[i] == read_adc(1)) //ПО ТВОЕМУ СОВЕТУ, ДЕЛАЮ ВЫБОРКУ ИЗ ацп


Советую вынести read_adc() наружу функции, потому что возможна ситуация, когда значение АЦП изменится во время прохода по циклу.
Пример. Допустим тебе АЦП вернуло значение 1000.
В массиве у тебя 999 1000 1001 1002.
Первый прогон. 999 равно 1000? Нет.
В этот момент АЦП меняет значение и становится 999. Второй прогон. 1000 равно 999? Нет. Pardon

Сохрани вывод read_adc(1) в переменную перед вызовом функции convert(), а в функцию отдай уже не read_adc, а эту переменную.
ЭД*
мертвая голова писал(а):

А я делал просто - разводил в спирте канифоль, помом мазал места пайки и припаивал,


Я такой раствор заправлял в предварительно очищенный маркер.
Потом тупо маркером мажешь где надо и всё. Быстро и удобно. Wink


Всем привЭД! Drinks or Beer

Добавлено спустя 1 минуту 19 секунд:

kazak1102 писал(а):

Заработало...


минус тридцать пять . Замерз наверное hehe
Garik36
ЭД*
Привет, человек, убегавший от медведов Smile
ЭД*
Garik36
Здрасти Drinks or Beer
kazak1102
.kkursor писал(а):

Сохрани вывод read_adc(1) в переменную перед вызовом функции convert(), а в функцию отдай уже не read_adc, а эту переменную.


До этого так делал, но тогда функция не работала, терь, думаю, может заработать, попробуем...
.kkursor писал(а):

Глобальные переменные, прувет.


Так тут либо глобально, либо в заму функцию её воткнуть... В maim функция её не увидит, если только саму функцию тож туда не поместить...
.kkursor писал(а):

Советую вынести read_adc() наружу функции, потому что возможна ситуация, когда значение АЦП изменится во время прохода по циклу.


Функция каждый шаг по массиву вызывает АЦП и тот каждый проход выдаёт значение, которое может поменяться... Но мне нужно не само это значение, а близкое к табличному в меньшую сторону, что пока ещё не организовано, надо над этим поработать... Как, пока не знаю, но это дело наживное...
Можно вынести в статическую переменную, тогда значение во время проходов изменяться не будет... Придётся таки функцию размещать в main, чтоб уйти от глобальных объявлений... Тем более, что планы не малые, и мало ли ещё чего придётся объявлять глобально...
ЭД*
Интернет показывает -29
а на самом деле -19 .
Кому верить? hehe
Garik36
ЭД*
А ты когда с медведами встречался, не был вооружен?
ЭД*
Garik36 писал(а):

А ты когда с медведами встречался, не был вооружен?


нет
ибо на работе был
kazak1102
.kkursor писал(а):

В этот момент АЦП меняет значение и становится 999. Второй прогон. 1000 равно 999? Нет.


В функции не прогоны, там шаги... Цикл while ждёт, пока функция найдёт значение... А поиск от "0" по возратанию, пока не упрётся в совпадение, всё, функция не нужна, № значения получен, while дрыгается дальше... И так каждый раз... Так что, если АЦП и поменяет значение, то мы всё равно его возьмём...
Garik36
ЭД*
А в свободное время с ружжом ходишь? Smile
ЭД*
Garik36 писал(а):

ЭД*
А в свободное время с ружжом ходишь?


Зачем? Мне нечего бояться Pardon
Жители города ко мне вроде как добры
kazak1102
unsigned int i=0; переместил в void main(void)...
Всё работает... supercool
Саму функцию оставил на улице... Very Happy
Глобальных больше нет... ppc
ЭД*
kazak1102
Закусывать надо! hehe
kazak1102
ЭД* писал(а):

Закусывать надо!


Щас... Антоновна занимается уже... hehe
Garik36
kazak1102
Петрович, а в ДНР новогодние выходные сколько дней длятся?
kazak1102
Garik36 писал(а):

Петрович, а в ДНР новогодние выходные сколько дней длятся?


Не знаю... У меня всегда выходной... Very Happy
Garik36
kazak1102
Мда, шоб я так жил... Хотя я так жил, аж три месяца, как-то не очень понравилось...
Новая тема Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.
Показать сообщения:
Страница 14 из 199
Перейти:
ИНФОРМАЦИЯ ПО ИКОНКАМ И ВОЗМОЖНОСТЯМ

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы можете вкладывать файлы
Вы можете скачивать файлы