Jump to content
admin

Видеокурс По Avr-Микроконтроллерам Для Начинающих

Recommended Posts

kobraz, в тридцать я только заимел книгу по МК51. Была нужда - изучил и ассемблер, и компиляторы... Нужда исчезла, желания не стало - все забросил и забыл. Теперь просто лень.

Так что, Вы правы - нет необходимости и есть отговорки (семья, работа, ...). Вот и ленимся. :(

Share this post


Link to post
Share on other sites

Приветствую!

Моя домашняя работа по LCD 5110 (он же 3310).

P.S. Спасибо за видеокурс! :yes:

// CPU = ATMega8A
#define F_CPU 8000000
#include <avr/io.h>
#include <stdlib.h>
#include <util/delay.h>
#include "n5110.h"
void startup()
{
Lcd_init();
Lcd_clear();
for (int i=1; i<=6; i++)
{
 Lcd_circle(8,24,i,PIXEL_ON);
}
Lcd_circle(78,24,5,PIXEL_ON);
Lcd_rect_empty(8,21,73,27,PIXEL_ON);
Lcd_line(20,18,20,30,PIXEL_ON);
Lcd_line(40,18,40,30,PIXEL_ON);
Lcd_line(60,18,60,30,PIXEL_ON);
Lcd_prints(4,1,FONT_1X,(unsigned char*)PSTR("Thermo"));
Lcd_prints(2,4,FONT_1X,(unsigned char*)PSTR("20"));
Lcd_prints(6,4,FONT_1X,(unsigned char*)PSTR("40"));
Lcd_prints(10,4,FONT_1X,(unsigned char*)PSTR("60"));
Lcd_update();
}
int main(void)
{
   startup();
while(1)
   {
 for (int i=21; i<=60; i++)
 {
  Lcd_rect(10,27,6,i,PIXEL_ON);
  Lcd_update();
  _delay_ms(50);
 }
   }
}

Share this post


Link to post
Share on other sites

в целом разделение на статику и динамику сделали правильно!

Мне вот интересно - почему все делают бегущий уровень прямоугольником а не линией? Добавляя по 1 к координатам У

Lcd_line(10, 20+i, 15, 20+i, PIXEL_ON)

?

Share this post


Link to post
Share on other sites

Особенности схемотехники и трассировки печатных плат для STM32WB55

Разработка новых устройств на базе беспроводного микроконтроллера STM32WB от STMicroelectronics может быть сделана в короткий срок, если выполнять некоторые важные правила и воспользоваться готовыми конструктивными решениями и рекомендациями инженеров ST.

Читать статью

Такую функцию лучше делать в цикле, что-бы не было пропусков линий, и визуально получается красивее.

Share this post


Link to post
Share on other sites
                     

CoolGaN - на предельной скорости коммутации!

Решения на галлий-нитриде (GaN) обладают фундаментальными преимуществами перед кремнием. В частности, имея более высокую критическую напряжённость электрического поля, в сравнении с традиционными кремниевыми транзисторами, транзисторы на основе галлий-нитрида обладают выдающимися динамическими характеристиками, что позволяет коммутировать их на высоких частотах. Семейство CoolGaN™ – это именно то, что необходимо, чтобы поднять ваши устройства на принципиально новый уровень. Мы собрали все самые интересные материалы по данной теме на одной странице.

Читать статьи

прочитал немного понял что это такое

но смущает использование много незнакомых слов для меня

Share this post


Link to post
Share on other sites

сидел только что разбирался как линиями сделать

очень умно в жизни бы не догадался

и хотел бы разобраться с этими { } скобами

так как понимаю ихнюю суть но не до конца как они работают

Share this post


Link to post
Share on other sites
void Test() //Функция Тест (в круглых скобках принимаемый параметр. Если в них пусто - ничего не принимаем)
{
//между скобками находится то что ета функция делает
}
Пример
void MyLine(int pozition_X, pozition_Y)
{
Lcd_clear();
Lcd_prints(pozition_X, pozition_Y, FONT_1X, (unsigned char*)PSTR("Hellow"))
Lcd_update();
}
Использование
MyLine(0, 1);
Очистит екран и выведет в первой строке надпись Hellow

Share this post


Link to post
Share on other sites

всем привет

чего такая тишина ?

наверное выходные :)

