Форум по разработке и ремонту электронной техники Киевский форум радиолюбителей и электронщиков. Форумы по разработке и ремонту электронной техники
    Схемы электрические принципиальныеГлавная    ФорумФорум    ПоискПоиск по форуму    Личные сообщенияФайлообменник    Личные сообщенияРадиотехнический каталог   

Фотогалерея   <b>Профиль</b>Ваш профиль    Личные сообщенияЛичные сообщения    ГруппыГруппы   

FAQFAQ    РегистрацияРегистрация    ВходВход

Уважаемые посетители! Это старая версия форума. Новая версия находится по адресу: http://www.remexpert.com
Прерывание таймера."мгновенное" срабатывание (AVR)
На страницу 1, 2  След.
 
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Форум по разработке и ремонту электронной техники -> Микроконтроллеры, процессоры, ПЛИС...
 
Автор Сообщение
AVL
Знатный посетитель (>20)
Знатный посетитель (>20)


Зарегистрирован: 20.09.2006
Сообщения: 52
Откуда: Коломыя UA

СообщениеДобавлено: 20 Дек 2006, 11:54    Заголовок сообщения: Прерывание таймера."мгновенное" срабатывание (AVR) Ответить с цитатой

"Отрезано с темы Микроконтроллеры начинающим"

Здравствуйте!
У меня свежая непонятка.
Вот моя програмка. В Протерусе работает без проблем.
А в жизни НЕТ.
А именно. Суть задачи. Выставить автоматически после старта на пару секунд на РВ3,4 ноль, а на РВ1,2 единицу, а затем реверс навсегда.
Так вот, в жизни у меня этих пару секунд нет. Практически сразу устанавливается реверс и всё.

И это ещё не все проблемы.
Я использую Kanda Systems STK200+/300 программатор.
Так вот если я програмирую RSTDISBL=1, то программер это уже чип не видит. Тогда я переписываю чип ОМЕГОЙ и всё опять нормально видится Kanda Systems STK200+/300.
Так и должно с этим программером?
Код:

/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.8d Professional
Automatic Program Generator
© Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : SRS imitator
Version :
Date : 30.11.2006
Author :AVL
Company :AVL
Comments:èìèòèðóåò èñïðàâíóþ ðàáîòó ëàìï÷êè àèðáåãà.
Ïèíû 2,3 è 6,7 ðàáîòàþò â ïðîòèâîôàçå.
Chip type : Tiny15
Clock frequency : 1,600000 MHz
Memory model : Tiny
External SRAM size : 0
Data Stack size : 32
*****************************************************/

#include <Tiny15.h>

unsigned char sc;

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{

TCNT0=0x55;
if (sc > 0xaa)
PORTB=0b011001;

else
sc=sc+1;
}
void main(void)
{
PORTB=0b000111;
DDRB=0b011111;
TCCR0=0x04;
TCNT0=0x22;
GIMSK=0x00;
MCUCR=0x00;
TIMSK=0x02;
ACSR=0x80;
#asm("sei")

while (1);

}
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AndryG
Модератор


Зарегистрирован: 24.07.2006
Сообщения: 411
Откуда: Helios-3

СообщениеДобавлено: 20 Дек 2006, 12:14    Заголовок сообщения: Ответить с цитатой

"практически нет" значит есть, но мало. Скорее всего намудрили с фьюзами установки частоты внутреннего генератора.
1.6 МГц ... Я не знаю этого чипа .. Вы используете внешний кварц?

Попробуйте задержку поставить, не две. а 8-16 секунд и поситайте - так заметнее будет время переключения и посчитайте на какой частоте у вас завелся контроллер... а вообще просмотрите фьюзы и доку по ним в даташите.

_________________
AndryG
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
AVL
Знатный посетитель (>20)
Знатный посетитель (>20)


Зарегистрирован: 20.09.2006
Сообщения: 52
Откуда: Коломыя UA

СообщениеДобавлено: 20 Дек 2006, 15:09    Заголовок сообщения: Ответить с цитатой

Да, задержка есть, Но если она в Протерусе порядка 2-3 секунд, то в жизни она еле уловима глазом.
И это при том, что я на максимум ставил эти параметры:
TCNT0=0x01;
if (sc > 0xFA);

