Перейти к содержанию

Могу ля я доверять Proteus при тестировании Atmega?


MaDiEQ

Рекомендуемые сообщения

Все верно, но многие, как писали и я в том числе, постоянно грешат именно на протеус, не проверяя, всели верно в коде. В моем примере с синусом частота максимальна, и сообщение есть но все работает как положено, а вот если подкинуть какой нибудь аналоговый усилитель ошибки то симуляции труба:D.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Складывается ощущение, что симуляция в реальном времени - это главное, к чему надо стремиться. Но на самом деле это не так.

На самом деле протеус предоставляет отличные средства анализа сложных схем, так сказать, в оффлайне, т.е. без реального времени - это инструментарий графического анализа. Таким образом я анализировал схемы с аналоговыми фильтрами и МК, программы МК с цифровыми фильтрами... Даже DDS-синтез "полифонических" мелодий я моделировал в протеусе, хотя каждый, кто пробовал для этой цели использовать "интерактивный динамик" знает, что звук там, мягко говоря, неприятный.

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Попробуйте запустить хотя бы на ATmega8 fastPWM с верхней границей в ICR1 (режим WGM3:0 = 1110 либо 1111)

Попробуйте запустить АЦП в режиме непрерывного преобразования (бит ADFR / ADATE)

Неважно на какой тактовой частоте, хоть 1 Гц, хоть 1 ГГц.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

@COKPOWEHEU , если не трудно - дайте свой тестовый проект для проверки. Любопытно.

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

PB0 меняется в прерывании АЦП, PB2 - ШИМ выход таймера.

макрос SHOW_BUG включает-выключает "как оно должно работать"

Скрытый текст

#include <avr/io.h>
#include <avr/interrupt.h>

#define SHOW_BUG

ISR(ADC_vect){
  PORTB ^= (1<<0);
#ifndef SHOW_BUG
  ADCSRA |= (1<<ADSC);
#endif
}

int main(){
  DDRB |= (1<<2 | 1<<0);

//Таймер
  ICR1 = 0x00FF;
  OCR1A = 0x00FF;
  OCR1B = 0x0080;
  TCCR1A = (0<<COM1A1 | 0<<COM1A0 | 1<<COM1B1 | 0<<COM1B0 | 1<<WGM11 | 0<<WGM10);
#ifdef SHOW_BUG
  TCCR1B = (1<<WGM13 | 1<<WGM12 | 0b001<<CS10);
#else
  TCCR1B = (0<<WGM13 | 1<<WGM12 | 0b001<<CS10);
#endif
  
//АЦП
  ADMUX = 0 | (0b11<<REFS0);
  ADCSRA = (1<<ADEN | 1<<ADSC | 1<<ADFR | 1<<ADIE | 0b001<<ADPS0);

  sei();
  while(1){
    asm("nop");
  }
}

 

 

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Да, примерно так он выглядит когда SHOW_BUG закомментирован. Когда раскомментирован - ни тот ни другой порт не меняются. По крайней мере в моей версии 7.6

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

А какая версия протеуса?

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Вот результаты моего тестирования:

SHOW_BUG активировано

proteus-with-show-debug.jpg

SHOW_BUG заремарено

proteus-without-show-bug.jpg

proteus-002.jpg

Вот результаты моего тестирования:

SHOW_BUG активировано

proteus-with-show-debug.jpg

SHOW_BUG заремарено

proteus-without-show-bug.jpg

proteus-002.jpg

Лично мне известены только два косяка протеуса, причем первый - очень мешает отладке, если flash AVR заполнена более чем примерно на 70%.

Первый - это некорректная работа со счетчиком команд PC для AVR. Известно, что все AVR имеют аппаратное маскирование всех старших битов счетчика команд, чем ограничивается адресация ячеек существующей памяти. Таким образом, какое бы значение в этот счетчик не попало (например, по команде pop или при исполнении rcall или jmp), управление будет передано обязательно на ячейку существующей памяти. Однако протеус о таком поведении счетчика команд не в курсе до 8-й версии: GCC очень любит генерировать код с относительными переходами "взад", т.е. как бы на несуществующие адреса (особенно в случаях, когда flash память на грани исчерпания), что при отладке в протеусе неизбежно приводит к остановке симуляции с ошибкой.

Второй, похоже, я сам и "открыл" - это неправильная инициализация USART после сброса. Честно говоря, после того, как я обнаружил это, я стал всегда применять соответствующий код, поэтому даже не знаю, сохранился ли этот баг до 8-й версии... но все 7-е и более ранние его "поддерживали" :) 

Более подробно об этом я писал здесь.

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

Ну что ж, видимо и мне пора прекратить некрофилию и перейти на более позднюю версию. Впрочем, эти баги не настолько критичны так что можно не спешить. В любом случае при упоминании этих багов буду уточнять что давно пофикшено.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

7 часов назад, COKPOWEHEU сказал:

пора прекратить некрофилию

Пора-то оно пора, но считаю своим долгом предупредить Вас и остальных, что вышепоказанная мною версия протеуса крякнута не совсем корректно: примерно через 3 минуты работы в любом режиме выскакивает окошко с ошибкой о каком-то доступе куда-то... Если это окошко закрыть - закрывается и весь протеус, если не закрывать, работа продолжится в полном объеме, но такое же окошко появится еще раз примерно через 3 минуты, потом еще и еще... Окошки эти выдает какая-то библиотека DLL, а не основное приложение, поэтому если кликнуть в главное окно протеуса, все окошки эти самые уходят "под низ" и не видны (кроме как в панели задач), но через пол-часа работы их становится просто неприлично много... И это огорчает.

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

12 часа назад, COKPOWEHEU сказал:

А какая версия протеуса?

8.1 SP1

Что заметил, при переходе от версии к версии одни баги уходят другие появляются. В этой есть баг если находишься в прерывании SPI и опять устанавливается флаг по SPI, то при выходе с прерывания этот флаг теряется.

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...

У меня другая ситуация, в Протеусе работает все отлично, а в реале ничего не работает. Я просто, написал интерфейс для общения с lcd.

Пока разбираюсь с макеткой, может там накосячил.

А у кого то были ситации наоборот, в Протеусе работает все ок, а в реале нет?

Ссылка на комментарий
Поделиться на другие сайты

31 минуту назад, Purple сказал:

У меня другая ситуация, в Протеусе работает все отлично, а в реале ничего не работает. Я просто, написал интерфейс для общения с lcd.

Пока разбираюсь с макеткой, может там накосячил.

А у кого то были ситации наоборот, в Протеусе работает все ок, а в реале нет?

бывало,  в моем случает были ошибки в подключении проводов

Ссылка на комментарий
Поделиться на другие сайты

Попытка симулировать TWI привела к такому решению:

;по-идее нужно пропускать если бит установлен в 1
;сделаем пока наоборот, потому что Протеус не симулирует

;  sbrc		r15,7           ;для Протеуса
   sbrs		r15,7           ;в ориганиле

Для прогона в Протеус пришлось строчки менять местами.

Изменено пользователем Геннадий
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...