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

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


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

Дана следующая программа и следующая схема.
После запуска, циклично выдает одни и те же ошибка и до такой степени, что ПК не выдерживает нагрузку и приходится принудительно закрывать программу ( когда обычно, запустил программу и она не продолжает запускаться, а сразу указывает на ошибку в коде, а тут она даже не останавливается )
При создании проекта выбираю 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

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

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

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

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

15 минут назад, Alexeyslav сказал:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Запустил 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

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

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

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

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

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

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

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

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

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

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

 

image.jpg

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

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

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.

Изменено пользователем Алексей Христианчик
Добавлена важная информация
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

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

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

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

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