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

С нуля Программирование AVR Купил программатор и Контроллер Что дальше...


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

Любой вариант - вариант.

Но я опасаюсь вместо программирования посвятить себя инсталяции-деинсталяции программ.

Комп распух не меньше чем моя голова. Забываю уже, что и в каком приложении пытаюсь писать.)

Остановлюсь пока на Atmel 8 и Proteus.

Книгу по ссылке скачал. Спасибо.

Пионер - всем ребятам пример.

There should be information on the web about this, but it may take some digging.

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

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

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

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

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

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

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

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

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

8 минут назад, oldmao сказал:

Ну почему же? CodeWizard - весьма удобная для начинающих штука.

Именно "удобство" мне не нравится.

Готовую форму заполнить - дело не хитрое.

Хочется с клавиатуры написать.

Изменено пользователем pliss

Пионер - всем ребятам пример.

There should be information on the web about this, but it may take some digging.

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

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

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

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

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

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

16 часов назад, pliss сказал:

Ну, давайте ещё немного флуда.)

...вы сами, прям с каменного топора начали?

...и стали рубило делать?


 

С двух топоров - Ассм и Дассм. А потребовалось мне изменить прошивку. В наличие был только hex, без исходников.

Вот на этом и учился. Через месяц такой учебы понял и написал свою прошивку с нуля "и стал рубило делать". Теперь, как сами понимаете, мне даже исходники не требуются.
 

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

Эт хорошо.

Ну, в смысле, что не с перфокарты начали...

А уменя вообще - ни hex, ни исходников...

А перфокарты я видал - мама с работы приносила.

P.S. Вот у меня одна из прог - Dev++.

Пока на C++ тренировался - работала, а на C - вылетает при выполнении кода после первого нажатия Enter при вводе значения...

Изменено пользователем pliss

Пионер - всем ребятам пример.

There should be information on the web about this, but it may take some digging.

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

А так можно?

Снимок.JPG

Скрытый текст

/*
 * PVM_ATmega16.c
 увеличение и уменьшение заполнения ШИМ нажатием кнопок
 */ 
#define F_CPU 8000000
#include  <avr/io.h>
#include <util/delay.h>



int main()
{
// включение порта В на вход
 DDRB=0x00;
PORTB=0b00000000;
// включение порта A на вход
DDRA=0x00;
PORTA=0b00000000;
// включение таймера 2
 ASSR=0x00;
TCCR2=0x6F;
TCNT2=0x00;
 OCR2=0x00;
 DDRD=0x80;

	while (1)//цикл с опросом портов(кнопок)
	{	
		
		if(PINB==0b00000000)//если кнопка нажата
		{
			_delay_ms(50);//ждём пятдесят мс
			if(PINB==0b00000000)//если кнопка нажата
			{
				OCR2=OCR2+0x19;//увеличиваем заполнение на 10%
				while(PINB==0b00000000)//ждём отпускания кнопки
				{}
			}
		}
		if(PINA==0b00000000)
		{
			_delay_ms(50);
			if(PINA==0b00000000)
			{
				OCR2=OCR2-0x19;//уменьшаем заполнение на 10%
				while(PINA==0b00000000)
				{}
			}
		}
	}
}

 

P.S. Книга Шпака Ю.А. очень помогает. Спасибо.

Пионер - всем ребятам пример.

There should be information on the web about this, but it may take some digging.

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

Нет проверки граничных значений ШИМ. Не знаю, может ваш компилятор вставит её автоматически, но в Bascom для однобайтовой переменной 255+10=9 и 0-10=246. Так что перед инкрементом/декрементом нужно проверять текущее значение.

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

Форматирование плохое. Радует что хоть частично есть.

Опрос кнопок лучше сделать битовыми операциями.

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

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

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

2 часа назад, oldmao сказал:

<...>может ваш компилятор вставит её автоматически, но в Bascom для однобайтовой переменной 255+10=9 и 0-10=246. Так что перед инкрементом/декрементом нужно проверять текущее значение.

Нет, конечно не ставит, но это был следующий вопрос.)

Последним шагом при увеличении заполнения должно быть условие:

OCR2 + Х = 255 и отсутствие реакции на последующие попытки  увеличить заполнение, а при уменьшении заполнения:

OCR2 - X = 0 и, также, отсутствие реакции на последующие попытки уменьшить заполнение...

Так?

1 час назад, COKPOWEHEU сказал:

Форматирование плохое. Радует что хоть частично есть.