жду следующего ура

когда планируется выпустить ?

Share this post


Link to post
Share on other sites

Выполняю домашнее задание. Ошибка.

04_05_2014_17_31_08.jpg

Что делать?

P.S. Файл _mingw.h в папке include есть.

Edited by Tantrum

Share this post


Link to post
Share on other sites

В папке include есть и тот и тот уже. Но когда скачивал, был с черточкой.

Share this post


Link to post
Share on other sites

его надо прописывать в таких "" кавычках. можно даже полный путь "c:\bla-bla\file.h"

Share this post


Link to post
Share on other sites

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

А вот кавычки для своих библиотек таки надо использовать ""

Я кстати говорил об этом в видеоуроке!

Ну и до кучи!

Господа - отснял наконец-то заключительную часть видео уроков с теорией!

АЦП - Теория и практика!

Тема очень широкая, сложная и простая одновременно. Старался разложить по полочкам все нюансы.

Так что смотрите не спеша!

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

Одним словом - кто прошел все уроки и делал домашку - соберет устройство без проблем :)

Share this post


Link to post
Share on other sites

Да, только что досмотрел последние уроки.

А это домашнее задание еще самое первое.....

Вообще эта библиотека там нужна..? (mingw.h)

Edited by Tantrum

Share this post


Link to post
Share on other sites

Ошибка осталась...

Извините - но я не в курсе что это за библиотека и для чего она :(

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

Сделайте все как надо и если ошибка останется выложите код и ошибку!

Edited by kobraz

Share this post


Link to post
Share on other sites

Вот полный код:

//Atmega8
#define F_CPU 8000000
#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
#include "mingw.h"
#include <time.h>
void preset(){
DDRB = 0xFF;
PORTB = 0x00;

DDRD = 0xFF;
PORTD = 0x00;

DDRC= 0xFF;
PORTC = 0x00;
}

int main(void){
preset();
srand(time(NULL));
int val = rand() % 2;
switch (val){
case 0:
PORTB = 0xFF;
_delay_ms(200);
PORTB = 0x00;
_delay_ms(200);
break;
case 1:
PORTC = 0xFF;
_delay_ms(200);
PORTC = 0x00;
_delay_ms(200);
break;
case 2:
PORTD = 0xFF;
_delay_ms(200);
PORTD = 0x00;
_delay_ms(200);
break;
}

while(1)
{

}
}

А ошибка полностью видна на скриншоте.

Оно начало выдавать эту ошибку после того, как я скачал и вписал в код библиотеку <time.h>

Edited by Tantrum

Share this post


Link to post
Share on other sites

тайм.аш если добавляли тоже кавычки меняйте

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

Edited by kobraz

Share this post


Link to post
Share on other sites

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

Код:

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

static int delay = 70;

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

DDRD = 0xFF;
PORTD = 0x00;

DDRC= 0xFF;
PORTC = 0x00;
}

int main(void){
preset();

int temp = -1;

while(1)
{
int val = rand() % 3;
while(temp == val) {
val = rand() % 3;
}
temp = val;

switch (val){
case 0:
PORTB = 0xFF;
_delay_ms(delay);
PORTB = 0x00;
_delay_ms(delay);
break;
case 1:
PORTC = 0xFF;
_delay_ms(delay);
PORTC = 0x00;
_delay_ms(delay);
break;
case 2:
PORTD = 0xFF;
_delay_ms(delay);
PORTD = 0x00;
_delay_ms(delay);
break;
}
}
}

Edited by Tantrum

Share this post


Link to post
Share on other sites

если не сложно -отредактируйте свои посты, код в тег код и под спойлер

