![]() |
|
|||||||
| Компьютеры Уголок для решения бытовых компьютерных проблем. |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
#11 |
|
Начинаю все с начала, в связи с некоторыми изменениями в логике устройства (введение АЦП)
первым делом разбиваю всю программу на подпрограммы, и смотрю как работает. Первая программа - дешифратор задатчика (порт 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 |
|
|
|
|