реклама на сайте
подробности

 
 
> Простенькая программка измерения длительности импульса.
Зверюга
сообщение Aug 30 2008, 07:37
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 413
Регистрация: 15-12-06
Пользователь №: 23 563



Здравствуйте. Подкиньте пожалуйста примерчик на CodeVision для непрерывного измерения длительности импульса контроллером AVR.

Я так прикидываю, что нужно запускать по прерыванию с пина таймер, по следующему прерыванию останавливать, читать сколько натикало, сбрасывать и вновь запускать. Дискретность - максимально возможная для таймера в atmega32.

В интернете видел только готовые очень мудрые проекты, выдрать из которых суть сложновато, да и то для IAR и WinAVR.


Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Зверюга
сообщение Aug 31 2008, 14:53
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 413
Регистрация: 15-12-06
Пользователь №: 23 563



Спасибо конечно, но вот разрешение прерываний не дает работать ЖКИ..

Для чистоты эксперимента убрал все лишнее, убрал инициализацию таймера, убрал обработчик прерывания - просто сделал sei - перезагружается..

УХ ТЫ!!!! Посмотрите код!
Запретил прерывания, инициализировал экранчик. Поставил задержку в 3 секунды - чтобы хоть посмотреть на черный экран.
Затем включил прерывания. - Экран стал моргать с периодичнстью в 3 секунды.

ЭТО НЕ ЖКИ, ЭТО КОНТРОЛЛЕР РЕСЕТИТСЯ. Почему? Куда копать?


Вот код:

Код
#include <mega32.h>
#include <delay.h>
#include <disp.h>
#include <stdio.h>
#include <defines.c>
//****************************************************  
  #define INT_ON    #asm("sei")
    #define INT_OFF    #asm("cli")

u08 variable;  
ui16 textcolor;    // color of text
ui16 backcolor;    // color of background

ui16 varvar;
volatile int cycle=0;
///////////////////////////////////////////////////


interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
   //lcd_setxy(2,15);
   //  lcd_str_fl("timer_ovfl",f8x14,green);//ñòðîêà èç flash  

           cycle++;
}

  
void main(void)
{

INT_ON;
/*
TCCR1A=0x00;
TCCR1B=0x03;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

  
  */
  


//=================================================
     varvar = 4500 + 60123;

INT_OFF;          
              lcd_init();
      
             backcolor=black;
             textcolor=yellow;

lcd_clr();        
fill_screen(black);
delay_ms(3000);
INT_ON;


    
}





Для общей информации - вот библиотека ЖКИ

При этом регистр MCUCSR=0x03, то есть оба бита равны 1
Прикрепленные файлы
Прикрепленный файл  New_libs_s65_v0_1_.3.rar ( 111.05 килобайт ) Кол-во скачиваний: 26
 
Go to the top of the page
 
+Quote Post
sKWO
сообщение Aug 31 2008, 15:18
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



Цитата(Зверюга @ Aug 31 2008, 17:53) *
ЭТО НЕ ЖКИ, ЭТО КОНТРОЛЛЕР РЕСЕТИТСЯ. Почему? Куда копать?
При этом регистр MCUCSR=0x03, то есть оба бита равны 1

Как у Вас организован внешний сброс?

Чё к ресету подсоединено и как?


Цитата
Bit 1 – EXTRF: External Reset Flag
This bit is set if an External Reset occurs. The bit is reset by a Power-on Reset, or by writing a
logic zero to the flag.
• Bit 0 – PORF: Power-on Reset Flag
This bit is set if a Power-on Reset occurs. The bit is reset only by writing a logic zero to the flag.
To make use of the Reset Flags to identify a reset condition, the user should read and then reset
the MCUCSR as early as possible in the program. If the register is cleared before another reset
occurs, the source of the reset can be found by examining the Reset Flags.

Вотчдог не включён?

Ещё, запитываете каким образом, стабилизатор и БП не слабенькие?

оф: чем отлаживаете?


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Зверюга   Простенькая программка измерения длительности импульса.   Aug 30 2008, 07:37
- - rv3dll(lex)   Цитата(Зверюга @ Aug 30 2008, 11:37) Здра...   Aug 30 2008, 08:00
|- - sKWO   Цитата(rv3dll(lex) @ Aug 30 2008, 11...   Aug 30 2008, 08:30
- - Зверюга   бр.... оговорился... мне период и нужен. Не значю ...   Aug 30 2008, 12:00
|- - sKWO   запускайте таймер который имеет режим захвата во ф...   Aug 30 2008, 14:14
- - Зверюга   Господа, слишком непонятно и поверхностно... Ни ст...   Aug 30 2008, 15:29
|- - sKWO   Цитата(Зверюга @ Aug 30 2008, 18:29) Я во...   Aug 30 2008, 19:53
- - Зверюга   Боюсь Ваш метод мне не подойдет. Объясню: время не...   Aug 31 2008, 13:25
|- - sKWO   Вы глобально не разрешили прерывания. инициализаци...   Aug 31 2008, 13:57
- - Зверюга   ЦитатаЖКИ графический, успеет? четыре милисекунды ...   Aug 31 2008, 14:13
|- - sKWO   Цитата(Зверюга @ Aug 31 2008, 17:13) Проч...   Aug 31 2008, 14:31
- - Зверюга   ЦитатаКак у Вас организован внешний сброс? Чё к р...   Aug 31 2008, 15:20
|- - sKWO   Цитата(Зверюга @ Aug 31 2008, 18:20) К ре...   Aug 31 2008, 15:33
- - Зверюга   Подпаял резистор, конденсатор ненашел. Все равно р...   Aug 31 2008, 17:46
|- - sKWO   Цитата(Зверюга @ Aug 31 2008, 20:46) Полу...   Aug 31 2008, 18:53
- - Зверюга   Вы по-моему опережаете события... Я не решил пробл...   Aug 31 2008, 19:06
|- - sKWO   Цитата(Зверюга @ Aug 31 2008, 22:06) Я вс...   Aug 31 2008, 19:23
- - Зверюга   ТАК, ПОХОЖЕ ГЛЮК ВСЕ ТАКИ СВЯЗАН С БИБЛИОТЕКОЙ ЖКИ...   Aug 31 2008, 19:39
|- - rezident   Цитата(Зверюга @ Sep 1 2008, 01:39) Госпо...   Aug 31 2008, 21:16
|- - sKWO   Цитата(Зверюга @ Aug 31 2008, 22:39) Code...   Sep 1 2008, 17:23
- - Зверюга   Вы не правы. Это наименее вероятная причина. Функц...   Sep 1 2008, 03:17
- - Cyber_RAT   замените для чистоты эксперимента функцию на асме ...   Sep 2 2008, 04:40
- - Зверюга   Цитатазамените для чистоты эксперимента функцию на...   Sep 2 2008, 05:20


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 16:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01403 секунд с 7
ELECTRONIX ©2004-2016