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

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


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

Блин... Это реально лишняя морока. Пусть при достижении заданной температуры... Просто засветится диод... Большой такой 10мм... Где то на передней панели :crazy: ... А вот замена светиков, прикольная штука

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

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

KOBRAZ a перевернуть изображение на ЖК5110, нельзя? Что то я тупанул с платой :unknw: Да с такой замороченой платой. Переделывать, вообще жуть...

Ого, по ходу надо переписать все символы :unsure: в библиотеке... Все таки, переделать плату проще :wacko:

CXEMA2.lay6

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

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

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

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

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

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

А смысл? Сам екран то переворачивается!

У нео ж коннектные площадки с обеих сторон специально!

Ну а если вы с телефона долбали - прийдется травить заново!

Кстати - АцтойСофтом не пользуюсь! Следовательно спринтлайоут не установлен :(

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

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

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

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

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

gkfnf.pngЕсли я его переверну, то и ноги местами поменяются. По любому платку переделывать...

:blink: А что, в вашем понимании, не ацтой??

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

Только DeepTrace!

Только качественный и не ломанный а бесплатный софт :)

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

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

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

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

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

Только DeepTrace!

Только качественный и не ломанный а бесплатный софт :)

На сайте нашел только Dip Trace. И потом, она платная. А шаровая имеет какие то ограничения, еще не разбирался... Это она?
Ссылка на комментарий
Поделиться на другие сайты

:crazy: Там столько замороки

Она мне кажется ничем почти не отличается от протеуса. И толку с нее как со спринта, одно и то же. Но это только мое мнение

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

Софт позволяет рисовать принцыпиальные схемы! Их же - встроенными автотроассировщиками переводить в платы!

Одно из основных достоинств - огромнейшай база компонентов привязанных к стандарту! А не как в СП - чужие либы в которых кто как хочет так и /////т.

Можно долго и безсмысленно доказывать кому либо что-то! Но понять преимущества - можно лишь попробовав самому. У меня знакомый - все время рисовал в СП! И кричал что лутче нет!

Я его 3 раза усаживал за диптрейс! Он отнекивался и говорил что ничего лутче СП не придумали ибо она божественна...

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

Прошло полгода - единственное что от него слышу когда открывает чей то проект -ето что-то типа

.,:,.я !!! Ну чо низя было в дипе выложить? Н(;!., этот СЛ..?!?! Как вобще мона убиваться этим топором ап стену.. дайте яду и так далее :)

Но откровенно говоря - все же выбор каждого - ето выбор каждого! Некоторые пишут в 6 студии - некоторые в 4! Некоторые вобще в квавре - поди им обьясни что квавр ето оцтой...

Кароче нет хорошего или плохого варианта для всех! Ведь у каждой жабки свое болото!

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

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

Не так то просто научиться пользоваться ею. :umnik2: За пару часиков. Вопросов тьма. Да, автотрасса порадовала. Поиск компонентов вообще не порадовал :wacko: тут нет такого дисплея, или я не заметил. Так же, чтобы что то влепить, надо точно знать его название. О_о... А есть какая то платка с таким дисплеем??

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

Прошу помощи! Смотрел седьмой урок, сделал все как надо, однако АДЦ возвращает 0! Всячески варьировал циклы ожидания и т.д но бестолку..

#ifndef F_CPU

#define F_CPU 8000000

#endif

#include <avr/io.h>

#include <util/delay.h>

#include <avr/sfr_defs.h>

#include <a_lib/n5110.h>

#include <a_lib/n5110.c>

#include <stdlib.h>

void init()

{

DDRB=0xff;DDRD=0xFF;PORTB=0;PORTD=0;

DDRC=0;PORTC=0;

Lcd_init();Lcd_clear();Lcd_update();

ADCSRA|=(1<<ADEN)|(1<<ADPS0)|(1<<ADPS1)|(1<<ADPS2);

ADMUX|=(1<<REFS0)|(1<<REFS1)|(1<<ADLAR)

|(0<<MUX0)|(0<<MUX1)|(0<<MUX2)|(0<<MUX3);

}

void loading()

{

Lcd_prints(1,1,FONT_1X,(unsigned char*)PSTR("Hello men"));Lcd_update();_delay_ms(200);//можно написать что угодно

Lcd_prints(1,2,FONT_1X,(unsigned char*)PSTR("Loading..."));Lcd_update();_delay_ms(50);//можно написать что угодно

Lcd_rect_empty(5,30,78,38,PIXEL_ON);Lcd_update();_delay_ms(200);

for(int i=1;i<=74;i++)//Тут вывод на экран значения % и ползущий индикатор вправо.

{

Lcd_rect(5,38,8,i,PIXEL_ON);

char mass[10];

itoa(i*1.35,mass,10);//измени иножитель - пропорциональность числа и индикации

Lcd_print(5,5,FONT_1X,(unsigned char*)mass);

Lcd_prints(7,5,FONT_1X,(unsigned char*)PSTR("%"));

Lcd_update();_delay_ms(50);//скорость загрузки

}

Lcd_prints(5,5,FONT_1X,(unsigned char*)PSTR("100%"));Lcd_update();

_delay_ms(50);//переход на след экран далее

Lcd_clear();Lcd_update();//после очистки можно писать на след экране что угодно

}

