roboforum.ru

Технический форум по робототехнике.

Нужна помошь в освоении proteus.

Re: Нужна помошь в освоении proteus.

Vovan » 08 янв 2012, 22:56

А что компилятор говорит по поводу программы?
В какой момент зависает Протеус?
Ваще-то лучше весь код опубликовать, тогда си-шники точно подскажут в чем проблема.
ЗЫ: я уже говорил, повторюсь - не лучше ли сначала светодиодом поморгать в Протеусе? :wink: Экономия времени и сил гарантирована в освоении софта. :)

Re: Нужна помошь в освоении proteus.

INDEPENDENT » 13 янв 2012, 10:01

Компилятор доволен! В момент когда я нажимаю на значок start. Я лучше с этим разберусь.

Добавлено спустя 10 минут 13 секунд:
Код: Выделить всёРазвернуть
/*****************************************************
This program was produced by the
CodeWizardAVR V2.04.4a Advanced
Automatic Program Generator
© Copyright 1998-2009 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date    : 13.01.2012
Author  : NeVaDa
Company :
Comments:


Chip type               : ATmega8L
Program type            : Application
AVR Core Clock frequency: 8,000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/

#include <mega8.h>

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=T State4=T State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0x0F;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=1 State4=1 State3=0 State2=0 State1=0 State0=0
PORTD=0x30;
DDRD=0x3F;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

while (1)
      {
      // Place your code here
         while(1) {
{if (PINB.0==0)
{PORTD.0=1 ;
PORTD.1=0;}}

{if (PIND.1==0)
{PORTD.0=0 ;
PORTD.1=1;}}

{if (PIND.2==0)
{PORTD.2=1;
PORTD.3=0;}}

{if (PIND.3==0)
{PORTD.2=0 ;
PORTD.3=1;}}
}

      };
      };



Мой код в CVavr

Re: Нужна помошь в освоении proteus.

INDEPENDENT » 14 янв 2012, 18:49

Помогите)) SOS)

Re: Нужна помошь в освоении proteus.

Vovan » 14 янв 2012, 20:52

не думаю что на сигнал SOS можно получить помощь, не зная координат и проблем терпящего бедствие. Среди людей ИМХО не писаный закон: "люди помогите! в доме пожар!" (есть описание проблемы и указано место катастрофы).
ИМХО: нужно указать проблему (конкретно) и в каком месте проблема (координаты), кроме того неплохо указать на почве чего она возникла, а так же чего хочется получить при ее решении.

Re: Нужна помошь в освоении proteus.

yak-40 » 14 янв 2012, 21:32

Взглянул на твой код.
Ты уж определись, PORTD у тебя на вход или на выход работать будет :wink:

Добавлено спустя 7 минут 5 секунд:
Да и PORTB тоже непонятно.
INDEPENDENT писал(а):DDRB=0x0F;

вроде как PORTB.0 установлен на выход,
а тут ты его опрашиваешь как вход
INDEPENDENT писал(а):if (PINB.0==0)

Re: Нужна помошь в освоении proteus.

Vovan » 14 янв 2012, 22:55

ага, я уже писал об этом:
Vovan писал(а):сразу у меня вопрос (хоть я в си ни бум-бум :roll: )
If (PINB.0==1) почему?

но INDEPENDENT ответил:
INDEPENDENT писал(а):Я лучше с этим разберусь.
я и не вмешивался :roll:
А ваще INDEPENDENT тому кто "стучится в дверь, откроют ее", не стесняйся - пиши задавай вопросы, глядишь и выплывем, ничего в этом страшного нет - инфа лишней не бывает...
Народ, бывает такие вопросы задает - что просто падаешь навзничь, хоть и сидишь.........

Re: Нужна помошь в освоении proteus.

INDEPENDENT » 15 янв 2012, 13:29

Код: Выделить всёРазвернуть
/*****************************************************
This program was produced by the
CodeWizardAVR V2.04.4a Advanced
Automatic Program Generator
© Copyright 1998-2009 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date    : 15.01.2012
Author  : NeVaDa
Company :
Comments:


Chip type               : ATmega8L
Program type            : Application
AVR Core Clock frequency: 8,000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/

#include <mega8.h>

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=T State4=T State3=1 State2=1 State1=1 State0=1
PORTB=0x0F;
DDRB=0x0F;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=1 State4=1 State3=0 State2=0 State1=0 State0=0
PORTD=0x30;
DDRD=0x3F;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

while (1)
      {
      // Place your code here
          while(1) {
{if (PINB.0==0)
{PORTD.0=1 ;
PORTD.1=0;}}

{if (PIND.1==0)
{PORTD.0=0 ;
PORTD.1=1;}}

{if (PIND.2==0)
{PORTD.2=1;
PORTD.3=0;}}

{if (PIND.3==0)
{PORTD.2=0 ;
PORTD.3=1;}}
}

      };
      };

Я исправил, наверно я , что то не понимаю, грустно. Программа ISIS зависает, и Window 7 моментально предлагает ее закрыть. Подскажите в чем ошибка, пожалуйста, вроде все исправил.

Добавлено спустя 1 минуту 22 секунды:
Спасибо, что Вы помогаете!
Вложения
Безымянный.png

Re: Нужна помошь в освоении proteus.

yak-40 » 15 янв 2012, 14:10

INDEPENDENT писал(а):Я исправил

Ничего ты не исправил.
Надо правильно настроить порты ввода/вывода. Ты используешь PORTB для кнопок, а PORTD для управления драйвером.
Значит надо настроить PORTB на вход:
DDRB=0x00;
Включить подтягивающие резисторы:
PORTB=0x0F;
А PORTD настроить на выход:
DDRD=0x3F;

З.Ы. выложи проект в протеусе, посмотрим.

Re: Нужна помошь в освоении proteus.

INDEPENDENT » 15 янв 2012, 14:33

Вот, выложил. Я использую CodeWizardAVR для проставления портов, и там ,как я понял, я делаю грубейшие ошибки, так как не понимаю. Я не владею языком си, владею паскалем.
Вложения
контроллер.rar
(17.98 КиБ) Скачиваний: 0

Re: Нужна помошь в освоении proteus.

Vovan » 15 янв 2012, 18:11

Для написания такой программы (я мождь ошибаюсь :oops: ) проще ознакомиться всё таки с си и осознанно написать сию крохотную програмульку на осознанном си... Я вот не шарю, но точно знаю - сумел бы максимум за час. Потому что точно знаю ЧЕГО ХОЧУ, но не умею это написать на си, для этого бы и ознакомился с начальными командами си :)
Метод тыка - штука нужная, не отрицаю, но не в этом случае, т.к. здесь он мне напоминает такое: Чел. не знает немец., но знает неск. слов на немец. и перебирая их методом тыка пытается завязать диалог с немцем...
Такое или похожее по сути, кстати в каком-то фильме видел...
Потом чувак махнул рукой, объявив что мол немец просто не грамотный, или глухой, что-то типо того...

Re: Нужна помошь в освоении proteus.

INDEPENDENT » 15 янв 2012, 18:26

Простейшие команды знаю :присвоение значения переменные, циклы, условия. Я не понимаю по какому принципу работают порты и в каком случае in а в каком out

Re: Нужна помошь в освоении proteus.

mikkey finn » 15 янв 2012, 19:37

Тут надо исходить из задачи. Кнопка - что такое? В общем случае - устройство управления, ты кнопкой управляешь, а значит ВВОДИШЬ информацию в систему.
А двигатели - это что такое? Это исполнительные механизмы, вместе с драйвером двигателей. Ты ими управляешь, для этого надо из системы управления ВЫВЕСТИ информацию. Соответственно те ноги микросхемы, к которым подключены кнопки надо настроить на ВВОД. А те, к которым подключены двигатели - на ВЫВОД. Как это сделать - надо читать справку по своей среде программирования. Выше написали, как на ассемблере. На Си можно делать вставки ассемблера, на CVAVR, возможно, для этого используется специальный оператор. Как определить, какие конкретно ноги порта настроить - надо читать даташит на микросхему-контроллер.

Re: Нужна помошь в освоении proteus.

yak-40 » 15 янв 2012, 19:55

Рекомендую:http://www.avr123.nm.ru/

Re: Нужна помошь в освоении proteus.

INDEPENDENT » 15 янв 2012, 19:57

Код: Выделить всёРазвернуть
Сигнатура проблемы:
  Имя события проблемы:   APPCRASH
  Имя приложения:   ISIS.EXE
  Версия приложения:   7.5.3.7401
  Отметка времени приложения:   00000000
  Имя модуля с ошибкой:   StackHash_0f84
  Версия модуля с ошибкой:   6.1.7601.17514
  Отметка времени модуля с ошибкой:   4ce7ba58
  Код исключения:   c0000374
  Смещение исключения:   000ce653
  Версия ОС:   6.1.7601.2.1.0.256.1
  Код языка:   1049
  Дополнительные сведения 1:   0f84
  Дополнительные сведения 2:   0f8433cce75775c9477032d566da5888
  Дополнительные сведения 3:   02bb
  Дополнительные сведения 4:   02bb91f41830cac57807397b0543563f

Ознакомьтесь с заявлением о конфиденциальности в Интернете:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0419

Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
  C:\Windows\system32\ru-RU\erofflps.txt

У меня windows 64 битная. Может из-за этого ошибка?

Re: Нужна помошь в освоении proteus.

mikkey finn » 15 янв 2012, 19:59

Не знаю, как 7.5 версия, у меня 7.7 sp2 утащенная с торрентов на windows7 x64 работает без падений.


Rambler\'s Top100 Mail.ru counter