Proteus: вопросы и ответы

Обсуждаем цифровые устройства...
Ответить
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

Сообщение Soir »

radio-kot писал(а):подскажите почему пропадают адреса перед строками кода исходника в proteus, номера на которых можно точки останова ставить?
Скорее всего из-за того, что в исходнике есть функции, которые программой не вызываются и фактически из прошивки их компилятор исключил. Все строки кода ниже этой функции становятся безадресными и точки останова поставить невозможно, хотя сама программа будет выполняться в полном объеме. Это особенность (наверно можно причислить к ошибкам) Proteus, а может CVAVR.
radio-kot писал(а):Может хитрость есть какая то?
Удалите или закомментируйте неиспользуемую функцию. Или перенесите ее в самый низ кода, если при дальнейшей разработке она все-таки будет востребована.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2584
Зарегистрирован: Вт сен 14, 2010 10:27:19

Сообщение radio-kot »

СПАСИБО! Вы абсолютно правы! Задействовал все функции в проге и адреса строк появились и асм распределился по Си коду. Ляпота! :beer:
Будете проходить мимо- проходите!
Реклама
Опытный кот
Сообщения: 822
Зарегистрирован: Вс июн 02, 2013 12:23:03

Сообщение amd9800 »

zifus писал(а):Здравствуйте !!
та модель что у тебя работает неправильно - максимальное ШИМ заполнение 25%.

держи нормальную модель.
Вложения
UC3842internet.zip
(24.09 КБ) 230 скачиваний
Электрический кот
Аватара пользователя
Сообщения: 1071
Зарегистрирован: Пн май 04, 2009 16:43:07
Откуда: Набережные Челны

Сообщение Hudgun »

Почему Протеус 7.2 (пробовал 7.9 , 8 beta - результат тот же) не хочет работать с LCD дисплеем когда ножка RW посажена на землю? Судя по скринам в гугле у людей в таком варианте работает... В готовом проекте используется библиотека без выхода RW http://www.mikrocontroller.net/articles ... nsteuerung Мне этот проект исправить под свои нужды надо, а каждый раз прошивать 32 мегу слишком долго (AVR910 от Prottoss'a тормоз :) )

Изображение

P.S. дабы исключить глючность прошивки, специально создавал простой проект с выводом 1 строки и пробовал откидывать RW и сажать его на землю...
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

Сообщение Soir »

Hudgun писал(а):Почему Протеус 7.2 (пробовал 7.9 , 8 beta - результат тот же) не хочет работать с LCD дисплеем когда ножка RW посажена на землю?
У меня в 7.10 мои проекты работают с RW на общий провод с моделью LM016L. В Proteus (опять же 7.10, как в более ранних затрудняюсь сказать) есть примеры и с LM032L в которых RW используется. Но если их посадить на общий провод, то схема все равно симулируется, с выдачей соответствующих предупреждений, естественно...
Дадите свой проект - попробую запустить у себя...
Реклама
Электрический кот
Аватара пользователя
Сообщения: 1071
Зарегистрирован: Пн май 04, 2009 16:43:07
Откуда: Набережные Челны

Сообщение Hudgun »

хммм, значит более раннюю 7.1 версию надо поискать. ладно попробую.
проект проверочный вот
Вложения
ПРОТЕУС.rar
(12.63 КБ) 216 скачиваний
Реклама
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

Сообщение Soir »

Hudgun писал(а):хммм, значит более раннюю 7.1 версию надо поискать
У меня версия 7.10.
Hudgun писал(а):проект проверочный вот
Без RW виснет наглухо на 0,4 секунде.
Ковыряйте код, что-то у Вас там не так. Вот мой пример, рабочий и в Proteus, и в железе. Еще раз повторюсь, в папке SAMPLES Proteus'а есть примеры с этим индикатором.
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Пн янв 06, 2014 23:15:34

Сообщение Brette333 »

Привет мои маленькие любители программы Proteus. :)) ,подскажите пожалуйста есть ли возможность в программе измерять температуру деталей.? например резистор хочу помереть.
Мучитель микросхем
Аватара пользователя
Сообщения: 441
Зарегистрирован: Ср июн 03, 2009 00:20:21
Откуда: Новороссия ЛНР Рубежное -> РФ Калуга

Сообщение Murka »

Brette333 писал(а):хочу помереть.
Может не надо? Второй попытки не будет!
Политика России будет выглядеть неоднозначной до тех пор, пока не будет решен исход битвы.
Свободу можно завоевать, можно просрать, но высидеть свободу нельзя! ©
Всё, что меня не убивает - делает большую ошибку!
Не зли меня!!! :wink:
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Пн янв 06, 2014 23:15:34

Сообщение Brette333 »

Murka писал(а):
Brette333 писал(а):хочу помереть.
Может не надо? Второй попытки не будет!
как это не надо..) я хочу при симуляции или сразу после неё измерять температуру деталей. что, такой возможности нет в этой программе?
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

