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

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


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

 

В вашем проекте неправильно объявлен массив строк. Почему-то используется первая, ошибочная версия, хотя на форум были выложены правильные.

Нет функции main(). Хотя в этом посте она упомянута...

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

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

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

По поводу void name{....} предположил, что туда вписывают основные настройки портов (предустановки).

А в main{name()....} основной код.

Посоветуйте литературу по Си для чайников с «0»? Для тех кто к программированию отношение не имел (технарь).

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

Керниган и Ричи "Язык Си"

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

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

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

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

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

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

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

Всем привет. На форуме у Вас первый раз, так что сильно не ругайтесь)

Спасибо за создание курса, очень интересно, но завис на 6 уроке:(

Ладно то что в протеусе8,5 экран не работает прочитал, поставил 7,4 тоже не работает, не беда скачал 7,6 ураа заработало.

Видимо потому что я только учусь, не работает у меня на реальном экранчике:(

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

IMG_20161216_154707.jpg

IMG_20161216_154654.jpg

Код пишется в 7 студии. МК Atmega8

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

Заранее спасибо.

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

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

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

@S1BaR1T , приветствую. Свой дисплей подсоединил нормально. Контакты и в правду на твоём как то по другому. Но от перемены слагаемых...

// Распиновка порта (из библиотеки n5110.h) 
LCD_DC_PIN                 PB1    // DC
LCD_CE_PIN                 PB2    // SCE
SPI_MOSI_PIN              PB3  // SDIN 
LCD_RST_PIN               PB4    // RESET
SPI_CLK_PIN                PB5  // SCLK 

Твоя распиновка:

1 Vcc - +5V( или 3.3V)

2 GND -5V

3 LCD_CE_PIN                 PB2    // SCE

4 LCD_RST_PIN               PB4    // RESET

5 LCD_DC_PIN                 PB1    // DC

6 SPI_MOSI_PIN              PB3  // SDIN 

7 SPI_CLK_PIN                PB5  // SCLK 

8 подсветка дисплея +5В или 3,3 (на усмотрение).

Во вложении рабочий код с библиотекой на дисплей, схема протеуса 7.

LCD_5110.zip

LCD proj.rar

lcd_5110.DSN

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

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

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

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

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

Поправлю: GND - 0 В, а не -5 В. Напряжения обычно меряются относительно земли, GND, если это явно не указано. Обозначение -5 В обозначает подачу отрицательного напряжения, то есть двуполярный источник питания.

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

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

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

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

#include <avr/io.h>
#include "n5110.h"

int main(void)
{
 PORTC |= (1<<PC0)|(1<<PC1)|(1<<PC2);
 Lcd_init();
    while(1)
    {
      Lcd_clear();
		switch(PINC & 0b111){
			case 7: Lcd_prints(0,1,FONT_1X,(unsigned char *)PSTR("Северный")); break;
			case 6: Lcd_prints(0,1,FONT_1X,(unsigned char *)PSTR("Сев.-Восточный")); break;
			case 5: Lcd_prints(0,1,FONT_1X,(unsigned char *)PSTR("Восточный")); break;
			case 4: Lcd_prints(0,1,FONT_1X,(unsigned char *)PSTR("Юго-Восточный")); break;
			case 3: Lcd_prints(0,1,FONT_1X,(unsigned char *)PSTR("Южный")); break;
			case 2: Lcd_prints(0,1,FONT_1X,(unsigned char *)PSTR("Юго-Западный")); break;
			case 1: Lcd_prints(0,1,FONT_1X,(unsigned char *)PSTR("Западный")); break;
			case 0: Lcd_prints(0,1,FONT_1X,(unsigned char *)PSTR("Сев.-Западный")); break;
			default: break;
		}
		Lcd_update();	
    }
}

кнопки PC0-PC2 и на общий

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

@Berg ,большущее спасибо:friends:!!!! Всё работает:dance2:. Теперь усовершенствуем до 16 значений (изучим функцию switch), добавим задержки, тестинг и монтаж! Теперь антенна Яги будет под защитой от ветра (лобового порыва). Как соберу, фото прилажу. С уважением, Николай (Rx9chy/8) с полярного круга!

@COKPOWEHEU книга «Язык Си» шикарная, как раз для таких как я!!! Очень интересная! Спасибо!

20140821_204150.jpg

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

 Viktor26

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

Да, скаченный Proteus 8 с наших торрент-тракеров  действительно не выводит данные на  виртуальные lcd 3310. Но кто мешает скачать Proteus 8.1,  на котором всё ОК! с  piratebay.

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

Безымянный.png

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

А а чем, извините меня, я не прав. ?? Разговора про 8.1 не было. А то что вы невнимательно смотрели видио и не удосужились почитать первые посты этой темы, это факт. Я Вам явно на это указал. Вы считаете что это вам не помогло? Я думаю помогло. Вы же вон сразу кинулись новые протеусы качать и пробовать.  А если бы были чуть внимательнее и вопросов бы у вас было меньше. А самое интересное то, что через одного новички об этом спрашивают, чуть ли не на каждой второй странице есть ответ на этот вопрос, а вы меня в чем то обвиняете. Странно.. да и ладно))

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

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

