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

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


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

6 часов назад, DmitryS сказал:

@MaxVest , уроки надо было выполнять по порядку ,  уроки сделаны под Атмел студию , а не под кодевижн . Вольтметр и амперметр я не делал , но приветствие выводил на LCD  , все работало без проблем (LCD как раз был синий )

Ну, на счет уроков, меня трудно упрекнуть -  не просто сначала до конца, а не один раз.

Каким программатором  ты шил,  возможно  мне  пора забыть STK200?

Спасибо, надоумил - просто проверить вывод на экран - хороший совет, попробую.

 

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

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

У меня программа скомпилирована в Атмел студия 7. На ALIexpress продается программатор USB ISP USBASP. Поддерживает ли его Атмел студия?

Спасибо.

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

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

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

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

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

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

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

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

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

В ‎09‎.‎10‎.‎2016 в 19:44, DmitryS сказал:

Не поддерживает студия USBasp , но этот программатор довольна легко перепрошивается в AVRDoper , который уже студия поддерживает .

Спасибо, а какие USBишные поддерживает Атмел?

То что в списке самой Атмел ,  кроме атмеловского сайта и не встречал. Куча названий на разных сайтах , но что то о студии молчок..

***

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

Судя по форуму,  ветка медленно умирает.

4545.png

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

14 часа назад, DmitryS сказал:

Так я про него и говорил. Так его-то можно с атмел использовать?

____

PS.Конечно, моя ошибка что я ссылку не дал. Виноват, не до дул!

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

Посмотрел список поддерживаемых  чипов. На против каждого стоит или (L) или (V).

Что это такое  - подскажи если знаешь.

Если (L)  это LOW - значит питание 3.3v ?,  а я для беспаечной  сборки заказал AtMega 8 в dip- корпусе на 5V.

Вот фото

atm.png

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

Большое спасибо!

Сразу стало все просто. Скачал картинку - думаю пригодится и в дальнейшем.

так и не понял подходит ли этот программатор  для Атмел 6, 7?   Ссылка:

https://ru.aliexpress.com/item/1LOT-New-USBASP-USBISP-AVR-Programmer-USB-ISP-USB-ASP-ATMEGA8-ATMEGA128-Support-Win7-64K/32341688129.html?spm=2114.03010208.3.55.MKSGBg&ws_ab_test=searchweb0_0,searchweb201602_4_10039_10056_10065_10055_10068_10054_10069_10059_10073_10017_10070_10060_10061_10052_10062_10053_10050_10051,searchweb201603_3&btsid=50a8b11a-3a9f-4d5c-8fd8-a2c718139287

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

12 часа назад, MaxVest сказал:

Так я про него и говорил. Так его-то можно с атмел использовать?

И я говорил , что можно , но нужно искать прошивку ... - морока одним словом , за 80 руб это не ваш вариант :D

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

  • 4 недели спустя...
  • 3 недели спустя...

Доброй ночи!

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

- на линии питания  на +    ставил индуктивность и керамические конденсаторы,

-землю  одну точку, звездочкой. ближе к МК.

В конце концов оставил только термодатчик, переделал код.- т.е. просто термометр. Все равно плывет вверх  - вниз. Запитал от батареи - всё то же

Правды ради, должен сказать, что вся сборка на  беспаечной макетке. Торчат провода, сопротивления. Вот фото термометра

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

Спасибо

Фото015.jpg

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

вот код программы термометра

Не совсем понял, вернее совсем не понял на счет усреднения. Как выполнить?

#define F_CPU 8000000		
#include <avr/io.h>			
#include <util/delay.h>		
#include "n5110.h"			


void ADCpreset()
{		
	ADCSRA  |= (1<<ADEN)						
	| (1<<ADPS2) | (1<<ADPS1) | (0<<ADPS0);		
		
 	ADMUX  |= (1<<REFS1) | (1<<REFS0);											
	_delay_ms(5);											
}															
		