Боюсь придётся воспользоваться рассчётами... :dont_know:
Если нажать на паузу, а потом щёлкуть по интересующему резистору, то выйдет инфа о токе, напряжении и мощности.... Эти данные могут помочь в рассчётах...
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

что, такой возможности нет в этой программе?
Тут такое дело - температуру деталей вам вряд ли какой симулятор схем посчитает. Мощность - пожалуйста. А вот температура уже более тонкая материя. Она зависит от геометрии компонента, температуры окружающей среды, характеристик корпуса компонента, наличия радиатора, ориентации детали в пространстве (в.т.ч. и относительно других компонентов), если устройство еще и в корпусе - то и от геометрии и характеристик корпуса. Так что это совершенно отдельные серьезные расчеты.

Такое, в частности, умеет SolidWorks. И вот в него можно подставлять рассчитаные в симуляторе схем мощности, а он рассчитает предполагаемую температуру деталей с учетом всего перечисленного выше и многого другого. :)
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Электрический кот
Аватара пользователя
Сообщения: 1071
Зарегистрирован: Пн май 04, 2009 16:43:07
Откуда: Набережные Челны

Сообщение Hudgun »

Soir писал(а): Ковыряйте код, что-то у Вас там не так..
Ума не приложу, что там может быть не так :dont_know:
Спойлер

Код: Выделить всё

#include <mega32.h>

#asm
.equ __lcd_port=0x12
#endasm
#include <lcd.h>
 
void main(void)
{
PORTD=0x00;
DDRD=0x00;
 
lcd_init(16);

lcd_putsf("Hello, world!"); 
}; 
Мучитель микросхем
Аватара пользователя
Сообщения: 441
Зарегистрирован: Ср июн 03, 2009 00:20:21
Откуда: Новороссия ЛНР Рубежное -> РФ Калуга

Сообщение Murka »

Hudgun , CVAVR?
Политика России будет выглядеть неоднозначной до тех пор, пока не будет решен исход битвы.
Свободу можно завоевать, можно просрать, но высидеть свободу нельзя! ©
Всё, что меня не убивает - делает большую ошибку!
Не зли меня!!! :wink:
Контактная информация:
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

Сообщение Soir »

Hudgun писал(а):Ума не приложу, что там может быть не так
Не так здесь: #include <lcd.h>
Точнее в подключаемой библиотеке lcd.lib
В ней используется RW, отсюда и проблемы при его отключении. И ковырять нужно там.
Или замените lcd.h на alcd.h
Кстати в CVAVR тоже полно примеров применения индикатора.
Электрический кот
Аватара пользователя
Сообщения: 1071
Зарегистрирован: Пн май 04, 2009 16:43:07
Откуда: Набережные Челны

Сообщение Hudgun »

Murka писал(а):Hudgun , CVAVR?
да

