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

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


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

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

23 часа назад, gogaze сказал:

А поподрорбней  весь код можно посмотреть?

 

В 07.04.2014 в 17:03, kobzar сказал:

Браво!

Вот ето подход!

Доброго дня!

я конечно понимаю что максимальное кол-во ошибок при написании кода это ошибки того кто пишит...

вот код..

#include <avr/io.h>
#define F_CPU 10000000ul
//#define F_CPU 1000000ul

//*****************

//************
#include <util/delay.h>


void preset()
{
DDRB=0xFF;
PORTB=0x00;
}
void led_on()
{
 PORTB=0xFF;
_delay_ms(100);


}

void led_off()
{
 PORTB=0x00;
_delay_ms (100);
}

int main(void)
{
    /* основной цикл */
    preset();
    while (1) 
    {
    led_on();
    led_off();
    }
}
 

при симуляции  открывается файл библиотеки   delay.h  и курсор указывает на строку 187   в ней значение  __builtin_avr_delay_cycles(__ticks_dc);

от Вашего урока отличается тем что я использую 7 студию  в 6 студии не смог включить симуляцию.

Спасибо!

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

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

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

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

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

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

А зачем Вы заходите внутрь функций задержек ?
Я не знаю, как в Atmel Studio, но в нормальных IDE должно быть несколько вариантов шагания по коду, включая перешагивание функций.

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

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

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

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

Похоже в 7-й версии плохо симулируется эта функция. Попробуйте в самое начало файла записать такую строку.

#define __DELAY_BACKWARD_COMPATIBLE__

это описано в файле delay.h перед функцией

void _delay_ms(double __ms)

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

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

Доброго дня!

не помогло   и как итог всех действий  буду переставлять винду   и на голый win7  поставлю студию и посмотрю что получится

что касается вопроса  % А зачем Вы заходите внутрь функций задержек ?%   то я туда и не захожу туда студия закидывает и останавливается

как вариант что-то в системе есть лишнее или не хватает.Потому как до студии чего-то ставилось и удалялось  вероятнее всего что не всего что не все удаляется и хвосты могут влиять на работу проги  поэтому формат /С:/   и не должно быть последствий...

 

 

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

Литиевые аккумуляторы EVE Energy и решения для управления перезаряжаемыми источниками тока (материалы вебинара)

Опубликованы материалы вебинара Компэл, посвященного литиевым аккумуляторам EVE Energy и решениям для управления перезаряжаемыми источниками тока.

На вебинаре мы представили информацию не только по линейкам аккумуляторной продукции EVE, но и по решениям для управления ею, что поможет рассмотреть эти ХИТ в качестве дополнительной альтернативы для уже выпускающихся изделий. Также рассмотрели нюансы работы с производителем и сервисы, предоставляемые Компэл по данной продукции. Подробнее>>

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

1 hour ago, aleksandr_m328 said:

на голый win7  поставлю студию и посмотрю что получится

Думаю получится то, что уже получилось. Если хотите не попадать в функцию задержки, то ставьте точку останава на команду следующую за _delay_ms() и запускайте на выполнение ( не в пошаговом режиме ).

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

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

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

Доброго дня!

Моя надежда не сбылась!!!   

Опять то-же самое.  С точкой остановки тоже вроде как не работает (как я думаю)

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

Спасибо!

 

 

wrk.zip

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

закомментируйте строки с _delay

или отключите оптимизацию и перешагивайте F10 (шаг с обходом)

Simulator - Toolchain - Optimization - Optimization Level: None (-o0)

Кстати если нажимать то Play то Pause вы постоянно оказываетесь в функции delay и думаете что что-то не работает, однако есть шанс один из несколько миллионов, что вы остановитесь в основной программе. Ваш код, изменение состояния портов выполняется за несколько тактов, все остальное время программа висит в delay.

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

Доброго дня!

Потому как мои действия в итоге не дали положительного результата  т.е. как я понял у меня не правильно работает симуляция с библиотекой  "delay"  или банальнее  где - то стоит  галочка в настройках  или не в том месте

и поэтому чтобы не крутить гайки а потом думать что получилось  реши от смотреть   первые видио

ну поискать еще инфу     без дебагера (симулятора) можно работать есть железо   есть протеус...

Вопрос не тему   моно ли заменить каркас для кода (добавить свои ) 

**Анек ...   про ремонтеров  наверное слышали.

 

Спасибо!

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

Доброго дня!

Все что пока выяснил это-то что нормально  не хочет работать {Debug_er}  (не нашел внятного описания)    в протеус_е  диоды мигают а значит можно работать