брат если подскажет:)

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By pedrofan
      Здравствуйте, помогите, пожалуйста, данная программа должна несколько раз инкрементировать введеное с клавиатуры значение, например, если я ввожу 31, то на выходе должно получиться 31 32 33 34, а в протеусе получается вот. Прилагаю код.

      lab_4_1.asm
    • By RIMUS1989i
      Здравствуйте. Затеялся собрать анализатор спектра на светодиодах, 20x20 светодиодов, МК ATMEGA328P. 
      Долго ломал голову, как переключать столбцы без использования МК, дабы его не загружать.И вот что у меня получилось. Набросал тестовую прошивку для теста в протеусе. 
      При инилизации подается импульс на вторую ножку U4a, и на предпоследнем столбце.
      Думал сетку сделать на 5 сдвиговых регистрах (как раз 40 сигнальных линий), но боюсь мощности МК не хватит для обработки FFT и вывода на матрицу, будет подвисать.
      Кто что думает по поводу схемы?
      бегущая строка.pdsprj Natali_2012_program.hex
    • By Максим123456789
      делаю диплом, в схеме у меня микроконтроллер PIC16F688 и мне нужно его заменить на ATmega. Не могу найти похожий
    • By Anton Bondarenko
      Всем привет
      Прошу не ругать, впервые подобный вопрос задаю.
      Хочу сделать прибор, который будет посылать сигнал, когда возле прибора будет проходить металлический предмет. 
      — угол отслеживания до 30° а лучше прямая линия, траектория
      — время реакции очень высокое до 100 мс
      — ширина проема в котором нужно сканировать от 10 до 20метров,
      — передача сигнала через вифи
      Может есть готовые решения, или отдельные компоненты.
      Подскажите пжл в каком направлении искать.
      Смотрел датчики движения, но главная проблема — время реакции.
      Спасибо
       
  • Сообщения

    • Для "звуковых пакетов" между компаратором и входом INT поставить перезапускаемый одновибратор с длительностью импульса больше 30 мс. Или вместо одновибратора при возникновении прерывания отключать его(прерывание) на 31...199 мс. При заявленной точности компаратор вообще не нужен.
    • обновлю.  фэмы.  кварцы в карболите   кварцы в металл. корпусе . 
    • Это зависит от площади озвучиваемого помещения или улицы. Проще говоря для площади до 100квм пары 4а32 вполне хватает, причём с их чуйкой мощного усилка они не потребуют. Усь на паре tda7293 по схеме итуна или комбинированной оос справиться на раз два. Знаю очень много проводильщиков свадеб и мероприятий у которых самодельная акустика на Ломовских 4а32 и его поздних модификациях от Ноэма. А один 2а12 можно оформить в активный саб и при надобности включать его к паре в режиме трифоник. Для этого к усилку пары 4а32 надо сделать простой фвч с изменяемой Fсрез для разгрузки по нч и согласования с сабом. Два таких саба можно юзать на улице а в небольших помещениях вообще обойтись без саба, иначе все гости оглохнут от гудежа. Просто предварительно всегда надо смотреть помещение на предмет установки аппаратуры, где будет танцпол и оценки что с собой брать пару или трифоник.
    • 0х0с - обычный General Purpose Register, причём в середине их области адресов... Отлажу в MPLab. В нём всё работает. Да и в принципе правильно, что отлаживать надо в той среде, в какой написано. Там есть хоть и не такой цветастый, но Логический анализатор. Глубины записи правда не хватает, но отладить по кускам - не особая проблема. С теми, что столкнулся тут - не сравнить.   Уже не могу. Спасибо за потраченное время, узнал много нового. Протеуса снёс. Только что откатил систему Акронисом. Во время экспериментов с Протеусом (может конечно совпало, но с 14-го года, как поставил на эту машину W7, ТАКИХ глюков не было тфу-тьфу-тфу, а ставил много чего) он пару раз зависал при выходе. Закрывал Диспетчером задач, перезагружался и заметил -  слетела ЗАГРУЗКА Windows. Вместо заставки "собирающееся цветное окошко" стала полоса индикатора загрузки с зелёным бегунком. Не знаю, может с дистрибутивом вирус подцепил, хотя проверял, ничего не обнаружил. Проверьте на всякий случай мой архив, а лучше выкиньте его нафиг. Если можете, то и архив из моего сообщения. Бережёного Бог бережёт.  
    • пробуйте 16f505_test1.zip КМК это баг модуля при обращении к регистру с адресом 0x0C
    • @IMXO , спасибо, это обнадёживает. Я ожидал, что заработает. Может это из-за версии MPLab, в которой скомпилировано? У вас какая? Хотя 8.40 - вроде тех же лет, что и Протеус 7... Кстати, а "не работает" - какая ошибка выдаётся, такая же?
×
×
  • Create New...