Jump to content
Sambler

МК ATMEGA16 и индикаторы ( Ошибка в коде, не могу решить )

Recommended Posts

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

#include <util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#define DEL    _delay_ms(1)

char tab[7];

char decod( char digit){
char retval;
switch (digit){
            case 0:  {retval=0b00111111;   break; }
            case 1:  {retval=0b00000110;   break; }
            case 2:  {retval=0b01011011;   break; }
            case 3:  {retval=0b01001111;   break; }
            case 4:  {retval=0b01100110;   break; }
            case 5:  {retval=0b01101101;   break; }
            case 6:  {retval=0b01111101;   break; }
            case 7:  {retval=0b00000111;              break; }
            case 8:  {retval=0b01111111;   break; }
            case 9:  {retval=0b01101111;   break; }
default :retval=0b00000000;
}
return retval;
}
//**********************************************************
void afis(void){
for (int i=0; i<6; i++){
PORTC=~(1<<i);
if (i==2) PORTA=decod(tab[i])|(1<<7);
else if (i==4) PORTA=decod(tab[i])|(1<<7);
else PORTA=decod(tab[i]);
DEL;
}
}
//***********************************************************
void main(void){
DDRA=0xFF;
PORTA=0x00;

DDRC=0x3F;
PORTC=0xFF;

TCCR1B = (1<<CS12)|(1<<CS10)|(1<<WGM12);                  // /1024 regim CTC
OCR1A = 976;
TIMSK = 1<<OCIE1A;           //permitera intrerupeti ‚egalitate’
sei();

while (1){
afis();   }   }
//***********************************************************




ISR(TIMER1_COMPA_vect)
{         
                                                                       //secunde
tab[0]++;
 if (tab[0]>9) { tab[0]=0;        
tab[1]++;}
                                               // minute
if (tab[1]>5) {tab[2]++;                      
tab[1]=0;}
 if (tab[2]>9) {tab[3]++;                     
tab[2]=0; }
 if (tab[3]>5) {tab[4]++;                     
tab[3]=0;}                                // ore
 if (tab[4]>4) {tab[5]++;                     
tab[4]=0;}
 if (tab[5]>2) {tab[5]=0;}

}



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

image.png

Share this post


Link to post
Share on other sites

она тебе пишет, что определять тип переменной в циклах допустимо только в С99 , Си в чистом виде это не позволяет , вынеси определение переменной i в тело функции , оная у тебя изменяется 0...7 , зачем ей размерность в 16бит? ей достаточно тип unsigned char.

 

Share this post


Link to post
Share on other sites
Posted (edited)
9 минут назад, IMXO сказал:

бред написан...

Код написан моим преподом, не мной)) я если бы знал, я бы не задавал вопросы.
 

 

9 минут назад, IMXO сказал:

ынеси определение переменной i в тело функции

Что то типа этого?image.png.b2cb28f8cc4d923e46ca637f9eed488a.pngimage.png.27e022196f900d03d2dfe2548ddf910e.png
Я не силён в программировании, но как бы всё заработало, но как то криво, не так, как у преподавателя в задании

Edited by Sambler
Добавил последнее предложение

Share this post


Link to post
Share on other sites

Новые контролллеры VIPerPLUS - практический вебинар 10 июня от ST

В программе вебинара - новые контроллеры VIPerPlus, расширяющие границы применения этих компонентов. Обзор их характеристик и преимуществ. Практика. Демонстрация испытаний из лаборатории ST. Пример моделирования в среде E-DesignSuite.

Зарегистрироваться

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

Что то типа этого?

угу.

бред уж давно удалил из поста, скобки не правильно посчитал

Share this post


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

бред уж давно удалил из поста, скобки не правильно посчитал

Удивительно, что сам допер.
Но всё же, почему не получается как должно, а Должно быть так:image.png.2effd5321e2c3e0cf88812d452dd05a9.png

Share this post


Link to post
Share on other sites
                     

Технология SOI против паразитных эффектов в драйверах затвора

Микросхемы драйверов затвора силовых транзисторов, изготавливаемые по технологии монолитного кремния, подвержены негативному влиянию отрицательных напряжений, возникающих на опорном выводе для верхнего плеча. Технология «Кремний-на-изоляторе» (Silicon-on-insulator, SOI) является надежным решением этой проблемы, о чем свидетельствуют результаты испытаний трех микросхем драйверов затвора полумостовой схемы, в том числе – SOI-драйвера производства Infineon.

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

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

почему не получается как должно

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

Share this post


Link to post
Share on other sites
Posted (edited)
4 минуты назад, IMXO сказал:

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

Хм, ну да, СА стоит, сейчас....
ЭХ, и почему нигде не указано,что СС нужен....
А в чем собственно их отличие? один рабочий а другой - нет ? :DD ( глупо, да )


Всё заработало))))) 

image.png

Edited by Sambler
Заработало!!!

Share this post


Link to post
Share on other sites

Действительно, в чём отличие индикаторов, в которых светодиоды разной полярностью распаяны? Что по вашему значит аббревиатуры CC и CA применительно к светодиодным индикаторам?


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

Share this post


Link to post
Share on other sites

оба рабочие , отличие в том что активный индикатор для анода "+", для катода "-"

сегменты наоборот.

Share this post


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

Что по вашему значит аббревиатуры CC и CA

А вот вы меня заинтересовали данным вопросом, пойду литературу почитаю по этому поводу, будем еще чем предъявить преподавателю

Спасибо Всем, кто помогал мне на этом форуме, если тема не закроется, чуть позже отпишу, на какую оценку приняли работы)))
Удачи в жизни Вам ребята, добрые вы люди!

Share this post


Link to post
Share on other sites

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


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

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

  • Сообщения

    • Я спросил у дяди Феди: -Почему машина едет? Дядя Федя лоб потер и сказал: -У ей мотор... Я поправил дядю Федю: -Не у ей, а у нее. Возмутился дядя Федя: -Ах ты сyка! Ё- моё! Я, на всякий случай, в руку Взял осколок кирпича, гордо крикнув: -Я не cyка! Я- орленок Ильича!
    • Да может они оба наглые... Только один наглый с датчиком, а другой наглый и  без него. ЗЫ: И вообще... зачем нам вникать в потаённый смысл чего-то недосказанного автором...? Для ответа информации достаточно, кмк. Нам что... очень нужны какие-то лишние подробности... чтобы лишний раз по их поводу топтать клаву...?
    • Что то ничего про такой кламбер не нашел.  Подробнее рассказать о работе сможете?
    • Это был сарказм? Вы думаете, что всякое, что ставится в бытовые "колоночки" на не пойми каких усилителях, и типа АС кафешек, баров... на усилителях "Д" класса и пластиковом корпусе, сабвуферных динамиках, автомобильных, - имеет смысл измерять?  Даже после ремонта никому в голову не приходит их замерить. Звучит и ладно.  Но за свой ремонт ручаюсь, что бы выходило идеально с родными, и даже с не родными комплектующими. П.С. Мы уходим от темы.  В какой теме можно писать про настройку СпектраПлюса? Вопросы наверняка будут. Вот пример ремонта JBL265F-1 с полной разборкой и сборкой дина:
    • @Нэцкэ не смеши народ. Как можно не найти какие-то паршивые лампочки?
    • @Электронщик Обычно проверить матрицу на другом скейлере, я например использую похожий.  Если не заработает нормально значит матрица, а если матрица значит на разборку.  Вот на даче у меня телевизор слеплен из китайского скейлере и пары мониторов. Ну и про кабель не забудь, с начало подбрось другой VGA кабель, потом скейлер. Если ни чего не поможет, то маловероятно что-то уже сделаешь.
    • @MATODOR Бронь. личка.
  • Similar Content

    • By MirVsem
      Добрый день.
      Есть интересные модули ибп для слаботочки до 1А.
      m.aliexpress.ru/item/4000109380893.html
       По цене идеально подходит для зоопарка роутеров, IoT устройств... Переключение на резерв (туда-обратно) без просадки. Зарядка литиевой банки как положено, всякие защиты от перегрузки и прочее. Казалось бы все замечательно. 
      НО как всегда не без ложки дёгтя.
       Защита от переразрядки работает неадекватно. Хотя возможно это не сама защита, а повышающий модуль. На пороге ~3в у него срабатывает циклический перезапуск и так пока банка не просядет ниже 3в. Точно померять нечем.
      Из наблюдений. Проверил напряжение переключается с 12в на 9в и щелчки. Естественно нагрузка в это время дико насилуется (роутер свистит минут 5 пока полностю не отключится)
      Вопрос к гуру. Возможно ли что-то доработать в даном модуле чтобы исправить этот досадный баг?
    • By Юлия Михайлова
      Требуються люди умеющие работать с микроконтролерами esp 32 и stm32 , так же будет плюсом опыт работы с raspberry , требования опыт работы не мение 1,5 года , возраст не старше 35 лет , готовы взять на удаленную работу просьба отправлять резюме , и звонить по номеру +380 (68) 227 82 52
    • Guest Роман
      By Guest Роман
      Добрый день, форумчане. Такая задача. Хочу создать несколько устройств на светодиодах. Задача каждого в том, чтобы от движения (датчик вибрации, наклона) светодиод начинал моргать, переливаться и т.д. Подпитывается всё от батарейки, конечно же как можно меньших размеров (таблетка).
      Собственно я уже реализовал такое пробное устройство на ATtiny13, вибродатчике 18015 и батарейке CR1220. Всё работает, но хотелось бы это дело и удешевить и уменьшить в размерах, если это конечно же возможно. Особо в параметрах МК я не разбираюсь, но могу сказать что мне от неё точно нужно:
      1) Маленький размер
      2) Как минимум 1 канал ШИМ (а лучше 3, для переливания трёх светодиодов RGB)
      3) Память на 1Кб (программу для одного такого устройства приложу ниже, может её можно и сократить, но не факт что такую же, но на три диода получится ужать)
      4) Низкое потребление или возможность подключения режимов с низким потреблением.
      5) Работа от 3В. (от таблетки)
      6) Возможность программирования через Arduino UNO (но другие варианты тоже рассматриваю, просто Arduino уже есть)

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

      Очень надеюсь на Вашу помощь. Заранее большое Вам спасибо!
      Прикладываю обещанный мною код:
      int vib = 4; int led = 0; long loopTime = 5000; void setup() { pinMode(led, OUTPUT); pinMode(vib, INPUT); } void loop() { if (digitalRead(vib)){ unsigned long currentMillis = millis(); while(millis()-currentMillis<=loopTime) { for(int fadeValue = 0; fadeValue <=255; fadeValue+=5){ analogWrite(led,fadeValue); delay(2); } for(int fadeValue = 255; fadeValue >=0; fadeValue-=5){ analogWrite(led,fadeValue); delay(2); } for(int fadeValue = 0; fadeValue <=255; fadeValue+=5){ analogWrite(led,fadeValue); delay(2); } for(int fadeValue = 255; fadeValue >=0; fadeValue-=5){ analogWrite(led,fadeValue); delay(2); } digitalWrite(led, LOW); delay(600); } } }  
    • By Sambler
      Дана следующая программа и следующая схема.
      После запуска, циклично выдает одни и те же ошибка и до такой степени, что ПК не выдерживает нагрузку и приходится принудительно закрывать программу ( когда обычно, запустил программу и она не продолжает запускаться, а сразу указывает на ошибку в коде, а тут она даже не останавливается )
      При создании проекта выбираю WINAvr!!!



      Я не могу остановить симуляцию, приходится закрывать принудительно.
      Z
    • By LemonTV
      Есть картинка из сайта с фьюзами, есть программа avrdude_prog3.3 Как выставить правильно фьюзы чтобы не испортить мк? Незнаю как это сделать есть прямые и инверсные фьюзы, ГДЕ СТАВИТЬ ГАЛОЧКИ И КРУЖОЧЕК НА ПРЯМЫХ ИЛИ ИНВЕРСНЫХ?


×
×
  • Create New...