В Протерусе я вообще не дождался срабатывания при ТАКИХ параметрах.
Так-что дело думаю не в тактовом генераторе. Ну пускай там 10 секунд, а там одна, если я ошибся с тактовой. Это максимальная ошибка, но задержки в жизни почти нет. На глаз, 0.2 сек задержка. Может это и не задержка вовсе.... а время релаксации после сброса?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AndryG
Модератор


Зарегистрирован: 24.07.2006
Сообщения: 411
Откуда: Helios-3

СообщениеДобавлено: 20 Дек 2006, 15:58    Заголовок сообщения: Ответить с цитатой

Измените немного код
Код:

  if (sc > 0xaa)
   PORTB=0b011001;

 НА

  if (sc > 0xaa)
   PORTB ^= 0b00000110;

 


Выводы будут переключаться и вы увидите как часто у вас срабатывает этот кусок кода.

CVAVR, если не ошибаюсь, не поддерживает ATTiny15...
Время в Протеусе отслеживаете по ЕГО часам ... так ведь, а не по текущему времени.

Приведите расчеты, как Вы расчитывали время? делитель, число перегрузки и т.д. ... может и ошибка всплывет?

_________________
AndryG
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
AVL
Знатный посетитель (>20)
Знатный посетитель (>20)


Зарегистрирован: 20.09.2006
Сообщения: 52
Откуда: Коломыя UA

СообщениеДобавлено: 20 Дек 2006, 16:56    Заголовок сообщения: Ответить с цитатой

"CVAVR, если не ошибаюсь, не поддерживает ATTiny15... "
Программатор поддерживает, а вот компилятор нет. Но кое-как работало у меня раньше, правда, и на более сложных задачах, правда. там я таймер не использовал. Но ведь Протерус нормально же работает.... Или я чего недопонимаю... А в чём тогда писать программу для Атини15? На Си, конэчно.

"Время в Протеусе отслеживаете по ЕГО часам ... так ведь, а не по текущему времени. "
Да, согласен, но хоть бы на пол секунды задержало, что б видно глазомы было, при МАКСИМАЛЬНЫХ задержках.

"Приведите расчеты, как Вы расчитывали время? делитель, число перегрузки и т.д. ... может и ошибка всплывет?"
Расчётов, увы нет никаких. На гляз. Написал, зашил, проверил, изменил, С этого девайса "стрелять" не буду. Задержка не критичеа, плюс/минус пол секунды.

Какой софт поддерживает написание программ для Аттини15 на Си?.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AVL
Знатный посетитель (>20)
Знатный посетитель (>20)


Зарегистрирован: 20.09.2006
Сообщения: 52
Откуда: Коломыя UA

СообщениеДобавлено: 28 Дек 2006, 20:15    Заголовок сообщения: Ответить с цитатой

У меня непонятка.
пишу так:
________________________________________________________
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0xfa;
PORTB=PORTB+1;
____________________________________________________________

и всё отлично работает. Идёт инкремент порта В с частотой зависящей от этого параметра "TCNT0=0xfa;"
Когда я пишу это:
_________________________________________________
unsigned char sc=0;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0xfa;
if (sc > 0xFF)
PORTB=0b011001;
else
sc=sc+1;
______________________________________________
То порт В сразу стаёт в PORTB=0b011001; в не зависимости от того if (sc > 0xFF) или if (sc < 0xFF) и в независимости от установок TCNT0=0xfa;.
Почему? Есть подозрение у меня, что ЭТО от того, что я использую КОДЕВИДИН АВР в котором нет Атини15, а пробую ввё это на именно этом процессоре.... Чем для Атини 15 можно работать?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AndryG
Модератор


Зарегистрирован: 24.07.2006
Сообщения: 411
Откуда: Helios-3

СообщениеДобавлено: 29 Дек 2006, 12:11    Заголовок сообщения: Ответить с цитатой

AVL

В втором куске обратите внимание на две строки:
Код:

unsigned char sc=0;
&
if (sc > 0xFF)


