Сравнить содержимое памяти с прошивкой.nyvkom_sv писал(а): верифицировать МК.-ето как
Таймер на ATtiny13 (как подключить нагрузку?)
- Реклама
после прошивки проверялось!!!может все таки ошибка в прошивке и мк просто незнает что ему делать???посмотрите кто может!Martin76 писал(а):Сравнить содержимое памяти с прошивкой.nyvkom_sv писал(а): верифицировать МК.-ето как
Фаза есть - ума не надо!
Тестовая программа:
На джамперы не реагирует. При замкнутом SA1(т.е. когда на мк поступает "0"), на выводе РВ4 должен быть "0" в любой момент времени. При разомкнутом SA1 на выводе РВ4 должна появляться и пропадать "1" через промежутки времени примерно в три секунды. С такой же частотой должен включаться и выключаться транзистор и двигатель. Испытываем и результаты - сюда.
Спойлер
Код: Выделить всё
//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)
{
};
}
- Вложения
-
- test.hex
- (774 байт) 527 скачиваний
Docendo discimus
прошивать пока не стал!!в протеусе тестовая прошивка работает нормально!!!!а как должна поводить себя морот при основной прошивке!!!меня интересует момент подачи питания
Фаза есть - ума не надо!
я пробовал проектировать в протеусе но запутался и тепер вообще ничего не работает!!и почему в attiny13 в протеусе 6 ног???кто может спроектируйте в протеусе пожалуйста!!!
Фаза есть - ума не надо!
- Реклама
Что?nyvkom_sv писал(а):поводить себя морот
Docendo discimus
как ведет себя двигатель?лучше если можете проверте в протеусе прошивку!pyzhman писал(а):Что?nyvkom_sv писал(а):поводить себя морот
Фаза есть - ума не надо!
Двигатель включается каждые N минут (N определяется джамперами SA2..SA4). Работает до срабатывания концевика SA1. В момент срабатывания концевика питание с двигателя снимается и начинается отсчет времени.nyvkom_sv писал(а):поводить себя морот при основной прошивке
С протеусрм особо не дружу (или он со мной не дружит), но тем не менее -
Не забудьте в свойствах мк (нажать правую кнопку мыши на изображении мк) указать нужный файл для симуляции. Фузы должны быть настроены на внутренний тактовый генератор 9,6МГц и фуз делителя на 8 не прошит.
- Вложения
-
- shema.zip
- (16.92 КБ) 222 скачивания
Docendo discimus
основная прошивка даже в протеусе ничего не делает!!!в чем проблема?pyzhman писал(а):Двигатель включается каждые N минут (N определяется джамперами SA2..SA4). Работает до срабатывания концевика SA1. В момент срабатывания концевика питание с двигателя снимается и начинается отсчет времени.nyvkom_sv писал(а):поводить себя морот при основной прошивке
С протеусрм особо не дружу (или он со мной не дружит), но тем не менее -
Не забудьте в свойствах мк (нажать правую кнопку мыши на изображении мк) указать нужный файл для симуляции. Фузы должны быть настроены на внутренний тактовый генератор 9,6МГц и фуз делителя на 8 не прошит.
Фаза есть - ума не надо!
Да, действительно, двигатель стартовал только после передергивания концевого выключателя, т.к. не было начального старта таймера. Поправил. Для модели сократил времена отсчета.
Спойлер
Код: Выделить всё
//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)
{
};
}
- Вложения
-
- timer.hex
- (1.2 КБ) 411 скачиваний
Docendo discimus
в принципе все нормально!!!напишите пожалуйста прошивку с нормальним времям!!0т 15 мин до 2 часов!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) { }; }
Фаза есть - ума не надо!


