Перейти к содержанию

Видеокурс по AVR-микроконтроллерам для начинающих


Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Я в цикле for почемуто 40 раз пощитал, а надо было 20.

int readadc(unsigned int ch)

{

unsigned char set_admux = ADMUX;

set_admux &= ~((1<<MUX3) | (1<<MUX2) | (1<<MUX1) | (1<<MUX0));

switch (ch)

{

case 1: set_admux |= ((0<<MUX3) | (0<<MUX2) | (0<<MUX1) | (1<<MUX0));break;

case 2: set_admux |= ((0<<MUX3) | (0<<MUX2) | (1<<MUX1) | (0<<MUX0));break;

default:break;

}

ADMUX = set_admux;

_delay_us(10);

int tmp = 0;

for (int i=0;i<20;i++)

{

ADCSRA |= (1<<ADSC);//запуск преобразования

while((ADCSRA&(1<<ADSC)));//ожидание конца преобразования

tmp += ADC;

}

return tmp/20; //возврат значения

}

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Доброго времени суток! Пподскажите в чём проблема. Дошёл до 6 урока. Компилирую программу и выскакивают ошибки, хотя не должны.

Спасибо

post-157858-0-06238300-1430249448_thumb.jpg

Изменено пользователем rubik-67
Ссылка на комментарий
Поделиться на другие сайты

Доброго времени суток! Пподскажите в чём проблема. Дошёл до 6 урока. Компилирую программу и выскакивают ошибки, хотя не должны.

Спасибо

Разобрался!!!!!

Ссылка на комментарий
Поделиться на другие сайты

Подскажите пожалуйста в чём косяк, уроки начиная с вольтметра вызывают проблему. Суть в следующем

вот кусок кода

Lcd_printf(0,1,FONT_1X,((readADC(1)*3)/1023),1);
Lcd_prints(5,1,FONT_1X,(unsigned char*)PSTR("Ампер"));
Lcd_printf(0,4,FONT_1X,(655*5)/1023,1); //вот тут решил проверить просто числами выражение равно 3.201368523949169, а на дисплее просто 3

и Lcd_printf возвращает на дисплей только целые числа

Изменено пользователем DriveSM
Ссылка на комментарий
Поделиться на другие сайты

Возможно, функция lcd_print*() принимает только целые числа. Чтобы обойти достаточно сформировать строку с дробным числом самостоятельно и передать функции. Последние пару страниц как раз обсуждалось, что для этого надо немного почитать документацию на sprintf из <stdio.h>

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Почитал несколько страниц до и вообще по теме смотрел, конкретно не нашел по этой проблеме. Подскажите с примером как это сделать, так как автор уроков просто сделал и не углублялся в изучение си, радиотехники...

Ссылка на комментарий
Поделиться на другие сайты

Вот тут спрашивали про необычный формат вывода и совет почитать про sprintf. В вашем случае совет тот же. Пример кода будет примерно таким

sprintf(str,???);
lcd_print(???,str,???);

Вместо ??? подставляете соответствующие параметры функций, вычитанные в документации.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Может вы меня не совсем поняли, но решилось всё проще. Почему-то Lcd_printf внутри не понимал значение с readADC(0). Вынес чуть выше в это значение в переменную и в Lcd_printf использовал э\ту переменную, только так заработало нормально. По идее преобразование integer во float должно происходить, автоматически, но видимо оно происходит только при присваивание в переменную. короче может косяк студии может я чего недопонимаю.

Вот сделал вот так:

float f0 = readADC(0);
Lcd_printf(0,0,FONT_1X,((f0*5)/1023),2);

Иещё появился вопрос . С чем связано такое явление с датчиком температуры в протеусе. Всё показывает отлично в положительном диапазоне. Если ниже нуля, то происходит следующее.

На градуснике на дисплее

0 0

-1 0

-2 -1

-3 -2

и так далее....

смещение на один градус

Изменено пользователем DriveSM
Ссылка на комментарий
Поделиться на другие сайты

Уважаемые гуру.