Так ладно, c alcd.h дисплей заработал без RW. Значит выходит lcd-routines.h (http://www.mikrocontroller.net/articles ... nsteuerung) который используется в готовом проекте косячный (там уже работатет связка AVR Studio + WinAVR)?

lcd-rotines.c
Спойлер

Код: Выделить всё

// Ansteuerung eines HD44780 kompatiblen LCD im 4-Bit-Interfacemodus
// http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
//
// Die Pinbelegung ist über defines in lcd-routines.h einstellbar
 
#include <avr/io.h>
#include "lcd-routines.h"
#include <util/delay.h>
#include <avr/eeprom.h>
 
// sendet ein Datenbyte an das LCD
 
void lcd_data(unsigned char temp1)
{
      LCD_PORT |= (1<<LCD_RS);        // RS auf 1 setzen

   lcd_send(temp1);
}
 
// sendet einen Befehl an das LCD
 
void lcd_command(unsigned char temp1)
{
   LCD_PORT &= ~(1<<LCD_RS);        // RS auf 0 setzen
   
   lcd_send(temp1);
}

//Eigentliche LCD-Zugriffs-Funktion; 4-Bit-Modus
void lcd_send(unsigned char data) {
   // oberes Nibble setzen
  LCD_PORT = (LCD_PORT & 0xF0) | ((data >> 4) & 0x0F);
  _delay_us(5);
  lcd_enable();
   // unteres Nibble setzen
  LCD_PORT = (LCD_PORT & 0xF0) | (data & 0x0F);
  _delay_us(5);
  lcd_enable();
  _delay_us(60);  
  LCD_PORT &= 0xF0;
}

// erzeugt den Enable-Puls
void lcd_enable(void)
{
	LCD_PORT |= (1<<LCD_EN1);
    _delay_us(10);                   // kurze Pause
   // Bei Problemen ggf. Pause gemäß Datenblatt des LCD Controllers verlängern
   // http://www.mikrocontroller.net/topic/80900
   LCD_PORT &= ~(1<<LCD_EN1);
}
 
// Initialisierung: 
// Muss ganz am Anfang des Programms aufgerufen werden.
 
void lcd_init(void)
{
	LCD_DDR = LCD_DDR | 0x0F | (1<<LCD_RS) | (1<<LCD_EN1);   // Port auf Ausgang schalten
	// muss 3mal hintereinander gesendet werden zur Initialisierung
	_delay_ms(30);
	LCD_PORT = (LCD_PORT & 0xF0 & ~(1<<LCD_RS)) | 0x03;
	lcd_enable();

	_delay_ms(5);
	lcd_enable();

	_delay_ms(1);
	lcd_enable();
	_delay_ms(1);
	LCD_PORT = (LCD_PORT & 0xF0 & ~(1<<LCD_RS)) | 0x02;
	_delay_ms(1);
	lcd_enable();
	_delay_ms(1);

	// 4Bit / 2 Zeilen / 5x7
	lcd_command(CMD_SetIFOptions | 0x08);

	// Display ein / Cursor aus / kein Blinken
	lcd_command(CMD_SetDisplayAndCursor | 0x04);

	// inkrement / kein Scrollen    
	lcd_command(CMD_SetEntryMode | 0x02);	
	lcd_clear();
}
 
// Sendet den Befehl zur Löschung des Displays
 
void lcd_clear(void)
{
   lcd_command(CLEAR_DISPLAY);
   _delay_ms(5);
}
 
 
// Schreibt einen String auf das LCD
 
void lcd_string(char *data)
{
    while(*data) {
        lcd_data(*data);
        data++;
    }
}

//String aus EEPROM laden und an LCD senden
void lcd_eep_string(const unsigned char *data)
{	
	unsigned char c;
    while(1) {
		c = eeprom_read_byte(data);
		if(c==0) return;
        lcd_data(c);
        data++;
    }
}
lcd-routines.h
Спойлер

Код: Выделить всё

// Ansteuerung eines HD44780 kompatiblen LCD im 4-Bit-Interfacemodus
// http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
//

void lcd_data(unsigned char temp1);
void lcd_command(unsigned char temp1);
void lcd_send(unsigned char data);
void lcd_string(char *data);
void lcd_enable(void);
void lcd_init(void);
void lcd_clear(void);
void lcd_eep_string(const unsigned char *data);

//LCD-Befehle
#define CMD_SetEntryMode         0x04
#define CMD_SetDisplayAndCursor  0x08
#define CMD_SetIFOptions         0x20
#define CMD_SetCGRAMAddress      0x40    // für Custom-Zeichen
#define CMD_SetDDRAMAddress      0x80    // zum Cursor setzen

//Makros für LCD
#define Line1() SetCursor(1,0)	//An den Anfang der 1. Zeile springen
#define Line2() SetCursor(2,0)	//An den Anfang der 2. Zeile springen

#define SetCursor(y, x) lcd_command((uint8_t)(CMD_SetDDRAMAddress + (0x40*(y-1)) + x)) //An eine bestimmte Position springen

#define LCDLoadCustomChar() lcd_command(CMD_SetCGRAMAddress)	//Custom-Zeichen laden

//Eigene Zeichen
#define LCD_CHAR_OMEGA  244	//Omega-Zeichen
#define LCD_CHAR_U  228		//µ-Zeichen
#define LCD_CHAR_DIODE  0	//Dioden-Icon; wird als Custom-Character erstellt
  
// LCD Befehle
 
#define CLEAR_DISPLAY 0x01
 
// Pinbelegung für das LCD, an verwendete Pins anpassen
 
#define LCD_PORT      PORTD
#define LCD_DDR       DDRD
#define LCD_RS        PD4
#define LCD_EN1       PD5
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Пн янв 06, 2014 23:15:34

Сообщение Brette333 »

Будьте добры, подскажите поподробней как частоту мерять? хочу знать какая частоа на светодиод падает.
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

Сообщение Soir »

Brette333 писал(а):...как частоту мерять? хочу знать какая частоа на светодиод падает.
Как частота на светодиод падает я не знаю, но измерять можно так, как во вложении.
Вложения
freq.zip
(9.03 КБ) 186 скачиваний
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Пн янв 06, 2014 23:15:34

Сообщение Brette333 »

спасибо. ещё вопросик. как заменить компонент на другой компонент не удаляя старый. ?
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

Сообщение Soir »

Brette333 писал(а):... как заменить компонент на другой компонент не удаляя старый. ?
Это задача из серии "...нарисовать семь красных линий. Все они должны быть строго перпендикулярны, и кроме того, некоторые нужно нарисовать зеленым цветом, а еще некоторые — прозрачным..."?
Ответить

Вернуться в «Цифровая техника»