Опрос кнопок лучше сделать битовыми операциями.

С чистописание - не мой конёк, это да.

С битовыми операциями - теперь тоже, но мы работаем над этим...

 

Пионер - всем ребятам пример.

There should be information on the web about this, but it may take some digging.

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

38 минут назад, pliss сказал:

Последним шагом при увеличении заполнения должно быть условие:

лучше вынести шаг изменения в макрос

#define PWM_STEP 10
#define INC_PRESSED() (!(PINC & (1<<5))) //допустим, кнопка увеличения висит на PC5 и замыкается на землю
#define DEC_PRESSED() (PINB & (1<<0)) //а унопка уменьшения - на PB0 и коммутируется на питание

uint8_t temp = OCR0; //возможно, имеет смысл сделать буферизацию этого регистра
if( INC_PRESSED() ){
  if( temp < (0xFF-PWM_STEP) )temp += PWM_STEP;
}else if( DEC_PRESSED() ){
  if( temp > PWM_STEP )temp -= PWM_STEP;
}
OCR0 = temp;

сравнение лучше по возможности проводить без преобразования типов, то есть не (temp + 10 < 255), а (temp < 255-10), поскольку результат первого варианта может выйти за пределы диапазона.

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

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

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

Я бы проверял флаг переноса, который возникает в случае переполнения переменной... но как это сделать в С ума не приложу. Хотя тут напрашивается целое знаковое число и после инкремента/декремента проверять на выход за пределы установленных рамок. Может оказаться полезным для организации ШИМ для сервы, где диапазон пределов ещё уже.

Учение - изучение правил. Опыт - изучение исключений.

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

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

Пионер - всем ребятам пример.

There should be information on the web about this, but it may take some digging.

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

7 минут назад, Alexeyslav сказал:

Я бы проверял флаг переноса, который возникает в случае переполнения переменной... но как это сделать в С ума не приложу. Хотя тут напрашивается целое знаковое число и после инкремента/декремента проверять на выход за пределы установленных рамок.

На ассемблере так и делается. Но в данном случае си. Пример со знаковой переменной я и привел.

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

16 часов назад, COKPOWEHEU сказал:

<.,..>сравнение лучше по возможности проводить без преобразования типов, то есть не (temp + 10 < 255), а (temp < 255-10), поскольку результат первого варианта может выйти за пределы диапазона.

Ок.

Я перевесил кнопки на один порт.

Избавился ли я от "преобразования типов"?

Скрытый текст

/*
 * PVM_ATmega16.c
 увеличение и уменьшение заполнения ШИМ нажатием кнопок
 */ 
#define F_CPU 8000000
#include  <avr/io.h>
#include <util/delay.h>



int main()
{
// включение порта В на вход
 DDRB=0x00;
PORTB=0b00000000;
// включение порта A на вход
DDRA=0x00;
PORTA=0b00000000;
// включение таймера 2
 ASSR=0x00;
TCCR2=0x6F;
TCNT2=0x00;
 OCR2=0x01;
 DDRD=0x80;

	while (1)//цикл с опросом портов(кнопок)
	{	
		
		if(PINB==0b01000000)//если кнопка нажата//
		{
			_delay_ms(50);//ждём пятьдесят мс
			
			if(PINB==0b01000000)//если кнопка нажата
			{
				if((OCR2<<1)<=0xFF)
				OCR2=OCR2<<1;//увеличиваем заполнение в два раза
				else
				OCR2=0xFF;
				
				while(PINB==0b01000000)//ждём отпускания кнопки
				{}
			}
		}
		
		if(PINB==0b10000000)
		{
			_delay_ms(50);//ждём пятьдесят мс
			
			if(PINB==0b10000000)//если кнопка нажата
			{
				if((OCR2>>1)>=0x02)
				OCR2=OCR2>>1;//уменьшаем заполнение в два раза
				else
				OCR2=0x01;
				
				while(PINB==0b10000000)//ждём отпускания кнопки
				{}
			}
		}
	}
}

 

И такой вопрос.

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

Другими словами - это следование духу закона или его букве?

Пионер - всем ребятам пример.

There should be information on the web about this, but it may take some digging.

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

4 часа назад, pliss сказал:

Я перевесил кнопки на один порт.

Избавился ли я от "преобразования типов"?

Нет. Про преобразование типов я писал в примере про численные данные. При чем здесь кнопки непонятно.

4 часа назад, pliss сказал:

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

Другими словами - это следование духу закона или его букве?