подключу  программатор к студии   и начну юзать.  

 

 

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

Что-то не работает библиотека для nokia3310 от  COKPOWEHEU.Перепробовал множество проектов в т.ч. примеры ,скачанные вместе с библиотекой.Всегда выдает одно

Снимок.PNG

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

В 24.08.2018 в 16:47, aleksandr_m328 сказал:

Все что пока выяснил это-то что нормально  не хочет работать {Debug_er}

Вот нашел для Вас. https://www.avrfreaks.net/forum/delayms-hangs-avr-simulator

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

В качестве доказательства - замените задержку на 1ms (_delay_ms(1);)  и увидите результат. Это только для проверки в отладчике!

#define F_CPU 10000000ul

я бы установил правильную частоту 8000000 и в Протеусе в свойствах контроллера поставил ее же.

Попробуйте так

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

 

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

void preset()
{
    DDRB=0xFF;
    PORTB=0x00;
}
void led_on()
{
    PORTB=0xFF;
    //_delay_ms(1000);
    _delay_ms(1);


}

void led_off()
{
    PORTB=0x00;
    //_delay_ms (1000);
    _delay_ms(1);

}


int main(void)
{
    /* Replace with your application code */
    preset();
    while (1) 
    {
        led_on();
        led_off();
    }
}

 

 

Изменено пользователем gogaze
Добавление информации

Мир не без добрых людей!

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

1 час назад, кое-кто сказал:

Что-то не работает библиотека для nokia3310 от  COKPOWEHEU.Перепробовал множество проектов в т.ч. примеры ,скачанные вместе с библиотекой.Всегда выдает одно

А поподробнее! Как объявлены библиотеки в заголовке? Где находятся сами файлы?2.jpg.d8462bb4c726826eed61d01c5aa3db0e.jpg1.jpg.f0cc903141db23e8ebf34e2dd1567e54.jpg

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

Мир не без добрых людей!

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

Что-то не работает библиотека для nokia3310 от  COKPOWEHEU.Перепробовал множество проектов в т.ч. 

Всё,разобрался уже.Оказывается надо было добавить файл lcd_chars.inc!!Об этом никто никогда не писал.И что это за файл?

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

5 часов назад, кое-кто сказал:

Всегда выдает одно

там написано "не могу найти lcd_chars.inc". Этот файл должен находиться рядом с остальными исходниками. Ну либо прописать путь к нему в makefile.

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

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

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

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

Доброго дня!

Спасибо за помощь!

Да я понял что это ошибка симулятора  камень то работает  и это т код ---_delay_ms(1);--  тоже выкинул студию  в ошибку

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

пока  занимался  студией   прописал в ней программатор  (usbasp) стало чуток удобнее   есть кнопка  с наименованием камня  сейчас это мега 8

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

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

 

 

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

8 часов назад, aleksandr_m328 сказал:

Да я понял что это ошибка симулятора  камень то работает  и это т код ---_delay_ms(1);--  тоже выкинул студию  в ошибку

Вот не поленился сделать видео на 2 минуты, без комментариев, и так все понятно - сначала задержка 1ms потом 100us. Обратите внимание на разницу во времени обработки задержки. 

Я на 100% не уверен, но может быть время еще зависит от мощности компьютера. У меня i5 четырехядерный.

https://yadi.sk/i/jTJ9722G3agMYM

Изменено пользователем gogaze
Ссылка на видео

Мир не без добрых людей!

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

значит это не  ошибка ...  у  Вас  симулятор ведет так-же как и меня  (это я решил) что это ошибка.

ну тогда у меня все нормально со студией(искал то чего в принципе нет)  за то  почитал .....по теме.(это не  PHP)

 

 

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

  • 10 месяцев спустя...
  • 6 месяцев спустя...

Добрый день собрал! пример из урока (в уроке atmega8A)nokia5110 и atmega328p экран пуст ничего не выводит, загорается подсветка, иногда бывает на весь экран выводит темный квадрат, в протеусе все работает? почему так может быть порты SPI на atmega8A и на 328р одинаковы,  в хидере n5110.h порты совпадают. Реализован только один вольтметр. Добавил мигание светодиода что бы понимать что контроллер работает и зашит(мигает)

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

#define HIGH 0xFF
#define LOW 0x00

