Популярные микроконтроллеры Nuvoton серий М2354 и М251 со склада компании Смарт-ЭК
Новичок
 
Аватар для Skinner
 
Регистрация: 28.04.2011
Сообщений: 2
Репутация: 10
0 1
0 0
 
03.05.2011 20:16 #1
И так начну сначала.
Вот решил сделать сибе приборчик на МК что то вроде одно-канального USB осциллографа и перед тем как мучать настоящие железки стал тестить устройство в Proteus 7.7 и столкнулся вот с какой проблемкой при замере частоты до 400герц все работает нормально, а начиная с 400 и до 1000герц измерения начинают брихать на 1герц ну и все что выще 2000герц погрешность 2 герца и тд.

Вот в чем вопрос может ли симулятор давать мне такую лажу или это я все таки напортачил где то?

программа на Pascal
Код:
program asc;
//------------------------------------------------------------------------------
// LCD module connections
var LCD_RS : sbit at PORTD2_bit;
var LCD_EN : sbit at PORTD3_bit;
var LCD_D4 : sbit at PORTD4_bit;
var LCD_D5 : sbit at PORTD5_bit;
var LCD_D6 : sbit at PORTD6_bit;
var LCD_D7 : sbit at PORTD7_bit;

var LCD_RS_Direction : sbit at DDD2_bit;
var LCD_EN_Direction : sbit at DDD3_bit;
var LCD_D4_Direction : sbit at DDD4_bit;
var LCD_D5_Direction : sbit at DDD5_bit;
var LCD_D6_Direction : sbit at DDD6_bit;
var LCD_D7_Direction : sbit at DDD7_bit;
// End LCD module connections
var
   counter, lcd_counter: integer;
   text_0, cloc_txt: array[11] of char;

//------------------------------------------------------------------------------
procedure Timer2Overflow_ISR(); org IVT_ADDR_TIMER2_OVF;
begin
     inc(lcd_counter);
end;

procedure Interrupt_2(); iv IVT_ADDR_INT2;
begin
   inc(counter);
end;

begin
  { Main program }
  OSCCAL:= 0x7F;
//------------------------------------------------------------------------------
  SREG_I_bit:= 1;
  
  INT2_bit:= 1;

  TOIE2_bit:= 1;
  TCCR2:= 5;
  ASSR:= 255;
//------------------------------------------------------------------------------
  Lcd_Init();
  Lcd_Cmd(_LCD_CLEAR);
  Lcd_Cmd(_LCD_CURSOR_OFF);
  ByteToStr(Clock_MHz, cloc_txt);
  LCD_Out(1, 2, 'SNG ST - '+cloc_txt+'MHz');
 //-----------------------------------------------------------------------------
 DDRB:= 0xFF;
 counter:= 0;
 lcd_counter:= 0;
 
  while TRUE do
      begin
       if lcd_counter >= 3 then
        begin
        TOIE2_bit:= 0;

         IntToStr(counter div 3, text_0);
         counter:= 0;
         LCD_Out(2, 1, text_0+'Hz');
         lcd_counter:= 0;

        TOIE2_bit:= 1;
        end
      end
  
end.
пишу на паскале так как после Delphi проще переходить было (mikroPascal PRO for AVR)

схема
Изображения
Тип файла: png shema_00.png (22.1 Кб, 0 просмотров)
Оценка
Новичок
 
Регистрация: 05.08.2008
Сообщений: 1
Репутация: 10
 
12.05.2011 21:21 #2
А что мешает сделать макет с реальным железом? мега16 - ширпотреб, продается даже на захудалых радиорынках, к тому же не такое дорогое удовольствие. И, наверное, все таки частотомер; на осцилл меги не хватит, даже при всем желании
Оценка
Всплески перенапряжения являются серьезной угрозой надежности работы радиоэлектронных устройств. Причины их появления различны, это могут быть коммутационные переходные процессы в системе электропитания устройств, разряды молний, электростатические разряды. Для создания эффективной и современной системы защиты от ЭСР компания SUNCO разработала надежные и качественные супрессоры, представляющие собой TVS- и ESD-диоды, а также сборки на их основе. Компоненты SUNCO не только не уступают, но часто превосходят по характеристикам аналогичную продукцию других брендов.
Гуру
 
Регистрация: 13.05.2006
Сообщений: 3,908
Репутация: 1247
1,234 65
61 33
 
13.05.2011 07:32 #3
Я одно время фанател от протеуса, потом после нескольких его глюков решил не тратить время на выяснение-мой это глюк или симулятора. Что касается вашего случая, то очень смахивает на классическую ошибку на 1. Пример:
-есть область памяти с адресами от 0 до 10
-необходимо вычислить длину блока от 3 до 7
-вычисляем 7-3= получаем четыре
-реально 3.4.5.6.7 имеем пять
Оценка
Новичок
 
Аватар для Skinner
 
Регистрация: 28.04.2011
Сообщений: 2
Репутация: 10
0 1
0 0
 
13.05.2011 22:48 #4
в общем придется липить макет единственное но это FT232RL которая не выпускается PDIP корпусах (ЖКИ на схеме висит лиш для контроля выполнения в протеусе) которого в наличии как железки нет, а сама приставка будит USB-шная ...
по сути мне от него требуется замеры не больше 3Мгц так что с тактом в 16Мгц он вполне сможет мерить до 6,4Мгц ну а это в двое больше чем нужно так что хватит еще и с запасом ...

спасибо за разъяснения пойду ли пить макет .. если чо получится то скину схему и прошивку
Оценка
Ответ
Метки
atmega16, proteus, погрешность
Похожие темы
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Электронные компоненты. Скидки, кэшбэк и бесплатная доставка от ТМ Электроникс
Часовой пояс GMT +3, время: 03:58.
Обратная связь РадиоЛоцман Вверх