Страница 273 из 421
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб авг 24, 2013 22:49:54
isx
fan2005 писал(а)::" SBIC instruction: bit in I/O=X (unknown)". Я так понимаю что жалуется на то что я в программе часто использую PIN_X.n....
Часть кода для начала киньте, там посмотрим. Я на датчике холла делаю опрос пина в каждом цикле программы, и ничё, не ругается... Может в одном месте значение Х ошиблись, или саму команду описываете не правильно...
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс авг 25, 2013 15:53:31
fan2005
Часть кода для начала киньте, там посмотрим
void auto_1 (void)
{
while (PIND.4==0&PINB.3==1)
{
PORTB.2=0;
PORTB.1=1;
delay_ms(150);
if (PIND.6==0) { //сработка датчика №1
PORTB.2=0; //Выкл всё
PORTB.1=0;
};
}
if (PIND.4==1&PINB.3==1) //Кнопки не нажаты, то стоим на месте
{
PORTB.2=0; //Выкл всё
PORTB.1=0;
}
if (PIND.4==1&PINB.3==0) //нажата кнопка вверх
{
zero_t();
}
if (PIND.1==1) //проверка галетника, выход
{
zero_t ();
return;
}
}
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс авг 25, 2013 16:29:05
Panda_Y2K
В условиях if и while напишите вместо
while (PIND.4==0&PINB.3==1)
while (!PIND.4 & PINB.3)
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс авг 25, 2013 23:43:54
fan2005
Спасибо, Panda_Y2K!
Сделал все как ты написал, заработало! Попутно пробовал использование битовых масок, тоже помогает, но более тяжелее. Я так понял что не стоит использовать прямое сравнение (==) бита в КодеВизион, а лучше использовать конструкции проверки бита на 0 или 1!?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн авг 26, 2013 10:14:38
isx
Panda_Y2K писал(а):
while (!PIND.4 & PINB.3)
А я всегда скобки ставлю, дабы уже ни раз возникали проблемы с приоритетом при использовании переменных (почему не знаю, но с числами багов не замечал). Скобки еока ни раз не подводили

Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн авг 26, 2013 10:41:35
a_skr
наверное, имелось ввиду логическое И, а не битовое:
&&
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн авг 26, 2013 12:06:31
0867532
Ребята, может кто поможет чем сможет?!
Уже месяца два борюсь с 74HC595. вот прихожу к выводу что нужно больше ног и достаю из пакетика эту микросхему.
к Q0-Q7 подключаю диоды(через резистор) к земле.
далее питалку(Vcc на +), землю на землю.
Ds вешаю на PB0 (в коде DataPin)
OE на землю
ST_CP на PB1 (в коде RunPin)
SH_CP на PB2 (в коде ClockPin)
MR на +
Q7' весит в воздухе.
Код: Выделить всё
#include <tiny2313.h>
#include <delay.h>
#define DataPin PORTB.0
#define ClockPin PORTB.2
#define RunPin PORTB.1
#define wait delay_ms(1)
void main(void) {
PORTB=0x00;
DDRB=0x00;
while (1) {
wait; RunPin = 1; wait; RunPin = 0; wait;
delay_ms(300);
DataPin = 0;
wait; ClockPin = 1; wait; ClockPin = 0; wait;
DataPin = 1;
wait; ClockPin = 1; wait; ClockPin = 0; wait;
DataPin = 0;
wait; ClockPin = 1; wait; ClockPin = 0; wait;
DataPin = 1;
wait; ClockPin = 1; wait; ClockPin = 0; wait;
DataPin = 0;
wait; ClockPin = 1; wait; ClockPin = 0; wait;
DataPin = 1;
wait; ClockPin = 1; wait; ClockPin = 0; wait;
DataPin = 0;
wait; ClockPin = 1; wait; ClockPin = 0; wait;
DataPin = 1;
wait; ClockPin = 1; wait; ClockPin = 0; wait;
wait; RunPin = 1; wait; RunPin = 0; wait;
}
}
Далее загоняю код в контроллер, и ничего не работает.
иногда загораются рандомные диоды, но чаще всего вообще ничего не происходит, а если дёрнуть проводки то загорятся все.
Пробовал вешать 0.1мкф на RunPin но ничего не дало.
До этого пытался делать на кнопках(вместо контролера) -ничего не вышло.

