Технический форум по робототехнике.
Vovan » 08 янв 2012, 22:56
А что компилятор говорит по поводу программы?
В какой момент зависает Протеус?
Ваще-то лучше весь код опубликовать, тогда си-шники точно подскажут в чем проблема.
ЗЫ: я уже говорил, повторюсь - не лучше ли сначала светодиодом поморгать в Протеусе?
Экономия времени и сил гарантирована в освоении софта.
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
INDEPENDENT » 14 янв 2012, 18:49
Помогите)) SOS)
Vovan » 14 янв 2012, 20:52
не думаю что на сигнал SOS можно получить помощь, не зная координат и проблем терпящего бедствие. Среди людей ИМХО не писаный закон: "люди помогите! в доме пожар!" (есть описание проблемы и указано место катастрофы).
ИМХО: нужно указать проблему (конкретно) и в каком месте проблема (координаты), кроме того неплохо указать на почве чего она возникла, а так же чего хочется получить при ее решении.
yak-40 » 14 янв 2012, 21:32
Взглянул на твой код.
Ты уж определись, PORTD у тебя на вход или на выход работать будет
Добавлено спустя 7 минут 5 секунд:Да и PORTB тоже непонятно.
INDEPENDENT писал(а):DDRB=0x0F;
вроде как PORTB.0 установлен на выход,
а тут ты его опрашиваешь как вход
INDEPENDENT писал(а):if (PINB.0==0)
Vovan » 14 янв 2012, 22:55
ага, я уже писал об этом:
Vovan писал(а):сразу у меня вопрос (хоть я в си ни бум-бум
)
If (PINB.0==1) почему?
но INDEPENDENT ответил:
INDEPENDENT писал(а):Я лучше с этим разберусь.
я и не вмешивался
А ваще INDEPENDENT тому кто "стучится в дверь, откроют ее", не стесняйся - пиши задавай вопросы, глядишь и выплывем, ничего в этом страшного нет - инфа лишней не бывает...
Народ, бывает такие вопросы задает - что просто падаешь навзничь, хоть и сидишь.........
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 секунды:Спасибо, что Вы помогаете!
- Вложения
-
yak-40 » 15 янв 2012, 14:10
INDEPENDENT писал(а):Я исправил
Ничего ты не исправил.
Надо правильно настроить порты ввода/вывода. Ты используешь PORTB для кнопок, а PORTD для управления драйвером.
Значит надо настроить PORTB на вход:
DDRB=0x00;
Включить подтягивающие резисторы:
PORTB=0x0F;
А PORTD настроить на выход:
DDRD=0x3F;
З.Ы. выложи проект в протеусе, посмотрим.
INDEPENDENT » 15 янв 2012, 14:33
Вот, выложил. Я использую CodeWizardAVR для проставления портов, и там ,как я понял, я делаю грубейшие ошибки, так как не понимаю. Я не владею языком си, владею паскалем.
- Вложения
-
- контроллер.rar
- (17.98 КиБ) Скачиваний: 0
Vovan » 15 янв 2012, 18:11
Для написания такой программы (я мождь ошибаюсь
) проще ознакомиться всё таки с си и
осознанно написать сию крохотную програмульку на
осознанном си... Я вот не шарю, но точно знаю - сумел бы максимум за час. Потому что точно знаю ЧЕГО ХОЧУ, но не умею это написать на си, для этого бы и ознакомился с начальными командами си
Метод тыка - штука нужная, не отрицаю, но не в этом случае, т.к. здесь он мне напоминает такое: Чел. не знает немец., но знает неск. слов на немец. и перебирая их методом тыка пытается завязать диалог с немцем...
Такое или похожее по сути, кстати в каком-то фильме видел...
Потом чувак махнул рукой, объявив что мол немец просто не грамотный, или глухой, что-то типо того...
INDEPENDENT » 15 янв 2012, 18:26
Простейшие команды знаю :присвоение значения переменные, циклы, условия. Я не понимаю по какому принципу работают порты и в каком случае in а в каком out
mikkey finn » 15 янв 2012, 19:37
Тут надо исходить из задачи. Кнопка - что такое? В общем случае - устройство управления, ты кнопкой управляешь, а значит ВВОДИШЬ информацию в систему.
А двигатели - это что такое? Это исполнительные механизмы, вместе с драйвером двигателей. Ты ими управляешь, для этого надо из системы управления ВЫВЕСТИ информацию. Соответственно те ноги микросхемы, к которым подключены кнопки надо настроить на ВВОД. А те, к которым подключены двигатели - на ВЫВОД. Как это сделать - надо читать справку по своей среде программирования. Выше написали, как на ассемблере. На Си можно делать вставки ассемблера, на CVAVR, возможно, для этого используется специальный оператор. Как определить, какие конкретно ноги порта настроить - надо читать даташит на микросхему-контроллер.
yak-40 » 15 янв 2012, 19:55
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 битная. Может из-за этого ошибка?
mikkey finn » 15 янв 2012, 19:59
Не знаю, как 7.5 версия, у меня 7.7 sp2 утащенная с торрентов на windows7 x64 работает без падений.