@URRS Спасибо, еще тыщу раз проверил контакты, библиотеки все же взял не твои, а по совету @COKPOWEHEU ему тоже спасибо, завел все на протеусе, записал в мк и ура все заработало. К сожалению, не могу сказать в чем точно была причина, но точно во мне, а не в оборудовании. Совет новичкам: будьте внимательны и проверьте все не однократно, чтоб не создавать кучу постов. А то будете как я:)

Но все равно, теперь вопрос, извиняюсь если не сюда.

Нашел датчик, насколько я понимаю это датчик влажности(могу ошибаться). Вытащен он был из какого-то МФУ. К большому своему сожалению не помню что за модель. В интернете информации по датчику найти не могу. Помогите подключить к ATMEGA8. Заранее спасибо.

1.jpg

2.jpg

3.jpg

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

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

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

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

Да видеокурсы по программированию вообще бесполезны. Если человек не умеет читать книги или хотя бы статьи, программировать он не сможет.

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

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

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

Отпишусь для новичков как я. Proteus 8.5 SP0 (Build22067) скаченный с торрента уже имеет в себе библиотеку и работает нормально с 5110 дисплеем без каких либо танцев с бубнами.

5110test2.png

Отдельно отмечу, что чтобы все работало нужно устанавливать этот дисплей из внутренней библиотеки и не нужно ничего импортировать !!! Поэтому чтобы все работало нужно оформлять практику в ручную(строить схему вручную) а не загружать готовый файл.

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

Сейчас я пишу свой относительно небольшой проект. Я использую старую версию библиотеки 5110, у меня много пременных float, вывожу я все переменные (в т.ч. и целые) через Lcd_printf. Соответственно каждая функция дико разрослась, поэтому я начал думать об оптимизации. Я это к тому что :

Попробовал я библиотеку от COKPOWEHEU с выводом все тех же переменных(самых разных) через вывод с фиксированной точкой (к примеру умноженных на 100 и 2 знаками после точки) и не получил никакой выигрыш во flash памяти. У меня как было порядка 6800 байт занято так и осталось, а вот озу с 650 поднялось почти до 800. Я использовал direct версию с выключенным дабл.  Хотя при выводе единичных переменных выигрыш в памяти получается.

Отсюда 2 вопроса :

1. Что там (в библиотеке от COKPOWEHEU) могло съесть 150 байт ОЗУ ?

2. Кто нить тоже сравнивал в своих проектах разницу в выигрыше между классической версией и  от COKPOWEHEU ?

PS : Я, кстати, вот еще что заметил. Atmel Studio 7 безбожно постоянно вылетает. Чем больше проект тем чаще. Причем вылетает на пустом месте когда останавливаешь дебаг. Проверял на компе и на ноуте. В итоге перешел на версию 6.2 пока тут такой глюк не замечен.

 

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

Странно. Сама библиотека резервирует 504 байта под видеобуфер (на самом деле он там не нужен, но для совместимости оставлен), по 2 байта на текущую позицию, начало и конец измененной области, и по 1 байту на флаги размера символов и необходимости обновления. Там физически не выделяется больше 512 байт. Возможно, вы используете числа с плавающей точкой где-то еще в коде. Ну а так, все коды открыты, функции несложные (хотя местами документации и не хватает). Да и писались эти версии в основном для демонстрационных целей: на практике хранить графический видеобуфер вряд ли необходимо, проще текстовый буфер, да и оптимизировать многое можно.

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

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

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

Всем доброго времени суток! Я понимаю, что опоздал со своим сообщением и опоздал не хило, но все же. Я полный НУЛЬ в радиоэлектронике и микроконтроллерах в частности, но так, как по работе все чаще приходится сталкиваться с МК, решил изучить данную тему и наткнулся на данный видеокурс. У меня вопрос по заданию к третьему уроку, я его выполнил, и в протеусе вроде как все работает, но хотелось бы услышать, что я сделал неправильно по коду. Заранее благодарю тех, кто объяснит и не будет смеяться.

//Atmega8A
#define F_CPU 8000000 //Задаем тактовую частоту процессора
#include <util/delay.h> //Подключаем библиотеку задержек
#include <avr/io.h>
#include <stdlib.h>
#include <time.h> 


    

void preset(){
    DDRB = 0xFF;
    PORTB = 0x00;
    DDRC = 0xFF;
    PORTC = 0x00;
    DDRD = 0xFF;
    PORTD = 0x00;
}

int main(void)
{
    preset();
    while (1) 
    {
        srand(time(NULL));
        int rand_PORT=rand()%4;//Генерируем порт от 1-3
        for(rand_PORT=1; rand_PORT<=4;rand_PORT--){
            
            PORTB = rand();
            _delay_ms(1000);
            PORTC = rand();
            _delay_ms(1000);
            PORTD = rand();
            _delay_ms(1000);
            
                        }
        
        
    }
}

 

 

схема.png

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

Цитата

У меня вопрос по заданию к третьему уроку

Еще бы само задание узнать...