int read_ADC()

{

ADCSRA|=(1<<ADSC);

m1: if (bit_is_set(ADCSRA,ADSC)){goto m1;}

return ADC;

}

int main(void)

{

init();

loading();

char acd[5];

itoa(read_ADC(),acd,10);/*число, массив, система исчисления*/

Lcd_print(1,1,FONT_1X,(unsigned char*)acd);Lcd_update();

while(1)

{

_delay_ms(300);

}

}

Прилагаю схему в протеусе

post-177298-0-80834600-1411335830_thumb.jpg

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

ADCSRA|=(1<<ADSC);

m1: if (bit_is_set(ADCSRA,ADSC)){goto m1;}

За такое извращение надо по рукам бить. Впрочем, как ни странно, этот код тоже рабочий.

Ошибка в схеме, довольно красивая. Поставьте вольтметр впараллель измерителю контроллера, а не батарейке (между ADC0 и землей, а не между плюсом и минусом батарейки).

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

На будущее: не выкладывайте всю портянку кода, да еще без тегов [CОDE][/CОDE], а только тестовую программу, которая ведет себя не так как должна.

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

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

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

ADCSRA|=(1<<ADSC);

m1: if (bit_is_set(ADCSRA,ADSC)){goto m1;}

За такое извращение надо по рукам бить. Впрочем, как ни странно, этот код тоже рабочий.

Ошибка в схеме, довольно красивая. Поставьте вольтметр впараллель измерителю контроллера, а не батарейке (между ADC0 и землей, а не между плюсом и минусом батарейки).

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

На будущее: не выкладывайте всю портянку кода, да еще без тегов [CОDE][/CОDE], а только тестовую программу, которая ведет себя не так как должна.

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

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

Короче, я тут с утра прогнул атмегу8... через клон МКII Потом выставил фюзы на 1 мгц. И после этого программатор сдурел :vava:prog.pngЧто пишет, не понять вообще :unknw:

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

Что то с программатором. Он даже сигнатуру новых чипов не читает. Хотя Допер, работает преспокойно

Setting mode and device parameters.. OK!

Entering programming mode.. FAILED!

Leaving programming mode.. OK!

Прошу прощения! Разобрался. Частота программатора была 1мгц, поменял на 51гц... Заработал :heat:

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

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

Всем добр го времени суток.

Засиделся я что то :king:

Ребята посмотрел часть обучения по курсу. И задался целью сделать Герляну чтобы при нажатии кнопки режим работы светодиодов переключался. Но что то не могу допетрить как это сделать :help:

Знатоки, буду очень рад вашим подсказкам. Вот мой код.

// atmega8

#define F_CPU 8000000

#include <avr/io.h>

#include <util/delay.h>

void present()

{

DDRB = 0xFF;

PORTB = 0x00;

DDRC = 0x00;

PORTC =0xFF;

DDRD = 0xFF;

PORTD =0x00;

}

void rez_one(){

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

if (i<=6)

{

PORTB = (1<<i);

_delay_ms(500);

}

else if (i>5)

{

PORTD = (1<<i-7);

_delay_ms(500);

}

}

void rez_two()

{

PORTB = 0xFF;

PORTD = 0xFF;

_delay_ms(1000);

PORTB = 0x00;

PORTD =0x00;

_delay_ms(1000);

}

void rez_tree()

{

PORTB = (1<<0);

PORTB = (1<<1);

PORTB = (1<<2);

_delay_ms(500);

PORTB = (1<<3);

PORTB = (1<<4);

PORTB = (1<<5);

_delay_ms(1000);

}

void def()

{

PORTB = 0x00;

PORTD =0x00;

}

int main(void)

{ int a = 0;

present();

while(1) if (PINC&(1<<PC3))

{

break;

}

else{

rez_one();

}

}

Очень жду ответа, любопытство меня съедает :diablo: ))

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

Пока ожидаете ответа, почитайте тему.

В частности, пару постов назад:

...На будущее: не выкладывайте всю портянку кода, да еще без тегов [CОDE][/CОDE], а только тестовую программу, которая ведет себя не так как должна.

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

К сожалению просмотр вашего кода не навел меня на ход ваших мыслей!

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

Посему - начните с разработки алгоритма!

