ТАВРОФОРУМ

Вернуться   ТавроФорум > Не автомобильные темы > Решение бытовых проблем > Компьютеры

Компьютеры Уголок для решения бытовых компьютерных проблем.

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.10.2013, 17:36   #11
Pilot
 
Адрес: Киев
Сообщений: 335
Длина: 5700мкм
Диаметр: 35мм
Отправить сообщение для Pilot с помощью ICQ
По умолчанию

Начинаю все с начала, в связи с некоторыми изменениями в логике устройства (введение АЦП)

первым делом разбиваю всю программу на подпрограммы, и смотрю как работает.
Первая программа - дешифратор задатчика (порт B), для наглядности выводит информацию в унитарном виде на порту D
(данные на порту В - третий столбец таблицы, диод на порту D - первый столбец таблицы)
прочерки означают незадаваемое положение, кресты - что при указанном состоянии прочих ног, состояние данной не учитывается.






#define F_CPU 1000000UL

#include <avr/io.h>
#include <util/delay.h>


int main(void)

{

PORTA=0b11111111;
DDRA=0b00000000;

PORTB=0b11111111;
DDRB=0b00000000;

PORTC=0b00000000;
DDRC=0b11111111;

PORTD=0b00000000;
DDRD=0b11111111;

PORTD=0b11111111;
_delay_ms(2000);
PORTD=0b00000000;




while(1)
{


//Задатчик;

//Таблица соответствия состояния энкодера / задатчика положения / индикации положения;

// № | PA4 PA5 PA6 | PB0 PB1 PB2 PB3 | PD2-6;
// --------------------------------------------------;
// 1 | 0 1 1 | 1 1 x 1 | 00010;
// 2 | 0 0 1 | 0 1 0 1 | 11010;
// 3 | 1 0 1 | 0 1 1 1 | 10010;
// 4 | 1 0 0 | x x x 0 | 00001;
// 5 | 1 1 0 | - - - - | 00001;
// 6 | 0 1 0 | 0 0 x 1 | 11110;
// 7 | 0 1 0 | 1 0 x 1 | 00110;


com: if (PORTB3==0)
{
PORTD=0b00001000;
}
else if(PORTB3==1 && PORTB0==1 && PORTB1==1)
{
PORTD=0b00000001;
}
else if(PORTB3==1 && PORTB0==1 && PORTB1==0)
{
PORTD=0b01000000;
}
else if(PORTB3==1 && PORTB0==0 && PORTB1==0)
{
PORTD=0b00100000;
}
else if(PORTB3==1 && PORTB0==0 && PORTB1==1 && PORTB2==0)
{
PORTD=0b00000010;
}
else if(PORTB3==1 && PORTB0==0 && PORTB1==1 && PORTB2==1)
{
PORTD=0b00000100;
}
else
{
goto com;
}
}
}



При проверке дебаггером ошибок и замечаний нет, но когда провести пошаговыую проверку, тоон просматривает назначение портов, и замирает.
до тела программы не доходит.
При проверке в эмуляторе (протеус), ругается на то, что в hex-файле найдена какая-то ошибка.

ps: to Глобус
1 - к сожалению с твоим кодом не разобрался
2 - двигатель у меня не шаговый, а коллекторный.

pps: может кто посоветует более адекватное ПО для написания, отладки и компиляции программы?
__________________
Надейся на лучшее, расчитывай на худшее
Люблю Таврооргию. Такого пох№зма и подъ№балова нигде не встретишь! (c) Lusi
Pilot вне форума   Ответить с цитированием
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

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

Быстрый переход


Текущее время: 23:45. Часовой пояс GMT +3.


Перевод: zCarot Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.