Страница 3 из 3

Re: Таймер на ATtiny13 (как подключить нагрузку?)

Добавлено: Чт мар 20, 2014 23:42:38
Martin76
nyvkom_sv писал(а): верифицировать МК.-ето как
Сравнить содержимое памяти с прошивкой.

Re: Таймер на ATtiny13 (как подключить нагрузку?)

Добавлено: Пт мар 21, 2014 00:28:02
nyvkom_sv
Martin76 писал(а):
nyvkom_sv писал(а): верифицировать МК.-ето как
Сравнить содержимое памяти с прошивкой.
после прошивки проверялось!!!может все таки ошибка в прошивке и мк просто незнает что ему делать???посмотрите кто может!

Re: Таймер на ATtiny13 (как подключить нагрузку?)

Добавлено: Пт мар 21, 2014 10:19:30
pyzhman
Тестовая программа:
Спойлер

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

//Date    : 16.03.2014
//Chip type           : ATtiny13
//Clock frequency     : 9,600000 MHz


#include <tiny13.h>

bit old_SA1, SA1;
long unsigned int counter;
unsigned char data;
flash long unsigned int number[]= {32955,65909,98864,131819,164774,197729,230684,263639};

// Timer 0 overflow interrupt service routine
// каждые 27,31 мсек
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// опрос позиции
old_SA1= SA1;
SA1= PINB.2;

if(!SA1) PORTB.4= 0;
else
	{
	if(counter) --counter;
	else
        	{
                counter= 110;
                PORTB.4= ~PORTB.4;
                }
	}
}



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

// Port B initialization
PORTB=0b00001111;
DDRB= 0b00010000;

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

// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;

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

// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;

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

while (1)
{


};
}
На джамперы не реагирует. При замкнутом SA1(т.е. когда на мк поступает "0"), на выводе РВ4 должен быть "0" в любой момент времени. При разомкнутом SA1 на выводе РВ4 должна появляться и пропадать "1" через промежутки времени примерно в три секунды. С такой же частотой должен включаться и выключаться транзистор и двигатель. Испытываем и результаты - сюда.

Re: Таймер на ATtiny13 (как подключить нагрузку?)

Добавлено: Пт мар 21, 2014 21:40:09
nyvkom_sv
прошивать пока не стал!!в протеусе тестовая прошивка работает нормально!!!!а как должна поводить себя морот при основной прошивке!!!меня интересует момент подачи питания

Re: Таймер на ATtiny13 (как подключить нагрузку?)

Добавлено: Пт мар 21, 2014 22:12:04
nyvkom_sv
я пробовал проектировать в протеусе но запутался и тепер вообще ничего не работает!!и почему в attiny13 в протеусе 6 ног???кто может спроектируйте в протеусе пожалуйста!!!

Re: Таймер на ATtiny13 (как подключить нагрузку?)

Добавлено: Пт мар 21, 2014 23:10:26
pyzhman
nyvkom_sv писал(а):поводить себя морот
Что?

Re: Таймер на ATtiny13 (как подключить нагрузку?)

Добавлено: Пт мар 21, 2014 23:35:20
nyvkom_sv
pyzhman писал(а):
nyvkom_sv писал(а):поводить себя морот
Что?
как ведет себя двигатель?лучше если можете проверте в протеусе прошивку!

Re: Таймер на ATtiny13 (как подключить нагрузку?)

Добавлено: Сб мар 22, 2014 06:19:23
pyzhman
nyvkom_sv писал(а):поводить себя морот при основной прошивке
Двигатель включается каждые N минут (N определяется джамперами SA2..SA4). Работает до срабатывания концевика SA1. В момент срабатывания концевика питание с двигателя снимается и начинается отсчет времени.

С протеусрм особо не дружу (или он со мной не дружит), но тем не менее -
Изображение
Не забудьте в свойствах мк (нажать правую кнопку мыши на изображении мк) указать нужный файл для симуляции. Фузы должны быть настроены на внутренний тактовый генератор 9,6МГц и фуз делителя на 8 не прошит.

Re: Таймер на ATtiny13 (как подключить нагрузку?)