То есть подумайте что должна делать программа в целом. Разбейте ее на блоки!

Потом просто опишите блоки в виде кода! Если что-то не будет срабатывать - пишите поможем!

Постарайтесь сделать блоки универсальными! Что бы не писать каждый раз

void rez_tree()

{

PORTB = (1<<0);

PORTB = (1<<1);

PORTB = (1<<2);

_delay_ms(500);

PORTB = (1<<3);

PORTB = (1<<4);

PORTB = (1<<5);

_delay_ms(1000);

}

Напишите универсальную функцию или макрос!

Успехов! :)

Правильно оформляйте топики - используя соответствуюшие теги!

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

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

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

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

[/b]
// atmega8
#define F_CPU 8000000
#include <avr/io.h>
#include <util/delay.h>

void present()
{
DDRB = 0xFF;
PORTB = 0x00;

DDRC = 0x00;
PORTC =0xFF;

DDRD = 0xFF;
PORTD =0x00;

}


void rez_one(){			 //режим номер 1 Светодиоды загораються поочередно

											 for (int i=0; i<=10;i++)
if (i<=6)
{
PORTB = (1<<i);
_delay_ms(200);
}
else if (i>5)
{
PORTD = (1<<i-7);
_delay_ms(200);
}

}


void rez_two()
{						 //Режим №2 Мигание всех светодиодов
											 PORTB = 0xFF;
PORTD = 0xFF;
_delay_ms(1000);
PORTB = 0x00;
PORTD =0x00;
_delay_ms(1000);
}


void rez_tree()
{
// Режим №3 Светодиды загораються переменно линиями ????
											 PORTB = (1<<0);
PORTB = (1<<1);
PORTB = (1<<2);
_delay_ms(500);
PORTB = (1<<3);
PORTB = (1<<4);
PORTB = (1<<5);
_delay_ms(500);
}




int main(void)
{ int a = 0;
present();
while(1)
{

rez_one();
_delay_ms(3000);
rez_two();
_delay_ms(3000);
rez_tree();
_delay_ms(3000);


}

}

[b]

Режим номер № 1 Попеременное зажигание диодов ---Реализованно

Режим номер №2 Мигание всех диодов с интервалом 1 секунда

Режим номер №3 Светодиоды загораются параллельными линиями с интервалом в 1 секунду

Эти режимы должны переключаться циклично друг за другом с помощью нажатия кнопки

Ребята честно я понятия не имею как это сделать. Буду благодарен за подсказку и помощь в реализации задачи :help::king:

0c1dec5d7cdc.png

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

inerc

Ребята честно я понятия не имею как это сделать. Буду благодарен за подсказку и помощь в реализации задачи

опрашивать кнопку и если нажата то инкременировать счетчик режима (с проверкой на переполнения= 3 режима) и через if или case опрашивать какой режим и не забудьте подтянуть порт с кнопкой к +

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

Я вам ответил у вас нет проблемы с написанием кода! Вы не сформировали мысль!

Как только вы ее сформируете - описать ее буквами в студии будет не проблема!

Кроме того вы продолжаете решат задачу глобально! Если не получаеться - разбейте на БЛОКИ и решайте поблочно! ДОбились работы одного - переходите к следующему! Просто писать вместо вас код никто не будет! Кроме того вы запросто справитесь сами!

Просто не пытайтесь проглотить сразу весь пирог!

Если не поняли смысла - упрощу

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

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

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

Добрый день.возникла проблема с шестым уроком(подключение lcd n-3310) сам-чайник, разобраться не смог. у меня стоит proteus v7.2 sp2 ,пытаюсь открыть прикрепленный к уроку файл со схемой ( lcd_5110). Мой протеус ругается,что мол версия слишком устарела (рис. fail). Тем не мение библиотеки добавились нормально, и ,как элемент в протецсе nokia 3310 48x48 у меня появился. решил собрать схему самостоятельно как показано в уроке. Код в avrs studio 4 скомпилировался без ошибок(сам код на рис avr_studio_4_code,т.к строк меньше 10-ти решил рисунком).

Загрузил сгенереный файл в атмегу 8,поставил частоту 8мгз., но при запуске 1 раз мигнула красным 18-я лапка контроллера.и на этом все прекратилось (в запущенном режима рис. my_schem ). Пожалуйста помогите реанимировать экран. В чем может быть проблема и как ее решить?

post-184381-0-41148300-1412492570_thumb.jpg

post-184381-0-09894900-1412492749_thumb.jpg

post-184381-0-27805800-1412493041_thumb.jpg

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

ДЛя начала оновите протеус до 7.10 и попробуйте запустить тот проект что идет в архиве! По результатам будем думать дальше!

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

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

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

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

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

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

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

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

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

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

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

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

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