unsigned int readADC()
	{			
		ADMUX &=~((1<<MUX3) | (1<<MUX2) | (1<<MUX1) | (1<<MUX0));
		_delay_ms(5);	
					
		for (int i=0; i<20; i++)			
			{
				ADCSRA |= (1<<ADSC);		
				while ((ADCSRA &(1<<ADSC)));
				everage_val += ADC;			
				_delay_us(20);
			}
			return everage_val/20;					
	}	
int main(void)
{			
	Lcd_init();	
	ADCpreset();
	while(1)
	{ 	Lcd_clear();														
		if ((((readADC()*2.56*100*(3.73/2.56))/1024)-273.15) >=0)
			{
				if ((((readADC()*2.56*100*(3.73/2.56))/1024)-273.15) <= 1 )
				{}
				else
					{	Lcd_prints(2,2,FONT_2X,(unsigned char *)PSTR("+"));
					}				
				Lcd_printf(4,2,FONT_2X,(((readADC()*2.56*100*(3.73/2.56))/1024)-273.15),1);// вывод данных	+t	
			} 
		else
			{	Lcd_printf(2,2,FONT_2X,((((readADC()*2.56*100*(3.73/2.56))/1024)-273.15)-1),1);// вывод данных	-t		
			}
		Lcd_prints(6,4,FONT_1X,(unsigned char *)PSTR("!C"));																							
	    Lcd_update();																		
		_delay_ms(1000);
	}
}

 

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

5 минут назад, MaxVest сказал:

Не совсем понял, вернее совсем не понял на счет усреднения. Как выполнить?

Заводим массив, заполняем его значениями АЦП, как заполнится - делаем сумму всех значений и делим на кол-во значений. Среднее арифметическое....
 

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

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

Либо складываем накопленный результат с текущим с коэффициентами. Простейший ФНЧ y[i+1] = y*(1-k) + x*k.

Вариантов масса

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

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

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

вот это код -это усреднение?

for (int i=0; i<1000; i++)			
			{
				ADCSRA |= (1<<ADSC);		
				while ((ADCSRA &(1<<ADSC)));
				everage_val += ADC;			
				_delay_us(20);
			}
			return everage_val/1000;		

 

41 минуту назад, Alex сказал:

Заводим массив, заполняем его значениями АЦП, как заполнится - делаем сумму всех значений и делим на кол-во значений. Среднее арифметическое....
 

Душевная просьба - как нибудь по проще, по детальнее а лучше куском кода

Спасибо!

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

Дак у Вас косяк в коде.

Переменная everage_val не обнуляется перед заполнением. Отсюда и пляска вверх-вниз.
Я думал у Вас дёрганье, а, судя по коду, у Вас плавно нарастают показания.
 

everage_val = 0;                            // ВОТ ЭТО ДОБАВЬТЕ !
		for (int i=0; i<20; i++)			
			{
				ADCSRA |= (1<<ADSC);		
				while ((ADCSRA &(1<<ADSC)));
				everage_val += ADC;			
				_delay_us(20);
			}
			return everage_val/20;


 

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

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

Огромное спасибо!!!

Я даже не знал об этом. А у Кобзаря, интересно, обнуляется?- нужно будет взглянуть!

Сейчас же попробую.

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

unsigned int everage_val = 0;

То что дергает - это есть, но и плавный уход тоже присутствует.

 может это от плохие контакты

Сейчас код переписал объявил функцию readADC как float, ну и переменную тоже float. Количество выборок до 1000.

Улучшение есть, но незначительные.

 

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

увеличил кол-во выборок до 2000, время ожидания _delay_us(5) - стало значительно лучше. Целые перестали дергаться, а десятые -есть немного.

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

Ребят, большое спасибо за помощь, за живое слово, порой это дорогого стоит.

Здоровья вам.

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

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

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

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

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

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

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

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

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

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

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

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