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

Изготовление 2-х слойных плат от 2$, а 4-х слойных от 5$!

Быстрое изготовление прототипа платы всего за 24 часа! Прямая доставка с нашей фабрики!

Смотрите видео о фабрике JLCPCB: https://youtu.be/_XCznQFV-Mw

Посетите первую электронную выставку JLCPCB https://jlcpcb.com/E-exhibition чтобы получить купоны и выиграть iPhone 12, 3D-принтер и так далее...

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

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

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

Share this post


Link to post
Share on other sites

Вебинар «Параметры выше, цена ниже. Обновление в линейке AC/DC- и DC/DC-преобразователей MORNSUN» (26.01.2021)

Приглашаем 26 января на бесплатный вебинар, посвящённый преимуществам и отличиям новых источников питания и DC/DC-преобразователей Mornsun. На вебинаре будут рассмотрены изолированные и неизолированные DC/DC-преобразователи последнего, четвертого, поколения (R4) и компактные модульные источники питания второго и третьего поколений (семейства LS/R3 и LD/R2) на плату. Рассмотрим новую группу продукции – встраиваемые источники питания в кожухе.

Подробнее

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

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

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


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

Share this post


Link to post
Share on other sites

Вебинар "Новый BlueNRG-LP с Bluetooth 5.2 и Long Range — волшебная палочка разработчика IoT" (04/02/2021)

Приглашаем 4 февраля на бесплатный вебинар о BlueNRG-LP - новом программируемом чипе SoC STMicroelectronics. На вебинаре будут детально рассмотрены новые возможности, особенности подключения, аппаратные и программные средства для разработки, а также практические примеры работы с микросхемой.

Подробнее

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

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

Плата STEVAL-IDB011V1 – тестируем идеи на новом BLE 5.2-чипе BlueNRG-LP

Новая система на кристалле BlueNRG-LP производства STMicroelectronics предназначена для устройств интернета вещей(IoT ) и не только, отвечает стандарту BLE 5.2 и поддерживает MESH-сети. Микросхема содержит малопотребляющий MCU Cortex-M0+. Отладка STEVAL-IDB011V1 позволит сэкономить время на разработку новых устройств.

Подробнее

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

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

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

Share this post


Link to post
Share on other sites
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...

  • Сообщения


  • Антистатический пинцет, 2 шт

  • Similar Content

    • 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. Он нужен для того, чтобы принятые по нему данные отправить на аппаратный юарт. В интернете нашел примеры кода, но понять его мне трудно. Прошу вас словами в общих чертах объяснить принцип реализации программного юарта. Буду рад примерам, которые, на ваш взгляд, являются наиболее простыми и понятными. Заранее спасибо.
    • Guest Константин
      By Guest Константин
      Приветствую всех! Прошу помощи у вас, форумчане в программировании системы из 2х контроллеров atmega16, суть системы заключается в:
      Есть мастер и слэйв, это два отдельных омк
      всего 1 мастер и 2 слэйва
      Что входит в мастер: 1)настойка времени путем набора из 8 4 2 и 1 минуты(кнопки), выбор адреса, те кому будет послан сигнал, 1 или 2 слэйву, индикация ответа( красный диод если не ответил, зеленый если ответил в течении заданного времени), если ответ есть - зеленый, если ответа нет красный и кнопка полного сброса всех указаний, те возврат к исходной точке где никто не опрашивается
      Что входит в слэйв, это кнопка подтверждения, визуализация таймера ( те 4 диода, когда 1/4 времени прошла 1 тухнет итд) и если кнопка не нажата отправка информации о аларме
      собственно все
      те
      1 ввод адреса и времени
      2 отправка сигнала
      3 сигнал есть?
      3.1 (нет) аларм
      3.2 (зелень)
      Заранее благодарю!
      (popovkostya96@icloud.com)
×
×
  • Create New...