Dron Kosher

пермененная + таймер = непонятное

9 сообщений в этой теме

Dron Kosher    0

Всем привет.

Не могу понять почему переменная temp не выставляется в единицу... хотя само прерывание срабатывает...

attiny13
 

#include <avr/io.h>
#include <avr/interrupt.h>


unsigned int temp;


ISR(TIM0_OVF_vect)
{
    temp=1;
    PORTB ^= 1;
    TCNT0  = 0;
}


    
int main(void)
{
    PORTB  =  0b00111111;
    DDRB   =  0b00000111;

    // Таймер
    TCCR0A = 0;
    TCCR0B = 0b00000101; //делитель
    TCNT0  = 0;
    TIMSK0 = 0b00000010; // Разрешение прерываний по переполнению
    
    sei();
    while (1) {
        
        if (temp==1) {
            PORTB ^=2;
            temp=0;
            }
    }
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
kt118    61

А как вы определяете что она не выставляется?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Dron Kosher    0

нарисовал схемку в протеусе с диодиками

диодик на PB1 не мигает, а должен :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
kt118    61

Вы и схему выложите.

Изменено пользователем kt118

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ARV    434

Все переменные, которые используются и в обработчиках прерываний и в главном цикле, обязательно должны объявляться volatile, т.е. так:

volatile unsigned int temp;

Запомните это простое правило раз и навсегда.

  • Лайк 2
  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Dron Kosher    0

ARV благодарю, действительно заработало.

 

странно, что это правило ни в одном из попавшихся мне примеров не упоминается и не используется

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ARV    434

Об этом многократно повторено на всех форумах, во всех статьях и книгах, во всех описаниях и руководствах, посвященных avr-gcc. Ну и понимание самого стандарта языка Си тоже не помешает. Вы просто недостаточно хорошо изучили язык Си, только и всего.

Изменено пользователем ARV

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Dron Kosher    0

да с Си у меня очень плохо, может посоветуете книгу для начинающего?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ARV    434

Классика: Керниган, Ричи "Язык Си"

Немного всего по-чуть-чуть, в том числе по Си и по avr-gcc в частности, в моих статьях: http://www.simple-devices.ru/index.php?option=com_content&view=article&id=12:winavr-avr-studio&catid=7:soft&Itemid=10 (несколько устарело, но для начала сойдет).

  • Одобряю 2

Поделиться сообщением


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сообщения

    • Спасибо! Нет.
        https://ru.aliexpress.com/item/FREE-SHIPPING-IRS27952STRPBF-IRS27952S-S27952-SOP8-5-PCS/32800614396.html?spm=a2g0s.9042311.0.0.3b8d33ednwdhZw
    • А модератору нужно в двойне уважать мнения участников и не пытаться изображать из себя воина света.
    • От 10 ноги OP3 на землю желателен резистор , пусть будет 10k .
    • Я как минимум модератор данного раздела, данного ТЕХНИЧЕСКОГО форума и моя обязанность содержать вверенный мне разделы в исправности, чистить их от оффтопа (в том числе и от антинауного, антитехнического мусора) Все что я говорю, я могу обосновать технически и подкрепить фактами, в противном случае - я просто молчу. 
        Я никого не убеждаю. Тех, кто подобные перлы пишут, переубеждать уже бесполезно. Я все это пишу для сторонних наблюдателей, которые возможно лет через пять зайдут на этот форум и прочитав какое-либо бредовое утверждение, сразу же следом за ним, смогут прочитать подкрепленное фактами и вескими доводами опровержение (один из примеров тому - выше).
        И здесь вам все кажется: все дело в том, что остальные "правые" предпочитают обходить стороной места скопления филов. Они все для себя понимают, просто не хотят вступать в диалог с теми, кого переубеждать бесполезно. Это я один такой - непримиримый. И только поэтому вам кажется что "я такой один против вас всех". Нет, наоборот, здоровых людей гораздо больше, просто филы лучше организованны. У них есть общая болезнь, которая их объединяет...
    • Проверить 220 на линии. Если есть, то подать 220 на мотор. Потом оптопару проверить на предохранитель (подключено параллельно предохранителю, последовательно с мотором), там всегда должен быть ноль. Если там есть переменка - предохранитель в обрыве.
    • @Vlad90  Вот тут выложена схема Владимира65 со стартом от 6В , только без ШИМа .  
    • Конечно, однако с точки зрения логики разработка и тиражирование - это также разные вещи. Вы мне в соседней теме так и не ответили, какой практически полезный девайс могли бы сделать основываясь на вашей теории? Вы и адресок прям по 2ГИСу можете указать или же только номер в центуре?     А расчёт там наличными или только в крипто-КЦ? Кстати, третий день от Кеши тишина, пропал куда-то. Случилось что или он взял мелки для тараканов и тихонько в уголочке мне долгожданную картинку рисует?