Цитата

srand(time(NULL));

Бесполезно: количество тактов с момента старта всегда будет одинаковым. Хотите более-менее нормальный рандом - используйте внешние данные, АЦП хотя бы.

Цитата

int rand_PORT=rand()%4;//Генерируем порт от 1-3
        for(rand_PORT=1; rand_PORT<=4;rand_PORT--){

То есть вы проинициализировали переменную рандомом и на следующем же такте присваиваете ей единицу. А зачем? Да еще счет какой-то странный: от 1 до 4, через вычитание. Да еще переменная 16-битная - зачем?

Цитата

#define F_CPU 8000000 //Задаем тактовую частоту процессора

Это лучше выносить в настройки проекта или makefile. Если в проекте будет несколько файлов исходников (*.c, *.cpp) то частоту придется указывать в каждом, а это простейший путь к ошибкам.

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

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

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

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

Всем доброго вечера. На днях друг познакомил с так званой платформой ардуино. Погуглил, нашел информацию что можно шить самому мк и проводить обвязку самому. Зная язык С, решил даже не брать дуино, и вот возникли пару вопросов. Ответы пытался гуглить, но потом надоело и забил на них:

8-битным контроллерам проще и быстрее работать с переменными размером с байт (uint_8, short int например), не так ли?

Для не сложных проектов, эксперементов для ознакомления F_CPU можно ставить в мегагерц, и нужно при прошивке также ставить 1МГц?

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

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

Цитата

Зная язык С, решил даже не брать дуино

Справедливости ради, а Ардуине не Си, а С++ (точнее, даже avr-g++) с собственным набором библиотек.

Цитата

Ответы пытался гуглить, но потом надоело и забил на них:

Если бы начали с ассемблера, ответ на первый вопрос был бы очевиден. Впрочем, надеюсь, еще придете к нему. В AVR ресурсов немного, иногда придется экономить такты и байты (но ради Омниссии, без фанатизма! Преждевременная оптимизация хуже ее отсутствия) или хотя бы понимать как код работает и почему работает не так как ожидалось.

Цитата

8-битным контроллерам проще и быстрее работать с переменными размером с байт (uint_8, short int например), не так ли?

Почти всегда так.

Цитата

Для не сложных проектов, эксперементов для ознакомления F_CPU можно ставить в мегагерц, и нужно при прошивке также ставить 1МГц?

Не совсем верно. Частота задается так называемыми fuse-битами, они же отвечают за источник тактирования, поведение ресета и многое другое. Новичку рекомендуют просто не менять их значение, потому что исправить его достаточно сложно, а почти все, кто эти биты трогал, хоть раз их портили. Ну а частота контроллеров и заводскими установками обычно именно 1 МГц.

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

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

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

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

Ну а частота контроллеров и заводскими установками обычно именно 1 МГц.

Ну вроде на ардуинах по умолчанию не 1 МГц. (для просто мк согласен)

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

Если бы начали с ассемблера, ответ на первый вопрос был бы очевиден. Впрочем, надеюсь, еще придете к нему. В AVR ресурсов немного, иногда придется экономить такты и байты (но ради Омниссии, без фанатизма! Преждевременная оптимизация хуже ее отсутствия) или хотя бы понимать как код работает и почему работает не так как ожидалось.

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

АТмега8 и АТтини13 думаю пойдут для начала?

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

Цитата

Ну вроде на ардуинах по умолчанию не 1 МГц. (для просто мк согласен)

На ардуинках зависит от модели. Чаще всего стоит кварц. На 16 МГц вроде - могу ошибаться, никогда ардуинки в руках не держал. Но ведь и chotke не собирается Ардуину воспроизводить, а хочет сразу учиться нормально.

Цитата

АТмега8 и АТтини13 думаю пойдут для начала?

Да, вполне. ATmega8 и ATmega48/88/168/328 на мой взгляд наиболее удачный выбор. Самый маленький из Мег корпус (DIP-28, корпуса smd для обучения подходят хуже, поэтому не рассматриваем), но при этом достаточное количество выводов и периферии: и таймеры, и АЦП, и UART с SPI.

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

.

Вы же в курсе, что в эти контроллеры на заводе обычно не прошивается загрузчик (в отличие от ардуины) и для прошивки потребуется программатор?

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

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

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

Вы же в курсе, что в эти контроллеры на заводе обычно не прошивается загрузчик (в отличие от ардуины) и для прошивки потребуется программатор?

Да как бы да) Прошивку сам буду писать. Благо у того же Китая есть дешевые usbasp, или на крайняк есть лпт порт.

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

В атмел студио накинул небольшой код - вывод двузначного числа на два семисегментных индикатора. Время выполнения функции почти 0.001 секунд. Так как я в душе перфекционист, и двумя руками за оптимизацию, вопрос: не слишком ли долго? 3 провода, 1МГц камня. Спасибо.

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

Зависит от подключения. Я обычно использую динамическую индикацию с частотой обновления больше 200 Гц (иначе заметно мерцание). Вы бы лучше показали свой код и схему, можно было бы говорить более конкретно.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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