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

начал изучать счетчики - вопрос: как записать и куда записать значение при котором счетчик должен отреагировать? т.е. конечное значение счета...

В регистр сравнения OCR, при совпадении его значения со значением счетного регистра будет сгенерировано прерывание.

Либо записываешь начальное значение в счетный регистр и ждешь переполнения.

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

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


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

#include <tiny2313.h>

#include <delay.h>

bit a=0;

bit b=0;

void main(void) {

#asm("sei");

TCCR1B|=(1<<2);

TCCR1B|=(1<<0);

DDRB=2;

GIMSK|=(1<<5);

PCMSK|=(1<<7);

while(1) {

if (a==1&&b==1) {a=0;

PORTB=2;

...

if(a==1) {a=0;

PORTB=0;};};};}

void interrupt [PCINT.7](void) {

a=1;

delay_xc(1000);

a=0;}

void interrupt [TIM1_COMPA]{

b=1;}

 

вместо ... напишите отсчет времени по счетчику ну скажем 2 секунды...

прога для attiny2313

и потом выключить отсчет времени...

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


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

вот пишу опять сюда... ничего не получается... тот же самый случай

#include <tiny2313.h>

#include <delay.h>

int a=0;

void main(void) {

#asm("sei");

DDRB=2;

GIMSK|=(1<<5);

PCMSK|=(1<<7);

while(1) {

if (a==200) {a=0;

PORTB=2;

if(a==200) {a=0;

PORTB=0;};};};}

interrupt [PCINT] void pin_change_isr0(void) {

a++;}

опять ничто не получается... я уже просто не знаю что делать ...

ничего не мигает ... ну если только иногда ...

цепь питания - блок питания - 500 мкф на 25 вольт кренка 100 мкф на 25 вольт 0,1 мкф - сам контроллер

 

 

цепь определения перехода - 560 ком и диод 1N4007...

 

 

на резет подано лог1 через 10 ком

 

возникла мысль поменять блок питания...

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


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

вот пишу опять сюда... ничего не получается... тот же самый случай
На этом форуме буквально через день ищется одна и та же ошибка. Если у вас переменная меняется в прерывании, а проверяется в основной программе, то она обязательно должна быть объявлена с квалификатором volatile! Поэтому у вас должно быть volatile int a = 0;

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


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

цепь определения перехода - 560 ком и диод 1N4007...

Откуда 560 ком и куда диод?

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


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

дык а зачем вам прерывание от смены уровней на пинах и где у вас инициализация и прерывание от таймера?и разрешать прерывния лучше в конце инциализации контроллера прямо перед входом в главный цикл.

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


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

1) взято с аналогичного девайса но + диод на ногу мк

2) таймера нету ... просто если посмотреть на волну переменного тока там будет 2 перехода через 0 и исходя из периода волны мы считаем

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


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

1) взято с аналогичного девайса но + диод на ногу мк

2) таймера нету ... просто если посмотреть на волну переменного тока там будет 2 перехода через 0 и исходя из периода волны мы считаем

Вольт сколько подаешь ?

Диод на землю не нужен тк он есть внутри МК.

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


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

220 вольт...

не на землю а эту переменку и выпрямить ...

если что я уходить не буду - пишите

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


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

А рекомедации побоку да?

AVR182: Zero Cross Detector

Ищи в гугле, там все подробно разжевано

в картинках.

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


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

я фигово знаю технический английский

но там было написано что подключать просто через 1 мегоом?

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


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

охохохохохох не получается у меня управлять лампочкой накаливания ...

цепь управления нога мк 220 ом оптопара moс3021 симистор BT138

придется переходить к менее силовому проекту ...

 

хотя блин никто из вас разработчиков электроники не делал такого чуда??? что никто не может мне помочь???

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

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


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

охохохохохох не получается у меня управлять лампочкой накаливания ...

цепь управления нога мк 220 ом оптопара moс3021 симистор BT138

придется переходить к менее силовому проекту ...

 

хотя блин никто из вас разработчиков электроники не делал такого чуда??? что никто не может мне помочь???

Приведенный тобой выше код должен заставить мигать светодиод(соответственно включенный)

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

Затем нужно научиться (или научить) синхронизировать таймер с сетью. те в момент перехода

сбрасывать его. Период полного счета его должен быть близок к 10мсек(100Гц).

Потом освоить работу компараторов таймера.

Без осциллографа вслепую это сделать очень трудно!

Ты просто не увидишь результатов работы своей программы.

 

Вышеуказанная прогр. работает???

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


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

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

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

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

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

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

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

×
×
  • Создать...