Jump to content
Sambler

МК ATMEGA16 и индикаторы ( После запуска программы, выдает кучу ошибок )

Recommended Posts

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

 

#include <avr\io.h>
#include <avr\interrupt.h>
#include <avr\delay.h>

char data[]="04122013";
int i=0;

void test(void){
int k=0;
while (k<2){
for (int i=0; i<6;i++){
PORTC=0b00000000;
PORTA=(1<<i);
_delay_ms(100);
}
k++;}
PORTA=0xFF;
_delay_ms(200);
PORTA=0x00; }
                                                                                                                     


//Functia DECOD
char decod(char c){
switch (c){
case '0': {c=0b00111111; break; }
case '1': {c=0b00000110; break;       }
case '2': {c=0b01011011; break;       }
case '3': {c=0b01001111; break;       }
case '4': {c=0b01100110; break;       }
case '5': {c=0b01101101; break;       }
case '6': {c=0b01111101; break; }
case '7': {c=0b00000111; break; }
case '8': {c=0b01111111; break;       }
case '9': {c=0b01101111; break; }
default: c=0x00;
}
return c;
}
                                                                                                                      // Functia MAIN
void main(void){

// Waveform Generation Mode setarea regimului Normal
TCCR0=(0<<CS00)|(1<<CS01)|(0<<CS02)|(0<<WGM01)|(0<<WGM00);  // CK/8
TIMSK = (1<<TOIE0);                                   // permiterea intrerupeti in situatia de owerflov a TCNT0
DDRA=0xFF;
DDRC=0xFF;
PORTA=0x00;
PORTC=0x00;
test();
sei();                // permitera intreruperi
while(1){  }
}

ISR(TIMER0_OVF_vect){
if ((i<7) & (i>=0))
i++;
else i=0;
            PORTC=~(1<<i);
            if (i==1) PORTA=decod(data[i])|(1<<7);
            else if (i==3) PORTA=decod(data[i])|(1<<7);
            else      PORTA=decod(data[i]);
}



Я не могу остановить симуляцию, приходится закрывать принудительно.
image.png.3efe10cf33974b0cdf3d5343cd8dbee1.pngimage.png.960ef8b72f00195ba9aac618598c34c7.pngZ

Share this post


Link to post
Share on other sites

Там же синим по белому всё написано. Разберись с первой ошибкой, последующие скорей всего имеют ту же причину. Словарика с английского нет? У вас там сплошные повторные определения тех же самых определений... или два раза один и тот же файл инклудится, или он очень странный.


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

Share this post


Link to post
Share on other sites
15 минут назад, Alexeyslav сказал:

. Разберись с первой ошибкой

redefinition of 'decod' или какая? 
И как мне с ней разобраться, не я код писал)))) я даже не знаю что мне делать с этим, всегда код работал, а тут ошибки

Share this post


Link to post
Share on other sites

Повышаем уровень передаваемой мощности в однопарной сети Ethernet

В статье приведено описание новых гибридных разъемов для использования в SPE-приложениях. По сравнению с традиционными разъемами, в основе структуры которых лежит технология PoDL (Power over Data Line), предлагаемое решение содержит в себе дополнительные контакты питания, но сохраняет при этом компактные размеры. А работа с более высокими значениями тока значительно расширяет возможности применения предлагаемых разъемов в различных топологиях, по сравнению с PoDL.
Подробнее

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

И как мне с ней разобраться, не я код писал

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


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

Share this post


Link to post
Share on other sites

Вебинар «Новинки и решения Traco для промышленных и отраслевых приложений» (28.10.2021)

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

Подробнее

Странно. У меня всё сразу запустилось. Я сделал так:

Запустил Programmer's Notepad. Скопировал в пустое окно исходник. Потом сохранил как mega16.c в папку mega16 (которую создал в корне WinAVR-20100110).

Потом запустил MFile. В MakeFile ->Main file name установил mega16. В MakeFile ->MCU type->ATmega->atmega16. Потом сохранил как Makefile в папку mega16 (в которой исходник).