Это упрощает разработку и изменение устройства. Если понадобиться изменить шаг ШИМа, переместить кнопки на другой порт и т.д., можно будет изменить только в одном месте, а не в десятке с риском что-то забыть.

Это не закон а рекомендация.

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

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

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

4 часа назад, COKPOWEHEU сказал:

Нет. Про преобразование типов я писал в примере про численные данные. При чем здесь кнопки непонятно.<...>

Про кнопки - это вступление было...

Ну вот так-то, наконец, так?..

if(OCR2<=(0xFF>>1))

 

 

Пионер - всем ребятам пример.

There should be information on the web about this, but it may take some digging.

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

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

Ищите по словам "учебные курсы" по микроконтроллерам. Там все будет разжевано и вам в рот положено. К примеру, easyelectronics.ru

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

48 минут назад, demiurg1978 сказал:

Прекратите тратить свое и наше время.<...>

Слушаюсь, Ваше Благородие!

48 минут назад, demiurg1978 сказал:

<...>Вы уже баловаться начали.<...>

Никак нет, Ваше Благородие!

48 минут назад, demiurg1978 сказал:

<...>Как бы нам не трудно ответить.<...>

Ну, так и как бы ответьте, Ваше Благородие, три буквы-то всего - "нет" или, вообще, две - "да".

48 минут назад, demiurg1978 сказал:

<...>Но на элементарные вопросы вы можете найти ответы в книжках и в инете.<...>

Никак нет, Ваше Благородие! В книжках и инете ответы пишут те, кто давно забыл, что такое "элементарные вопросы". А ученику от учителя нужно не ответов на сложные вопросы, а ответов, как раз, на элементарные, на самые простые вопросы. Выражаясь современным языком - помощь нужна именно тогда, когда ученик "тупит".

А вот когда ученик, с помощью учителя перестанет "тупить" и у него накопятся ответы на элементарные вопросы, то сложные он начнёт решать сам.

А учитель будет радоваться успехам своего подопечного.

48 минут назад, demiurg1978 сказал:

<...>Учитесь теперь работать сами.<...>

Слушаюсь, Ваше Благородие!

48 минут назад, demiurg1978 сказал:

<...>На форумы обращаться только тогда, когда у вас действительно затруднения.<...>

Так точно, Ваше Благородие!

48 минут назад, demiurg1978 сказал:

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

Никак нет, Ваше Благородие!

Неохота - не отрывайтесь. В "игнор" поставьте. Или только на взрослые вопросы отвечайте.

48 минут назад, demiurg1978 сказал:

<...>Ищите по словам "учебные курсы" по микроконтроллерам. Там все будет разжевано и вам в рот положено. К примеру, easyelectronics.ru<...>

Слушаюсь, Ваше Благородие!

Только вот, к примеру, на easyelectronics.ru у людей нашлось время всё разжевать и мне в рот положить, а у Вашего Благородия нашлось время только для того, чтобы мне выволочку устроить, Like that?

Изменено пользователем pliss

Пионер - всем ребятам пример.

There should be information on the web about this, but it may take some digging.

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

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

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

Хотя у меня и есть время, но в самом начале темы я первым предложил закончить флуд.

Вы пишите, что вам неохота тратить свое время, но тем не менее, вы продолжаете его тратить и читать нотации. Не только в этой теме.

Не мучайте себя.

По вопросу чтения литературы и самостоятельного обучения - читайте моё предыдущее сообщение внимательней.

 

Изменено пользователем pliss

Пионер - всем ребятам пример.

There should be information on the web about this, but it may take some digging.

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

Не поняли? Не вопрос. Саморегуляция на форумах простая. Если вы задаете хорошие вопросы, вам будут отвечать. Если тупые вопросы, как " if(OCR2<=(0xFF>>1)) а так?" , продолжайте в том же духе. Вам просто перестанут отвечать, потому что вы не хотите работать сами. Пробовать. Получать хоть какой-то результат.

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

Я знаю, форум будет!

Я знаю - флуду цвесть!

Доколе Демиурги в сети всемирной есть!

P.S.

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

Пускай последнее слово останется за вами.

Пионер - всем ребятам пример.

There should be information on the web about this, but it may take some digging.

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

Будет последнее слово за мной. У вас впереди дребезг контактов... Следующий ваш вопрос будет. "А как сделать, чтобы все одновременно работало." "А у то у меня на delay-ях ни фуя не работает..."

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

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

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

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

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

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

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

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

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

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

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

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