Рассейте пож сомнения у начинающего. Добросовестно проделываю все уроки и задания, что бы не скучать и для общего развития меняю камни (ATmega8 на ATtiny2313) в AtmelStudio 6, в Proteus моделирую. Вопрос в следующем: если один и тот же код на языке Си работает только с тем микроконтроллером для которого создаем проект то что определят его "принадлежность" к этому камню? библиотеки которые цепляем к проекту?

Это меня озадачило в связи с тем что люди пишут и составляют программы в блокноте... как потом "указать" что написан код для такго-то камня?

Ссылка на комментарий
Поделиться на другие сайты

Ну вообще, компилятор знает для какого камня Вы пишете программу. Вы этот камень указываете в IDE, а она уже передаёт эту информацию компилятору в командной строке, во время запуска компиляции.

Иначе как быть, если компилятору не известна платформа ?

Ссылка на комментарий
Поделиться на другие сайты

Почитал несколько страниц до и вообще по теме смотрел, конкретно не нашел по этой проблеме. Подскажите с примером как это сделать, так как автор уроков просто сделал и не углублялся в изучение си, радиотехники...

Спасибо за негативный отзыв.

Однако должен заметить что у вас одна и та же проблема при поиске информации в топике как и при просмотре видеуроков.

Если бы вы не пролистывали "нудный" урок - то нашли бы часть ответов. Я уже не говорю о том что все функции в библиотеке хорошо документированы на русском языке.

Кроме того - было бы не плохо показать весь код и вывод. Ибо есть подозрения что как раз ваши углубленные (в отличие от автора) изучения СИ и радиотехники привели к таким результатам..

COKPOWEHEU

Скажу только 1 раз. При работе с данной либой функция sprintf избыточна. Несомненно вы просто привыкли с ней работать, но ето не повод тянуть в проект кучу лишнего мусора и увеличивать обьем кода на порядок работая со слабыми камнями, вплоть до того что в либе своя реализация ftoa что бы уменьшить обьем кода. За все мое время работы с АВР а сейчас уже с СТМ я ниразу не использовал данную функцию вобще.

Спасибо, попробую переварить. хотя многое не понятно

Указанный вами камень применяется в ключах компилятора! Другими словами банальный код "ХеллоВорд" можно скомпилировать для разных камней так же как и для разных ОС. Указав в проекте камень компилятор запускается с ключами для нужного устройства включая адресса и обьем памяти и так далее. Что бы лутче понять погуглите на тему "winawr первый проект".

Потому сам код - переносим! И запросто будет работать на другом камне - но всегда следует учитывать что может отличаться распиновка а следовательно и альтернативных функции лапок. Так что возможна небольшая косметика :)

коплю на мечту - Днепр К750

Ссылка на комментарий
Поделиться на другие сайты

COKPOWEHEU

Скажу только 1 раз. При работе с данной либой функция sprintf избыточна. Несомненно вы просто привыкли с ней работать, но ето не повод тянуть в проект кучу лишнего мусора и увеличивать обьем кода на порядок работая со слабыми камнями, вплоть до того что в либе своя реализация ftoa что бы уменьшить обьем кода. За все мое время работы с АВР а сейчас уже с СТМ я ниразу не использовал данную функцию вобще.

Недооцениваете вы меня :-) Эту функцию я предлагаю только из-за универсальности и простоты использования. По-хорошему надо и от float'ов избавляться, считать все в целых числах (в том числе с фиксированной точкой) и писать свои реализации itoa.

если один и тот же код на языке Си работает только с тем микроконтроллером для которого создаем проект то что определят его "принадлежность" к этому камню?

Это указывается ключами компилятора. Например, AVRStudio4 (с более поздними дела не имел) генерирует MAKEFILE в котором прописаны ключи для avr-gcc, в частности, -DF_CPU<частота> и -mmcu=<камень>, например

avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=1000000UL -Os

Это сокращенная и упрощенная версия, на самом деле в MAKEFILE все это задается внутренними переменными.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Спасибо за негативный отзыв.

Однако должен заметить что у вас одна и та же проблема при поиске информации в топике как и при просмотре видеуроков.

Если бы вы не пролистывали "нудный" урок - то нашли бы часть ответов. Я уже не говорю о том что все функции в библиотеке хорошо документированы на русском языке.