Потом перешёл в Programmer's Notepad, нажал Tools->Make Clean, потом Tools->Make All. В папке mega16 появился файл mega16.hex, его подключил к МК в Proteus и в настройках МК установил внутренний тактовый генератор 8MHz (CKSEL 0100). Дисплей: 7SEG-MPX8-CC-BLUE.

Удачи!

 

mega16.jpg

Share this post


Link to post
Share on other sites

Популярные пружинные клеммники Degson со склада Компэл

Пружинные разъемные клеммники Degson с технологией Push-In обеспечивают надежное и безопасное электрическое соединение. При их использовании исключается возможность короткого замыкания в точке контакта, что гарантирует надежное соединение. Электрическая безопасность клеммных блоков подтверждается соответствием мировым стандартам UL, IEC и VDE.
Подробнее

15 минут назад, x-revers сказал:

Потом запустил MFile.

Я собственно всё вроде понял, Но вот, что за MakeFile, я никак найти не могу программу или что это такое, Нашел только, что это утилита от Visual Studio или не то?
Может есть что то подобное этому?

Share this post


Link to post
Share on other sites

Датчики дальности ST обеспечивают безопасность в период COVID-19

Оптические датчики приближения STMicroelectronics из семейства Flight Sense™, средства разработки и программное обеспечение для них позволяют как организовать бесконтактную работу торговых и информационных точек и соблюдение социальной дистанции в непростой эпидемический период, так и строить сложные пространственные системы вплоть до трехмерных моделей. Рассмотрим устройство для обнаружения и измерения расстояний до объектов без физического контакта, и инструментарий для его разработки, а также другие примеры.
Подробнее

2 минуты назад, x-revers сказал:

Пуск->Все программы->WinAVR-20100110->MFile.

Тю... спасибо)) а то я уже тут уже вкладок 100 перерыл)

Share this post


Link to post
Share on other sites
56 минут назад, x-revers сказал:

нажал Tools->Make Clean, потом Tools->Make All.

А этого нет :)image.png.ed985c070a79881a6b84de24ad51c914.png
 

Share this post


Link to post
Share on other sites

Может Вашу средУ нужно подстроить. Может Tools->Add Tools? У меня содержание вкладки Tools отличается. Ну или как вариант можно скачатьWinAVR здесь

 

image.jpg

Share this post


Link to post
Share on other sites

Ну, что ж так через ж*пу то всё.

1. Для  @Sambler. Если тупо копируете чужой код, то озаботтесь тем, что и где у Вас стоит. Ругань компилятора в первую очередь идёт из-за delay.h, которая у WinAVR давно уже расположена в util (можете проверить на своём компе) в папке avr только файл перенаправления полностью закомментированный. Замените инклюд  делея в начале на следующую строку:

#include <util\delay.h>

2. После этого получшает, но не совсем. Компиллятор начнет ругаться на строку 11, где внутри цикла for объявляется целочисленная переменная, которая в нём же и используется: 

