Помогите с созданием таймера включения

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

Re: Помогите с созданием таймера включения

Сообщение Jman »

pyzhman - спасибо огромное, зачем я его тулил в while и for - ведь void main основная функция =) Всем спасибо ребят. В Proteus заработало... Осталось спаять.
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
Реклама
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Помогите с созданием таймера включения

Сообщение ploop »

Осталось спаять.
Вот это надо было делать вперёд. Эффект был бы совсем другой :)
Реклама
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

Re: Помогите с созданием таймера включения

Сообщение Jman »

Лежит у меня мэинборд с Atmega 8 - на ней завтра и потестю =) Вообще надо Кернигана и Ричи курить =)
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

Re: Помогите с созданием таймера включения

Сообщение Jman »

Перекомпильнул код под Мегу 8, потом под 8535 (лежат у меня когда-то собранные мэинборды, давно уже не занимался с МК) - все работает. Всем спасибо, кто поделился опытом, помог, подсказал.
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
igor-x
Мудрый кот
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Re: Помогите с созданием таймера включения

Сообщение igor-x »

есть предложение по оптимизации схемы -

исключить кварц.
Реклама
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Помогите с созданием таймера включения

Сообщение ploop »

Неее, так не интересно. А дисплей, клавиатуру, чтоб параметры задавать? :)
Реклама
Аватара пользователя
igor-x
Мудрый кот
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Re: Помогите с созданием таймера включения

Сообщение igor-x »

при массовом производстве этого устройства, дисплей и клавиатуру можно предлагать как опцию.

... я тут подумал - еще одно предложение - исключить две емкости . - еще 80 копеек сэкономим
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

Re: Помогите с созданием таймера включения

Сообщение Jman »

Вот интересно теперь сделать вот так: повесить кнопку по минусу через RC цепочку на какой-нибудь порт, и выполнять функции описанные выше при нажатии кнопки а не при подаче питания =)
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Помогите с созданием таймера включения

Сообщение ploop »

Вот, это правильные мысли. Так что читайте статьи по работе с МК, что не получится - спрашивайте. Главное - сделать самому.
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

Re: Помогите с созданием таймера включения

Сообщение Jman »

А по поводу кварца - так лучше я его для надежности поставлю. Потому что RC очень зависима от температуры, конденсатор по ТКЕ и не найти наверное такой, мож только тантал.
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

Re: Помогите с созданием таймера включения

Сообщение Jman »

Chip type : AT90S2323
AVR Core Clock frequency: 4,000000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 32
*****************************************************/

#include <90s2323.h>
#include <delay.h>
#define Pulse0 PORTB.0 //присваиваем порту имя Pulse0
#define Button0 PINB.1 //присваиваем порту имя Button
void main(void)
{
DDRB.0=1;// бит 0 порта B как выход
DDRC.2=0;// бит 1 порта B как вход
delay_ms(6000);
PORTB.0= 1;
delay_ms(1000);
PORTB.0= 0;
}
while (1)
{
if (Button0==0) // Если кнопка нажата,
Pulse0=1; // то зажигаем светодиод,
else // иначе
Pulse0=0; // светодиод не горит
};
}


Думаю вот так может, я еще не компилировал, набрал в тхт.
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

Re: Помогите с созданием таймера включения

Сообщение Jman »

Добрый день комрады. Столкнулся с очередной проблемой... Я так понимаю библиотека delay.h может давать задержку в 1 минуту, не более, как же реализовать более минуты, таймер подключать? Как будет выглядеть код.. Хелп ми плиз....
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

Re: Помогите с созданием таймера включения

Сообщение Jman »

Я тут попробовал сделать на меге 8 и 16 битном таймере. Хочу это все на тинни 13 (задача ведь не велика, а такой мощный проц жалко). Вот только беда - помогите расчитать константу для 8 битного таймера, как это считается. 16 битный, при тактировании 8МГЦ я поделил на 1024 получил в визарде 7813, и у меня тик вроде как получился раз в сек. А как с 8 битным не могу вкурить... Направте на путь - ниже прилагаю код и схему в ISIS в архиве.
Вложения
NewTime.rar
(29.74 КБ) 144 скачивания
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
_Alex
Встал на лапы
Сообщения: 120
Зарегистрирован: Вт дек 12, 2006 07:46:53
Откуда: Пермь

Re: Помогите с созданием таймера включения

Сообщение _Alex »

Плохо пользоваться задержками, МК должен выполнять полезную работу, а не сидеть в пустых циклах, а сидеть в прерываниях:), конечно, если больше занять МК не чем... тогда, да.
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

Re: Помогите с созданием таймера включения

Сообщение Jman »

Неуж-то никто не отзовется?
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
zenek
Встал на лапы
Сообщения: 116
Зарегистрирован: Ср апр 28, 2010 17:49:14

Re: Помогите с созданием таймера включения

Сообщение zenek »

Я так понимаю библиотека delay.h может давать задержку в 1 минуту, не более, как же реализовать более минуты
а если так:
int mins = 4;

while(mins--){
delay_ms(60000);
}
на 4ре минуты задержка
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

Re: Помогите с созданием таймера включения

Сообщение Jman »

/*****************************************************
Project :
Version :
Date : 31.03.2012
Author :
Company :
Comments:


Chip type : ATtiny13
AVR Core Clock frequency: 0,128000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 16
*****************************************************/

#include <tiny13.h>

unsigned int num; // наша переменная

// Timer 0 output compare A interrupt service routine
interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
TCNT0=0;
num++; // инкрементирруем

}

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out
// State5=T State4=T State3=T State2=T State1=0 State0=0
PORTB=0x00;
DDRB=0x03;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 0,125 kHz
// Mode: Normal top=0xFF
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x05;
TCNT0=0x00;
OCR0A=0x7D;
OCR0B=0x00;

// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x04;

// Global enable interrupts
#asm("sei")

while (1)
{
if (num==30); //если 30 сек. "зажигаем" ПОРТ В.0
PORTB.0=1;

if (num==100); // если num = 100 сек. зануляем num и тушим ПОРТ В.0
{ num=0;
PORTB.0=0;
}
}
}


_________________

Да что ж такое, где собака зарылась. В Протеусе моделирую светодиод с частотой генератора скачет. Ткните, где ошибся-то...
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Помогите с созданием таймера включения

Сообщение ibiza11 »

читаем, вникаем, пользуемся. http://chipenable.ru/index.php/programm ... yword.html
не факт, что в этом проблема, но это точно не помешает.
А вообще стандартно - проверить всю схему. Например написать простую программу, которая зажигает светодиод и залить ее в контроллер, тем самым проверив схемотехнику.

P.S. посмотрел ваш код. Вам синтаксис нужно учить, батенька. конструкция :

Код: Выделить всё

if(num==30);
PORTB.1 = 1;
здесь PORTB.1 = 1 будет всегда выполняться независимо от условия . Наводка: тут лишняя ";"
Ставим плюсы: )
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

Re: Помогите с созданием таймера включения

Сообщение Jman »

Та екаранный бабай =) Спасибо, излишки ";" помешали =) Спасибо большое!
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
Аватара пользователя
Jman
Мучитель микросхем
Сообщения: 414
Зарегистрирован: Ср янв 26, 2011 13:43:30
Откуда: С того берега моря
Контактная информация:

Re: Помогите с созданием таймера включения

Сообщение Jman »

В железе тоже пошло! Спасибо. Такой вопрос - верно ли, что я регистр обнулил?

// Timer 0 output compare A interrupt service routine
interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
TCNT0=0;
num++; // инкрементирруем
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»