Добавлено: Сб мар 22, 2014 18:34:34
nyvkom_sv
pyzhman писал(а):
nyvkom_sv писал(а):поводить себя морот при основной прошивке
Двигатель включается каждые N минут (N определяется джамперами SA2..SA4). Работает до срабатывания концевика SA1. В момент срабатывания концевика питание с двигателя снимается и начинается отсчет времени.

С протеусрм особо не дружу (или он со мной не дружит), но тем не менее -
Изображение
Не забудьте в свойствах мк (нажать правую кнопку мыши на изображении мк) указать нужный файл для симуляции. Фузы должны быть настроены на внутренний тактовый генератор 9,6МГц и фуз делителя на 8 не прошит.
основная прошивка даже в протеусе ничего не делает!!!в чем проблема?

Re: Таймер на ATtiny13 (как подключить нагрузку?)

Добавлено: Вс мар 23, 2014 09:07:43
pyzhman
Да, действительно, двигатель стартовал только после передергивания концевого выключателя, т.к. не было начального старта таймера. Поправил. Для модели сократил времена отсчета.
Спойлер

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

//Date    : 23.03.2014
//Chip type           : ATtiny13
//Clock frequency     : 9,600000 MHz


#include <tiny13.h>

bit old_SA1, SA1;
long unsigned int counter;
unsigned char data;
//flash long unsigned int number[]= {32955,65909,98864,131819,164774,197729,230684,263639};
flash long unsigned int number[]= {50,75,100,125,150,175,200,225};

// Timer 0 overflow interrupt service routine
// каждые 27,31 мсек
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// опрос позиции
old_SA1= SA1;
SA1= PINB.2;

if(old_SA1 && !SA1)
	{
	PORTB.4= 0; // при достижении позиции останавливаем двигатель
	//опрос кнопок
        data= 4*PINB.3 + 2*PINB.0 + PINB.1;
	// старт таймера
        counter= number[data];
        }
// отсчет таймера
if(counter) --counter;

// старт двигателя
if(counter== 1) PORTB.4= 1; 
}



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

// Port B initialization
PORTB=0b00001111;
DDRB= 0b00010000;

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

// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;

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

// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;

// считываем уставку времени
data= 4*PINB.3 + 2*PINB.0 + PINB.1;
// старт таймера
counter= number[data];

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


while (1)
{


};
}

Re: Таймер на ATtiny13 (как подключить нагрузку?)

Добавлено: Пн мар 24, 2014 13:40:21
nyvkom_sv
pyzhman писал(а):Да, действительно, двигатель стартовал только после передергивания концевого выключателя, т.к. не было начального старта таймера. Поправил. Для модели сократил времена отсчета.
Спойлер

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

//Date    : 23.03.2014
//Chip type           : ATtiny13
//Clock frequency     : 9,600000 MHz


#include <tiny13.h>

bit old_SA1, SA1;
long unsigned int counter;
unsigned char data;
//flash long unsigned int number[]= {32955,65909,98864,131819,164774,197729,230684,263639};
flash long unsigned int number[]= {50,75,100,125,150,175,200,225};

// Timer 0 overflow interrupt service routine
// каждые 27,31 мсек
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// опрос позиции
old_SA1= SA1;
SA1= PINB.2;

if(old_SA1 && !SA1)
	{
	PORTB.4= 0; // при достижении позиции останавливаем двигатель
	//опрос кнопок
        data= 4*PINB.3 + 2*PINB.0 + PINB.1;
	// старт таймера
        counter= number[data];
        }
// отсчет таймера
if(counter) --counter;

// старт двигателя
if(counter== 1) PORTB.4= 1; 
}



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

// Port B initialization
PORTB=0b00001111;
DDRB= 0b00010000;

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

// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;

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

// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;

// считываем уставку времени
data= 4*PINB.3 + 2*PINB.0 + PINB.1;
// старт таймера
counter= number[data];

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


while (1)
{


};
}
в принципе все нормально!!!напишите пожалуйста прошивку с нормальним времям!!0т 15 мин до 2 часов!

Re: Таймер на ATtiny13 (как подключить нагрузку?)

Добавлено: Пн мар 24, 2014 14:33:52
pyzhman
Пробуйте.