роботы робототехника микроконтроллеры


 Страниц (11): « 1 2 3 4 [5] 6 7 8 9 ... » В конец    

> Без описания
skyburn Post Id



Маршал


Сообщений всего: 124
Дата рег-ции: Янв. 2011  



Да, извините, моя ошибка. Делей забыл убрать) А по портам:
- 5 должен генерировать такт для входа тактовых импульсов на 74HC595.
- 6 собственно с него должны лезть байты.
- 7 это защелочка.

Но проблема в том, что компилятор не понимает такой записи PORTB.5 и тд. И ругается. Я просто смотрел пару исходников, и там именно таким образом передавали данные в сдвиговые регистры.
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



skyburn пишет:
PORTB.5

ну так правильно что не понимает. В Си идентифекаторы не могут с цифры начинаться.
 
 Top
skyburn Post Id



Маршал


Сообщений всего: 124
Дата рег-ции: Янв. 2011  



ммм
CODE:
// Global enable interrupts
#asm("sei")
#asm("wdr");
while (1)
{
for(k=0;k<SHIFT_SPEED;k++)
{
//for(j=1;j<65;j<<=1)//7 strings
for(j=0;j<8;j++)//8 strings
{//выводим информацию из видеопамяти в регистры сдвига
l=1<<j;
for(i=0;i<MATRIX_LEN;i++)
{
PORTC.2=0;//SH_CP=0
PORTC.0=VideoRAM[i] & l;//transmit bit - наложим на байт маску текущей строки и выставим в порт(на вход DS)
PORTC.2=1;//SH_CP=1 - протолкнем бит в сдвиг. регистры
};
PORTC.1=1;//ST_CP=1 - защелкнем данные в регистрах
PORTB=l;//set output string
PORTC.1=0;
delay_us(50);//wait
};
};
#asm("wdr");
//проверим, включен ли эффект
if(dissolve_flag) {dissolve_effect(); goto no_shift;};
if(!mode)data_shift();//если активирован редактор, то просто регенерируем табло
no_shift:
};
}


Вот кусок кода, который я хотел взять за основу. Но не вышло.
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



вы delay_ms(что то тут) забыли поставить
Программа- работющая, но...
Время нужно както расчитать
(Добавление)
зачем включать обработчик прерываний если ни одного обработчика прерываний не написано?
 
 Top
skyburn Post Id



Маршал


Сообщений всего: 124
Дата рег-ции: Янв. 2011  



Мы сейчас не говорим о работоспособности программы, мне ее для начала откомпилить бы нормально.
Вы можете обьяснить, почему у него допустимы записи в виде PORTC.1=1 а у меня нет?
 
 Top
skyburn Post Id



Маршал


Сообщений всего: 124
Дата рег-ции: Янв. 2011  



Вы меня запутали
(Добавление)
И еще вопросик. Вот этот код по идее должен выполняться бесконечно. Но у меня он выполняется пару минут, а потом все гаснет и все. И нужно отключить питание на минуту, что б оно опять заработало
CODE:
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
DDRD=0xff;
while(1)
{
PORTD|=_BV(PD4);
_delay_ms(25);
PORTD&=~_BV(PD4);
_delay_ms(50);


PORTD|=_BV(PD5);
_delay_ms(25);
PORTD&=~_BV(PD5);
_delay_ms(50);


PORTD|=_BV(PD3);
_delay_ms(25);
PORTD&=~_BV(PD3);
_delay_ms(50);


PORTD|=_BV(PD2);
_delay_ms(25);
PORTD&=~_BV(PD2);
_delay_ms(50);
}

}

 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



cjA, последнее предупреждеение вам: не знаете, не разбираетесь, сомневаетесь - не троллите.
Ваш бред только вводит в заблуждение.



skyburn пишет:
код по идее должен выполняться бесконечно. Но у меня он выполняется пару минут, а потом все гаснет и все. И нужно отключить питание на минуту, что б оно опять заработало
ничего не перегревается? Запитано от чего?
Фотографию и схему покажите.
 
 Top
Белый Волк Супермодератор Post Id



Супермодератор


Сообщений всего: 648
Дата рег-ции: Февр. 2007  



skyburn
cjA не точно выразился - дело в разных компиляторах.
Записи вида:
PORTB.5 = 1;
если я не ошибаюсь, верны для компилятора Code Vision AVR.
Вы используете, насколько я знаю, связку WinAVR + AVR Studio, то есть Ваш компилятор - AVR GCC.
Для Вас следует писать:
PORTB |= 0b00100000;

Насчёт бесконечного цикла: код верный. nest прав: похоже на проблемы с питанием, без фотографии схемы и описания источника питания нельзя сказать точнее.
 
 Top
skyburn Post Id



Маршал


Сообщений всего: 124
Дата рег-ции: Янв. 2011  



Источник питания использую взятый с этого сайта, ну стабилизатор, напряжение ровно 5.00.
(Добавление)
И тогда можно еще одну немного наглую просьбу. Можете набросать код, для AVR studio, реализующий передачу байтов в 74HC595, данные берутся из массива. Ну как у меня там, можете поправить, а то я все равно не могу вьехать как его заставить работать.
Это, если я правильно понял PORTB |= 0b00100000; - означает что из всех 8ми портов подать 1 на 3й порт? А на все остальные 0?
 
 Top
ОЛЕГ Супермодератор Post Id



Супермодератор


Сообщений всего: 1732
Дата рег-ции: Нояб. 2008  



С другого конца. На 5. Улыбка
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



GNU Компиляторов коллекция - вот как переводится GCC
(зачем влез? меня же предупредили?)(и AVR тут не причем, они подо все пишут)
 
 Top
skyburn Post Id



Маршал


Сообщений всего: 124
Дата рег-ции: Янв. 2011  



Цитата:
PORTB |= 0b00100000;

Галяк, ругается, говорит что undeclared.
 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  




дааа... вот она, сила СИ-кампиляторов!
Вместо того, что бы сразу думать над алгоритмом - убьём пару месяцев на изучение синтаксиса... Помираю со смеху



skyburn, посмотрите в HELP вашей среды, там наверняка есть куча примеров управления портов. Вот оттуда и спишите.
 
 Top
skyburn Post Id



Маршал


Сообщений всего: 124
Дата рег-ции: Янв. 2011  



Окей) Спасибо)
 
 Top
Белый Волк Супермодератор Post Id



Супермодератор


Сообщений всего: 648
Дата рег-ции: Февр. 2007  



skyburn
На каком языке Вы программировали для PC?
Приведите полный текст ошибки.
 
 Top
Страниц (11): « 1 2 3 4 [5] 6 7 8 9 ... » В конец
« Делаем роботов »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru