Jump to content
on-marr

Настройка Atmel Studio + Isr()

Recommended Posts

Вот и добрался я до богов контроллера :dance2:

код программы

/*

* Timer0_At16.c

*

* Created: 06.09.2014 11:34:33

* Author: Home_on-mars

*/

#include <avr/io.h>

//#include <avr/iom16.h>

#include <avr/interrupt.h>

typedef unsigned char byte ;

byte a,b;

ISR(TIMER0_OVF_vect){

b++;

}

ISR(TIMER0_COMP_vect){

b++;

}

int main(void)

{ a=0;b=0;

TCCR0|=(1<<0);

TCCR0 &=~(0<<WGM00);

TCCR0 &=~(0<<WGM01);

TIMSK |=(1<<0);

asm("sei");

while(1)

{

a++;

}

}

post-182948-0-39064200-1410059345_thumb.png

Но в студии в пошаговом режиме не переходит на прерывание прерывание а висит на а++

post-182948-0-97068200-1410058336.png

хотя b растет по переполнению как настроить студию чтобы показывало (оптимизация стоит 0)

Даже в окне disassembly не переходит по прерыванию

post-182948-0-03388800-1410058048_thumb.png

Помогите настроить или скиньте файл настройки ATMEL STUDIO

Edited by on-marr

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-принтер и так далее...

TCCR0 &=~(0<<WGM00);

TCCR0 &=~(0<<WGM01);

Ваш код не правильный.

Если пытаетесь сбросить биты WGM00 и WGM01 в ноль, то попробуйте так

TCCR0 &=~(1<<WGM00);

TCCR0 &=~(1<<WGM01);

/*
* ProbaAt16.c
*
* Created: 16.05.2012 20:42:03
* Author: Marian
*/
#define F_CPU 12000000
#include <avr/io.h>
#include <avr/interrupt.h>
typedef unsigned char byte ;
volatile byte a;
volatile byte b;
ISR(TIMER0_OVF_vect)
{
b++;
}
ISR(TIMER0_COMP_vect)
{
b++;
}
int main(void)
{
a=0;
b=0;
OCR0 = 0x0F;
TIMSK =(1<<TOIE0)|(1<<OCIE0);

asm("sei");

TCCR0 =(1<<CS00);

while(1)
{
a++;
}

}

Совет комментируйте свой строки, тогда другим будет понятно, что пытаетесь получить.

И разрешите заход в прерывания, как подсказал MadLor

post-68155-0-84777000-1410110201_thumb.jpg

Edited by codenamehawk

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) на плату. Рассмотрим новую группу продукции – встраиваемые источники питания в кожухе.

Подробнее

Join the conversation

You can post now and register later. 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...

  • Сообщения

    • С языком сейчас вообще нет проблем. Хром имеет встроенный переводчик по умолчанию. Т.к. чешский язык структурно аналогичен русскому, переводит очень хорошо. Для Мозиллы и прочих есть плагины.
    • Если нужно однозначное программирование закат и рассвет по своей программе, нужен МК , его самостоятельно сдплать никак не сможешь ибо  Диоды хоть с блошинного рынка, верить написанному можно, если сам веришь что пишут менегеры. Брать можно и в китае(я брал,беру, устраивает три копейки кучка), но снижая ток на 20-25% от заявленного продавцом. Охлаждение в данном случае да, понадобится  и чем больше ток, больше радиатор.есть где то на форуме уже тема  о подсветке , вроде и с шим, но не точно.  Как решить с светодиодами? Показать их картинку например, а питание, можно ограничить и резистором, но если вы хотите шимить(регулировать уровень ) то все там и можно решить . Контроллер по утру и вечеру если на МК как раз всё это и решит, но кто его вам сделает, в раздел работа дорожка вам, самому никак это не сделать. Можно взять контроллер от умного дома , там есть типа будильника с функцией расссвета , но лучше заказать лично под свои хотелки. Америка конечно большая, есть всё, почему именно там?    Думаю у вас где то рядом всё есть, поискать надо...  
    • @colorad Спасибо изучу эти исходники. Надеюсь получится перенести из них эти скрипты для 16 командной системы. Смотрел этот сайт долго и несколько раз, но я так и не нашёл более систем дистанционного управления кроме тех что были в самом начале. Видимо сказывается незнание языка. Сложно искать что то на таких сайтах. И да спасибо за подсказку с инверсией попробую сделать.
    • D1 на плате сгорел в уголь. Правда, не совсем понятно, зачем он вообще там стоит, если блок питания выдаёт постоянку. Сгореть мог из -за замыкания в гирлянде, например, или просто так. Попробовать заменить на обычный диод,  Судя по тому, что на саму гирлянду идёт всего два провода, есть подозрение, что микросхема контроллёра ещё и меняла полярность подаваемого на гирлянду тока. Т.е., без контроллёра полноценно запитать гирлянду не получится. Но это неточно и надо проверять.
    • Вообще должен быть технологический запас. Но у китайцев бывает, как это говориться, "он есть, но он отрицательный". Я бы просто последовательно стабилитроном отнял несколько вольт для уверенности. Теоретически можно и резистором, но тогда считать нужно.
    • Конспиролог из МГИМО  прогноз погоды, по вашему, так же конспирология. А схемы, срисованные из 196х, 197х, и публикуемые за свои, так же https://ru.m.wikipedia.org/wiki/Теория_заговора ? Бафи, ну, ты же взрослый мальчик, зачем повелся на троллинг? С нем0 и СтаричОк у тебя лучше получается и нам, начинающим, поучиться - польза. Бот и шекель, каждый пост это его зарплата, не давай ему заРАБотать на тебе и цени Свое Время (в ККМ Его вложи). Если оно просто Робот, так же, - в игнор (пора различать "прошитых" и "заблудившихся")

  • Лабораторные блоки питания серии NPS-W. 8 моделей с током от 3А до 10А

  • Similar Content

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


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

       

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



      Я не могу остановить симуляцию, приходится закрывать принудительно.
      Z
    • By Sova
      Добрый день. Опять ATMega, опять таймер 1, вопрос рутинный, но я за сегодня уже извёлся. Что я хотел сделать: МК должен рассчитывать положения моторов (SG90, регулируются временем импульса), включать их все вместе по совпадению таймера 2, затем рассчитывать, когда какой мотор надо отключить, получившийся список сортировать и ставить таймер 1. Таймер 1 сработал - выключили мотор, переставили таймер 1 на подальше. Снова сработал - снова что-то там сделали, увеличили OCR1A и так далее. Конечно же с первого раза не заработало и я начал упрощать и локализировать проблему.
      Получилось вот что: при срабатывании прерывания на совпадение таймера 1 с OCR1A я смотрю в отладчик - а там во-первых TIFR = OCF1A + OCF1B + TOV1, а TCNT1 равен чему угодно, но не OCR1A. Таймер как будто срабатывает не тогда. А когда я ставлю значение поменьше, допустим, OCR1A = 1000 и перехожу в пустой цикл while(1){}, то при наступлении OCR1A == 1000 просто ничего не происходит, прерывание не срабатывает. В целом так. Сейчас очень упрощённый, минимально не работающий код выглядит так:
      #define SET(_REGISTER, _BIT) _REGISTER |= 1 << _BIT #define UNSET(_REGISTER, _BIT) _REGISTER &= ~(1 << _BIT) void local_timer_setup(void) { SET(TCCR1B, CS10); //Setting timer 1 to x1 mode }; void local_timer_start(void) { TCNT1 = 0; SET(TIMSK, OCIE1A); //Allow timer 1 match A interruption }; void local_timer_off(void) { UNSET(TIMSK, OCIE1A); //Prohibit timer 1 match A interruption }; ISR(TIMER1_COMPA_vect) { PORTD = 0xFF; local_timer_off(); }; ISR(TIMER2_COMP_vect) { if (global_timer_count == 2) { global_timer_count = 0; TIFR = 0; PORTD = 0; if (current_step < 10) OCR1A = 0xFFF; else OCR1A = 0xFFFF; if (current_step == 20) current_step = 0; else current_step++; local_timer_start(); } else global_timer_count++; }; Полный код в файле. sei() не забыл. Кстати, таймер нормально выключать/включать через TIMSK, как у меня? Заранее спасибо. 
      Scarecrow_embeded.rar
    • Guest Василий
      By Guest Василий
      Кто  может  помочь с примером  программирования в  программе  LDmicro  ?  Интересует  как  программировать   PWM выход  ? Хотелось  бы   увидеть  наглядный  пример  может  кто  знает ! Буду  рад  любой  информации !!!
    • By voltex
      Всем привет! Подскажите, пожалуйста, как правильно считать данные с внешней eeprom по шине spi, в данном случае 25LC256.
      Написал код ссылаясь на даташит. Собрал схему в протеусе, подключил spi отладчик и вот что получил в итоге. Так же не могу проверить получается записать данные в память или нет. Весь код прикрепил.
       

      main.c
×
×
  • Create New...