Описание: Помогите пожалуйста из двоичного кода перевести в шестнадцатеричный |
Поиск в теме | Версия для печати |
nick2008 |
Отправлено: 21 Ноября, 2009 - 12:46:32
|
Главнокомандующий
Сообщений всего: 275
Дата рег-ции: Март 2008
|
Пополам распилите 1111-1101 , сразу видно, что первая, это F, код 0xF?
Вторая буква находится так: 1111 это F, 1110 это E, 1101 это D, и т.п., пятимся раком назад, полная кирасивая табличка в википедии, google=Шестнадцатиричная система.
Итого у вас будииит.. звяк звяк звяк.. 0xFD Надеюсь, не ошибся, потому, что если ошибся, то у вас все сгорит Успехов. |
|
|
nick2008 |
Отправлено: 21 Ноября, 2009 - 18:40:00
|
Главнокомандующий
Сообщений всего: 275
Дата рег-ции: Март 2008
|
AVR Studio ставится после WinAvr,
она сразу предлагает выбрать язык проекта, проще на первых порах C (GCC),
и обязательно выбрать назначить папку ее хранения на английском и покороче
В окошко укладываете программу, она выполняет с якобы микропроцессором,
и есть окно смотреть порты. Для отладки красные точечки на характерные
места остановов программы расставляем (а то слишком быстро выполняет)
Built+Run - там магнитофонная кнопка старта есть..
Если программатор совместим с ней, то можно записать в память, иначе ищем
в папке Hex-файл и закачиваем PonyProg (он работает с дешевыми программаторами)
Первую программу из моего учебника я залил, таким образом, и она мигала,
короче.. таковую и стоит на первых порах пробовать
Таков опыт, и в сети есть предупреждение, что студию ставить нужно Поверх
WinAVR, она упрощает манипуляции и довольно проста, освоитесь |
|
|
SeRgEj |
Отправлено: 21 Ноября, 2009 - 21:56:55
|
Главнокомандующий
Сообщений всего: 268
Дата рег-ции: Нояб. 2009
|
Писал в системе Си. Люди я программированием только, что занялся и многово не знаю. Да ещё никак руки не доходят подключить системник с 98-ой виндой, ато на седьмой не идёт, вылезает командная строка, затем исчезает... Да и ещё... Проверьте программу, которую я написал прокатит ли она... Это версия с пояснениями(она не влезет в ATmega8), а ещё есть без пояснений она весит всего 4Kb. Заранее огромное спасибо.
CODE:/**********************************************************
Четырёхногий робот
***********************************************************/
#include <avr/io.h>
/***************** Функция задержки ****************/
void delay(unsigned short ms) // Минимальная задержка с кварцем 8 МГц - 1 мс
{
unsigned short i, j, k; // объявляем переменные
for (i=0; i<ms; i++) // главный цикл формирования задержки
for (j=0; j<185; j++) // вложенный цикл формирования задержки
k++; // произвольное действие
}
/****************************************************/
int main(void) // начало основной программы
{
DDRC = 0xff; // все выводы порта C сконфигурировать как выходы
DDRD = 0b11111101; // Почти все выводы порта D сконфигурировать как входы
PORTD = 0b00000010; // установить "1" на выводе 1 порта D,
// включаем подтягивающие резисторы
while (1) { // Бесконечный цикл
// ПРОВЕРЯЕМ СИГНАЛ НИЗКОГО УРОНЯ ОТ ФОТОДАТЧИКА
if (!(PIND & (1<<PIND1))) // проверить "0" на линии 1 порта D
delay(15000); {
while (1) {
// -------------- Разворачиваемся ---------------
PORTC |= _BV(PC2); // М4 вперёд
PORTD |= _BV(PD2); // М1 вперёд
PORTD |= _BV(PD3); // М2 назад
PORTC |= _BV(PC4); // М3 назад
PORTD &= ~_BV(PD5); // опускаем четвёртую ногу
delay(500); // ждем пол секунды
PORTD |= _BV(PD0); // М1 назад
PORTC |= _BV(PC1); // поднимаем первую ногу
delay(500); // ждем пол секунды
PORTC |= _BV(PC5); // М3 вперёд
PORTD |= _BV(PD6); // поднимаем третью ногу
PORTC &= ~_BV(PC1); // опускаем первую ногу
delay(500); // ждем пол секунды
PORTD |= _BV(PD4); // М2 вперёд
PORTD |= _BV(PD7); // поднимаем вторую ногу
PORTD &= ~_BV(PD6); // опускаем третью ногу
delay(500); // ждем пол секунды
PORTC |= _BV(PC3); // М4 назад
PORTD |= _BV(PD5); // поднимаем четвёртую ногу
PORTD &= ~_BV(PD7); // опускаем вторую ногу
delay(500); // ждем пол секунды
// -----------------------------------------------------
}
}
else
while (1) { // Бесконечный цикл
// ------------------ Шагаем вперёд ------------------
PORTD |= _BV(PD4); // М2 вперёд
PORTD |= _BV(PD7); // поднимаем вторую ногу
PORTC &= ~_BV(PC2);
PORTC &= ~_BV(PC5);
PORTD &= ~_BV(PD2);
PORTC &= ~_BV(PC1);
PORTD &= ~_BV(PD6);
PORTD &= ~_BV(PD5);
delay(500); // ждем пол секунды
PORTC |= _BV(PC2); // М4 вперёд
PORTD |= _BV(PD5); // поднимаем четвёртую ногу
PORTD &= ~_BV(PD4);
PORTD &= ~_BV(PD7);
delay(500); // ждем пол секунды
PORTC |= _BV(PC5); // М3 вперёд
PORTD |= _BV(PD6); // поднимаем третью ногу
PORTC &= ~_BV(PC2);
PORTD &= ~_BV(PD5);
delay(500); // ждем пол секунды
PORTD |= _BV(PD2); // М1 вперёд
PORTC |= _BV(PC1); // поднимаем первую ногу
PORTC &= ~_BV(PC5);
PORTD &= ~_BV(PD6);
delay(500); // ждем пол секунды
PORTD |= _BV(PD0);
PORTC |= _BV(PC3);
PORTC |= _BV(PC4);
PORTD |= _BV(PD3);
PORTC &= ~_BV(PC1);
PORTD &= ~_BV(PD2);
delay(600); // ждем ~пол секунды
// Смещаемся вперёд
}
} // закрывающая скобка бесконечного цикла
} // закрывающая скобка основной программы
Прикреплено изображение
|
|
|
nick2008 |
Отправлено: 21 Ноября, 2009 - 22:09:44
|
Главнокомандующий
Сообщений всего: 275
Дата рег-ции: Март 2008
|
На мой взгляд, если это первая ваша программа, вы выбрали неудачную методику отладки. Это как все спаять и включить радиоприемник в розетку. Наверняка будет дым.
Выкиньте из циклов все и сначала проверьте элементарное действие, работает ли вообще фотодатчик. А если вы его примотали не так, и он не живет??
Ошибка может быть не в программе, а в железе. Сначала примитив залейте, посмотрите, двигатель повключайте, от фотодатчика.
Сначала проверяется, притом, до фотодатчика, включается ли двигатель или тракт мертв.
Паузу тоже потестировать надо.. достаточна ли она. И есть иные методы ее формирования. Для механических движений нужны большие паузы. Циклы - они светом мигать. Слишком быстры.
Потом поделайте программно простейшие движения, Так ли они идут. Проще по кусочкам все тракты проверить.. потом все и соберется до кучи, вы хоть знать будете, работают ли части.. |
|
|
|
Поиск в теме | Версия для печати |
Страниц (3): [1] 2 3 » |
« Делимся опытом » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
|
|
|
|