for (int i=0; i<6;i++){

Такая конструкция "прокатывает" только в С++, в чистом С переменная должна быть объявлена за пределами цикла, о чём вас нежно по аглицки и предупредит компилятор. Она в принципе уже и объявлена несколькими строками выше, поэтому достаточно просто убрать int в 11-й строке и насладится нормальной компиляцией проекта.

А удалять гланды через ж*пу, как предлагает @x-revers - это чисто "русская народная забава", но вовсе не обязательная.

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

Edited by Алексей Христианчик
Добавлена важная информация

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...

  • Сообщения

    • Ну всё, не успел я вернуться из магазина, как спор уже закрыли и продавец вернул мне 50% от стоимости заказа безо всяких банковских карт Да ещё и с тёплыми душевными словами в личной переписке
    • Это они прямо сегодня нашли?
    • Дык, на соседнем столе аналогичная "балалайка" стоит, и карлсоны молотят постоянно. Не скажу, что сильно шумят, но на перерыв, когда у трудников тихий час, обязательно выключаю.
    • В трансформатор идут импульсы высокой (30000 Гц)частоты пилообразной формы с электролита. А в электролит закачивается ток частотой 100 Гц с диодного моста, формы резанного синуса. Трансформатор тока измеряет нарастание тока в первичке трансформатора и ШИМ-контроллер отключает подачу импульса на ключ по достижению пикового значения тока высокой частоты. При попытке переместить токовый трансформатор в цепь 100 Гц, он не будет работать, так как не рассчитан на такую низкую частоту, трансформатор тока не будет работать и всё. Ток с электролита в трансформатор может достигнуть 10000 ампер, всё взорвётся, а только потом, когда электролит чуть разрядиться, а ток после диодного моста начнёт подзаряжать уже закороченный электролит, сработают автомат защиты в щитке, и всё равно на выходе трансформатора тока ничего не будет 
    • Приветствую! Вопрос по SN63P37 в проволоке 2,0 мм(катушка 4 кг) ELSOLD-1шт, Цена 1 шт(4кг)-6000 руб. - какие характеристики: процентное содержание, температура плавления? 
    • интернет не той системы.. https://fccid.io/YCJGTIBLEATM-2022/User-Manual/User-Manual-5161841.pdf

  • Модуль приемопередатчика LoRa SX1280, 2.4GHz, 27dBm, дальность до 8км

  • Similar Content

    • By dima040891
      Приветсвую!
      Кто ни будь работал с микросхемой STLED316S?  Это драйвер семисегментонго индикатора.
      Можете привести минимальный кусок кода который выводит любую цифру на дисплей. Из документации не пойму как с ней работать...
      На форумах инфы почти нет. Из того что есть тоже толку мало. Буду рад любой инфе по этой микросхеме.

      Ещё правильно же понимаю биты по SPI передаются младшим вперёд, а такты нужно передавать инверсные?

      В качестве МК применяю STM32.
    • By Sambler
      У меня была похожая тема,  я решил проблему установив в include util/delay.h
      Но возникла еще одна ошибка, не могу понять, что оно хочет


      p.s. Я обещал, что предыдущая - последняя тема, но я ошибся, не думал, что тут 2 разные программы будут. В этот раз 100 процентов последняя тема и пойду сдавать работы Ы)

       

    • Guest Василий
      By Guest Василий
      Кто  может  помочь с примером  программирования в  программе  LDmicro  ?  Интересует  как  программировать   PWM выход  ? Хотелось  бы   увидеть  наглядный  пример  может  кто  знает ! Буду  рад  любой  информации !!!
    • By Sergey-Ufa
      Продам семисегментные вакуумные люминесцентные индикаторы:
      ИВ-4                 91шт.           50 руб./шт.

      https://rudatasheet.ru/tubes/iv4/
      ИВ-6               110 шт.         30 руб./шт.

      http://www.radiolamp.ru/sprav/ind/iv6.html
      ИВ-11              98 шт.           80 руб./шт.

      https://rudatasheet.ru/tubes/iv11/
      ИВ-27        7 шт.           80 руб./шт.

      http://yarelektronika.ru/files/image/ИВ-27М.PDF
      ИВЛ1-7/5      7 шт.           150 руб./шт.

      http://radio-hobby.org/uploads/datasheets/ivl/ivl1 7.5.pdf
      Цена без стоимости пересылки. Все индикаторы новые. Так как детали стеклянные и хрупкие, то требуется хорошая их упаковка и отправка возможна только посылкой. Поэтому для маленькой партии стоимость пересылки может равняться или даже быть больше стоимости деталей. При заказе большой партии возможна скидка. Все предложения в личку.
    • By Atreides
      Добрый день. Мне требуется реализовать программный юарт на атмеге16. Он нужен для того, чтобы принятые по нему данные отправить на аппаратный юарт. В интернете нашел примеры кода, но понять его мне трудно. Прошу вас словами в общих чертах объяснить принцип реализации программного юарта. Буду рад примерам, которые, на ваш взгляд, являются наиболее простыми и понятными. Заранее спасибо.
×
×
  • Create New...