Кроме того - было бы не плохо показать весь код и вывод. Ибо есть подозрения что как раз ваши углубленные (в отличие от автора) изучения СИ и радиотехники привели к таким результатам..

Не правильно вы поняли, никакого негатива я просто имел ввиду, что хочу получить короткий, доходчивый ответ без раведения полемики на несколько страниц.

А уроки не нудные и я их не пролистывал, даже пересматривал. Вот форум да начал читать и уже на 20 страницах стало скучно. А поиском не нашел что хотел.

И я вроде не острил и не блестал тут познаниями ни языка, ни радиотехники.

Ссылка на комментарий
Поделиться на другие сайты

Подскажите с примером как это сделать, так как автор уроков просто сделал и не углублялся в изучение си, радиотехники...

Ну расскажите как вы понимаете свои слова?

И опять же. Вместо того что бы:

1.Выложить код который помог бы диагностировать ошибку

2. Попробовать запустить код из урока символ в символ и узнать ошибка у вас в коде или в настройке студии

3. И так далее

Вы продолжаете вести полемику и засирать тему.

Эту функцию я предлагаю только из-за универсальности и простоты использования. По-хорошему надо и от float'ов избавляться, считать все в целых числах (в том числе с фиксированной точкой) и писать свои реализации itoa.

В самой либе есть все - что бы не использовать всякие спринтфы! Кроме того я уже писал в либе ипользуется свой конвертер ftoa что бы сократить размер!

При использовании пустой либы без фанатизма - мы уже при компиляции имеем 30 процентов ресурсов 8 атмеги! если мы еще будем туда добавлять спринтф - то получится все 50!

коплю на мечту - Днепр К750

Ссылка на комментарий
Поделиться на другие сайты

Вот поэтому и надо разделять функционал. Если библиотека работы с дисплеем то самый минимум - вывод символа, вывод строки (из ОЗУ, из ПЗУ, хотя последнее не обязательно), переход по координатам, очистка экрана. Если дисплей графический - можно добавить вывод примитивов, но не обязательно. А уже форматный вывод реализовывать снаружи. Тот же вывод float'а нужен крайне редко, зато иногда нужен вывод числа с фиксированной точкой. А иногда удобнее выводить ровно 2 знака, да еще с ведущим нулем. Все это логичнее реализовать не в библиотеке работы с дисплеем, а в основной программе.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Еще раз. Они что, для чисел с фиксированной точкой? Или там реализовано преобразование в HEX? Или целые числа с ведущими нулями? Вот это было бы полезно, а не работа с float'ами, которые нужны хорошо если в 1% задач.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

kobzar, речь идёт о том, что если библиотека работает с дисплеем, то она только с ним и должна работать - вывод символа(ов), установка координат, очистка, максимум примитивы . Но никак она не должна на себя брать всяческие преобразования данных и т.д... В общем говоря, должна быть драйвером.

Все преобразования - дело пользующего эту библиотеку. Он должен сам всё преобразовывать как ему угодно и тупо посылать данные в драйвер.

Ссылка на комментарий
Поделиться на другие сайты

Мне кажется для начинающего это будет сложновато. А вот в каком виде библиотека сейчас, самый то.

Ну а после можно конечно и самому все преобразования делать и отправлять, как вы его назвали, в драйвер.

И вообще, то о чем вы сейчас говорите, далеко не для тех кто только что научился моргать СД.

А тема так-то для начинающих))

Не знаеш как? Спроси у Google'а !!!

Ссылка на комментарий
Поделиться на другие сайты

Виктор все сказал правильно!

Ибо либа как раз пилилась для начинающих! В ней ест все самое необходимое - включая вывод дробных чисел что как раз вызывает трудности у делающих первые шаги.

коплю на мечту - Днепр К750

Ссылка на комментарий
Поделиться на другие сайты

Как раз для обучения демонстрация модульности - очень важная вещь. Не запихивать вообще все в один файл, а разделить по смыслу. Возможно, даже жертвовать скоростью и объемом в угоду модульности и читаемости.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...