void presets()
{
	DDRD = HIGH;
	PORTD = LOW;
	
	Lcd_init();
//	Lcd_clear();

//Config ADCSRA
ADCSRA|=(1<<ADEN) //задействовать АЦП
|(1<<ADPS2)|(1<<ADPS1)|(0<<ADPS0);//делитель на 128=64кГц

//ADMUX
ADMUX|=(1<<REFS1)|(1<<REFS0); //Опорное напряжение 1.1 В внутренее

}

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);
	
	unsigned int tmp=0;
	
	ADCSRA|=(1<<ADSC);
	while (ADCSRA&(1<<ADSC));
	
	tmp=(ADCL|ADCH<<8);
	return tmp;
}

int main(void)
{
	presets();
    /* Replace with your application code */
    while (1) 
    {

      Lcd_clear();
	  Lcd_print(0,4,FONT_1X, (unsigned char *)('a'));
	  Lcd_printf(0,0, FONT_1X, readADC(0),1);
	  Lcd_printf(0,1,FONT_1X,(readADC(0)*30)/1023,1);
	  Lcd_printf(0,2, FONT_1X, readADC(1),1);
	  Lcd_printf(0,3,FONT_1X,(readADC(1)*30)/1023,1);
	  Lcd_update();
	  _delay_ms(100);
	  PORTD=(1<<PIND7);
	  _delay_ms(200);
	  PORTD=(0<<PIND7);
    }
}
//_N5110_H_
// Порт к которому подключен LCD (здесь пример распиновки для ATmega8A)
// Библиотека использует аппаратный SPI, поэтому если хотите иной порт - придется реализовать SPI программно)
#define LCD_PORT                   PORTB
#define LCD_DDR                    DDRB

// Распиновка порта
#define LCD_DC_PIN                 PB1	// DC
#define LCD_CE_PIN                 PB2	// SCE
#define SPI_MOSI_PIN               PB3  // SDIN 
#define LCD_RST_PIN                PB4	// RESET
#define SPI_CLK_PIN                PB5  // SCLK 

 

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

20 часов назад, Taras Molchanov сказал:

Добрый день собрал!

поздравляю!

собрать добрый день - большое достижение...

Мудрость приходит вместе с импотенцией...

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

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

  • 2 месяца спустя...

Прошу помочь с простенькой программкой для AVR Tiny13a (накидал в Code vision AVR 3.39b):

/*******************************************************
This program was created by the CodeWizardAVR V3.39b

Chip type               : ATtiny13A
AVR Core Clock frequency: 9,600000 MHz
Memory model            : Tiny
External RAM size       : 0
Data Stack size         : 16
*******************************************************/

#include <tiny13a.h>
#include <delay.h>

unsigned char v;

interrupt [EXT_INT0] void ext_int0_isr(void)
{
v++;
if(v==4)v=0;
delay_ms (100);
}

void main(void)
{
DDRB=(1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2) | (0<<DDB1) | (0<<DDB0);
 
PORTB=(0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (1<<PORTB1) | (1<<PORTB0);

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Low level
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=(1<<INT0) | (0<<PCIE);
MCUCR=(0<<ISC01) | (0<<ISC00);
GIFR=(1<<INTF0) | (0<<PCIF);

// Globally enable interrupts
#asm("sei")

while (1)
      {
         if(v==0) PORTB.2 = 0; PORTB.3 = 0; PORTB.4 = 0;
      
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
         if(v==1) PORTB.2 = 1; PORTB.3 = 0; PORTB.4 = 0;
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
         if(v==2) PORTB.2 = 0; PORTB.3 = 1; PORTB.4 = 0;
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
         if(v==3) PORTB.2 = 0; PORTB.3 = 0; PORTB.4 = 1;
      
    }

}

Проект в proteus 8 (в прикрепленном rar) представляет управление с помощью контроллера одной кнопкой тремя светодиодами по очереди. Т.е. в исходном состоянии порты со светодиодами PB2, PB3, PB4 - низкий уровень. К PB0 ничего не подключено. Кнопка на PB1, второй конец на землю. При 1 нажатии загорается и горит PB2, при втором нажатии PB2 тухнет, зажигается PB3, при третьем - тухнет PB3 и загорается PB4, при четвертом - все порты со светодиодами выключаются. И по кругу.

При запуске в Протеусе начинают подмаргивать PB3, PB4. При первом нажатии PB2 загорается, при втором моргают PB3, PB4.

test 2 one click.rar

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

Вы про инструкцию if в языке С хоть что-то читали? Как оформляются блоки кода знаете??? Вряд-ли...

Возможно, Вам стОит переписать код так?

if(v==3) { PORTB.2 = 0; PORTB.3 = 0; PORTB.4 = 1; }

 

 

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

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

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

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

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

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

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

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

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

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

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

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