Требуется срочно увеличить число выводов на контроллере.
З.Ы. Облазил кучу форумов конечно. то ли я такой тупой то ли микросхемы палёные но не пашет.
Я так понял что когда состояние ноги часов меняется с 0 на 1 она считывает состояние даты, так делаешь 8 раз и потом переводишь RunPin в 1?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн авг 26, 2013 12:11:16
Gudd-Head
Лол. Это вся программа?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн авг 26, 2013 12:30:55
0867532
Ну да...
Я думал больше и не надо чтоб "шашечки" вывести.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн авг 26, 2013 12:34:40
Gudd-Head
Во-первых, RunPin, DataPin и ClockPin хорошо бы настроить на вывод. А это совсем не
Во-вторых, что такое wait?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн авг 26, 2013 12:45:07
0867532
Вот это фейл так фейл:) а wait это delay_ms(1)(cм #define wait delay_ms(1))
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн авг 26, 2013 12:50:23
ibiza11
0867532, ноги надо настроить на выход. а у вас все ноги работают в режиме входа ( DDRB = 0x00 )
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн авг 26, 2013 12:52:39
0867532
да, я ж вроде ставил 0xFF
ну хз, почему стояло 0x00 Но теперь всё работает!!!
Доволен как слон:)
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн авг 26, 2013 12:56:32
ibiza11
и это реально два месяца заняло????
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн авг 26, 2013 13:08:33
0867532
Ну с контроллером только сегодня попробовал.
А когда кнопки ставил не вешал MR на +(не знал.)
И пытался раз в 2 недели.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт авг 30, 2013 17:58:26
Импульс
0867532 писал(а):а что ты хотел? ты на кнопки ничего не повесил.
и.т.д.
Во первых это не пограмма ,а кусок кода)черновик(...
Спойлер
#include <tiny2313.h>
#include <delay.h>
unsigned char flag = 0;void main(void)
void main(void)
{
PORTA=0x07;
DDRA=0x00;
PORTB=0x00;
DDRB=0xFF;
PORTD=0x3F;
DDRD=0x40;
Программу переделывать пришлось полностью,глядя на первоначальную версию...
Как посоветовал
urry
Спойлер
Очень легко считать требуемое значение таймера
Например, на вход 1 таймера поступает 8 мег, нужно снять с него 1 килогерц (1 мс период)
Код:
#define F_IN 8000000
#define F_OUT 1000
#define TM1_C 65536 - (F_IN/F_OUT)
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
TCNT1+=TM1_C;
// выставляем флаг, что прошла миллисекунда
Я поступил так-же
unalex писал(а):
эта программа некритична
И поэтому завёл таймер TIM0
urry писал(а):
Тема - многозадачные процессы - ему еще понадобится.
Полностью согласен!
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс сен 01, 2013 08:11:08
vadd
Здраствуйте, подскажите пожалуйста как правильно записать условие:
Если PORTB.O=1 (кнопка нажата), то PORTC.0=1
если кнопка выкл, то PORTC.0=0
Если PORTB.O=1 в течение 0,3 сек(кнопку нажали и отпустили), то PORTС.O=1 в течение 5 сек
Если на PORTD.O=1, то PORTC.0=0
Спасибо.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс сен 01, 2013 08:15:11
Аlex
как правильно записать условие
Если интересуют кнопки, в разделе "Периферия" есть тема по ним, почитайте, там есть примеры.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс сен 01, 2013 08:26:42
pyzhman
vadd писал(а):PORTB.O=1 (кнопка нажата), то PORTC.0=1
если кнопка выкл, то PORTC.0=0
vadd писал(а):Если PORTB.O=1 в течение 0,3 сек(кнопку нажали и отпустили), то PORTС.O=1 в течение 5 сек
Использовать отслеживание по времени.
vadd писал(а):Если на PORTD.O=1, то PORTC.0=0
А как это согласуется с первым условием?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс сен 01, 2013 10:41:00
vadd
Я хотел сделать так, чтобы при появлении 1 на портуD.0 - порт С.0 оключался , в каком бы состоянии не была кнопка вкл или выкл.
А можно ссылку на раздел "Периферия"