В Сети есть много безобидных кусочков ппрограмм, которые сводят с ума компилятор CodeVision. Так-как Вы не выложили Asm-файл, то можно предполагать, почему у Вас не работает.
Измените разрядность sc или сравнивайте с меньшим числом.
А еще лучше - прицепите к своему сообщению проект CV или асм-файл.

_________________
AndryG
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
AVL
Знатный посетитель (>20)
Знатный посетитель (>20)


Зарегистрирован: 20.09.2006
Сообщения: 52
Откуда: Коломыя UA

СообщениеДобавлено: 29 Дек 2006, 20:49    Заголовок сообщения: Ответить с цитатой

/*********************************************
This program was produced by the
CodeWizardAVR V1.23.6a Standard
Date : 28.12.2006
Author : AVL
Chip type : ATtiny15
*********************************************/

#include <Tiny15.h>

unsigned char sc=5;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0x10;
if (sc > 0xF0)
PORTB=PORTB+1;
else
sc=sc+1;
}

void main(void)
{
PORTB=0x3f;
DDRB=0x3f;
TCCR0=0x05;
TCNT0=0xfa;
GIMSK=0x00;
MCUCR=0x00;
TIMSK=0x02;

// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/16
//WDTCR=0x08;

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

while (1)
{
// Place your code here
};
}

Выкладываю полный текст программы, ибо аттач не атТачится почему-то. Цепляю rar архив и не цепляется Грусть
В этом примере, в жизни, идёт инкремент порта СРАЗУ после ресета. Период красиво реагирует на изменение этого параметра: TCNT0=0x10;
А вот на строку if (sc > 0xF0) нет никакой реакции, что там "больше" что " меньше" ставлю - без разницы - моментальный инкремент порта сразу после ресета, повторюсь.



1.rar
 Описание:

Файлообменник
 Название файла:  1.rar
 Размер файла:  243.4 KB
 Скачено:  162 раз(а)


1.rar
 Описание:

Файлообменник
 Название файла:  1.rar
 Размер файла:  243.4 KB
 Скачено:  109 раз(а)


1.rar
 Описание:

Файлообменник
 Название файла:  1.rar
 Размер файла:  243.4 KB
 Скачено:  112 раз(а)

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AVL
Знатный посетитель (>20)
Знатный посетитель (>20)


Зарегистрирован: 20.09.2006
Сообщения: 52
Откуда: Коломыя UA

СообщениеДобавлено: 29 Дек 2006, 20:54    Заголовок сообщения: Ответить с цитатой

Прицепилось, одначе Улыбка))
Получилось, блин Улыбка

Ещё момент, на самом "быстром" пине PORTB.0 период виден даже глазом (где-то четверть секунды). Это я к тому, что если б прога работала нормально, то колебания должны были б начинаться хотяю секунд через 15-20, а тут сразу мигать порт начинает, и что это не непонятка с установкой частоты тактирования процессора. а что-то другое, мне, так-сказать, неведомое.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AVL
Знатный посетитель (>20)
Знатный посетитель (>20)


Зарегистрирован: 20.09.2006
Сообщения: 52
Откуда: Коломыя UA

СообщениеДобавлено: 29 Дек 2006, 21:09    Заголовок сообщения: Ответить с цитатой

СТОП!!!
Разобрался сам. Улыбка
Тут была собака зарыта.
У меня была написано
unsigned char sc=5;
а надобыло:
unsigned char sc=0x05;
Отсюда вопрос к специалистам.
Если написать так unsigned char sc=5;, то какое значение принимает переменная в ХЕКС или БИН? 5 это что получается, что с ним компилятор не хотел работать?
Спасибо за поддержку!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Форум по разработке и ремонту электронной техники -> Микроконтроллеры, процессоры, ПЛИС... Часовой пояс: GMT + 2
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять вложения в этом форуме
Вы можете просматривать вложения в этом форуме


Rambler's Top100 PageRank Яндекс цитирования
Сайты наших друзей: Гири, все о гирях, Автоматизация магазинов, супермаркетов, ресторанов, кинотеатров,
Весы электронные, Сканеры штрих-кода, Принтеры штрих-кода

Powered by phpBB © 2001, 2005 phpBB Group

Время генерации страницы: 0.6773s (PHP: 92% - SQL: 8%) - SQL запросов: 14 - GZIP enabled - Debug on