Часть кода для начала киньте, там посмотрим. Я на датчике холла делаю опрос пина в каждом цикле программы, и ничё, не ругается... Может в одном месте значение Х ошиблись, или саму команду описываете не правильно...fan2005 писал(а)::" SBIC instruction: bit in I/O=X (unknown)". Я так понимаю что жалуется на то что я в программе часто использую PIN_X.n....
CodeVision AVR в вопросах и ответах
Re: CodeVision AVR в вопросах и ответах
- Реклама
-
fan2005
- Первый раз сказал Мяу!
- Сообщения: 39
- Зарегистрирован: Вт авг 26, 2008 00:38:28
- Откуда: г. Бобруйск
Re: CodeVision AVR в вопросах и ответах
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;
}
}
все мы учились - чему-нибудь и как-нибудь
- Panda_Y2K
- Грызет канифоль
- Сообщения: 258
- Зарегистрирован: Пт сен 23, 2011 06:44:41
- Откуда: ЮФО
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
В условиях if и while напишите вместо
while (PIND.4==0&PINB.3==1)
while (!PIND.4 & PINB.3)
while (PIND.4==0&PINB.3==1)
while (!PIND.4 & PINB.3)
Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
-
fan2005
- Первый раз сказал Мяу!
- Сообщения: 39
- Зарегистрирован: Вт авг 26, 2008 00:38:28
- Откуда: г. Бобруйск
Re: CodeVision AVR в вопросах и ответах
Спасибо, Panda_Y2K!
Сделал все как ты написал, заработало! Попутно пробовал использование битовых масок, тоже помогает, но более тяжелее. Я так понял что не стоит использовать прямое сравнение (==) бита в КодеВизион, а лучше использовать конструкции проверки бита на 0 или 1!?
Сделал все как ты написал, заработало! Попутно пробовал использование битовых масок, тоже помогает, но более тяжелее. Я так понял что не стоит использовать прямое сравнение (==) бита в КодеВизион, а лучше использовать конструкции проверки бита на 0 или 1!?
все мы учились - чему-нибудь и как-нибудь
Re: CodeVision AVR в вопросах и ответах
А я всегда скобки ставлю, дабы уже ни раз возникали проблемы с приоритетом при использовании переменных (почему не знаю, но с числами багов не замечал). Скобки еока ни раз не подводилиPanda_Y2K писал(а): while (!PIND.4 & PINB.3)
- Реклама
Re: CodeVision AVR в вопросах и ответах
наверное, имелось ввиду логическое И, а не битовое:
&&
&&
- 0867532
- Встал на лапы
- Сообщения: 142
- Зарегистрирован: Сб май 25, 2013 21:14:11
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Ребята, может кто поможет чем сможет?!
Уже месяца два борюсь с 74HC595. вот прихожу к выводу что нужно больше ног и достаю из пакетика эту микросхему.
к Q0-Q7 подключаю диоды(через резистор) к земле.
далее питалку(Vcc на +), землю на землю.
Ds вешаю на PB0 (в коде DataPin)
OE на землю
ST_CP на PB1 (в коде RunPin)
SH_CP на PB2 (в коде ClockPin)
MR на +
Q7' весит в воздухе.
Далее загоняю код в контроллер, и ничего не работает.
иногда загораются рандомные диоды, но чаще всего вообще ничего не происходит, а если дёрнуть проводки то загорятся все.
Пробовал вешать 0.1мкф на RunPin но ничего не дало.
До этого пытался делать на кнопках(вместо контролера) -ничего не вышло.
Требуется срочно увеличить число выводов на контроллере.
З.Ы. Облазил кучу форумов конечно. то ли я такой тупой то ли микросхемы палёные но не пашет.
Я так понял что когда состояние ноги часов меняется с 0 на 1 она считывает состояние даты, так делаешь 8 раз и потом переводишь RunPin в 1?
Уже месяца два борюсь с 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?
Если возникнут вопросы - посмотрите на мой аватар.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: CodeVision AVR в вопросах и ответах
Лол. Это вся программа?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- 0867532
- Встал на лапы
- Сообщения: 142
- Зарегистрирован: Сб май 25, 2013 21:14:11
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Ну да...
Я думал больше и не надо чтоб "шашечки" вывести.
Я думал больше и не надо чтоб "шашечки" вывести.
Если возникнут вопросы - посмотрите на мой аватар.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: CodeVision AVR в вопросах и ответах
Во-первых, RunPin, DataPin и ClockPin хорошо бы настроить на вывод. А это совсем не
Во-вторых, что такое wait?
Код: Выделить всё
DDRB=0x00;[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- 0867532
- Встал на лапы
- Сообщения: 142
- Зарегистрирован: Сб май 25, 2013 21:14:11
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Вот это фейл так фейл:) а wait это delay_ms(1)(cм #define wait delay_ms(1))
Если возникнут вопросы - посмотрите на мой аватар.
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: CodeVision AVR в вопросах и ответах
0867532, ноги надо настроить на выход. а у вас все ноги работают в режиме входа ( DDRB = 0x00 )
Ставим плюсы: )
- 0867532
- Встал на лапы
- Сообщения: 142
- Зарегистрирован: Сб май 25, 2013 21:14:11
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
да, я ж вроде ставил 0xFF
ну хз, почему стояло 0x00 Но теперь всё работает!!!
Доволен как слон:)
ну хз, почему стояло 0x00 Но теперь всё работает!!!
Доволен как слон:)
Если возникнут вопросы - посмотрите на мой аватар.
- 0867532
- Встал на лапы
- Сообщения: 142
- Зарегистрирован: Сб май 25, 2013 21:14:11
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Ну с контроллером только сегодня попробовал.
А когда кнопки ставил не вешал MR на +(не знал.)
И пытался раз в 2 недели.
А когда кнопки ставил не вешал MR на +(не знал.)
И пытался раз в 2 недели.
Если возникнут вопросы - посмотрите на мой аватар.
-
Импульс
- Потрогал лапой паяльник
- Сообщения: 349
- Зарегистрирован: Пн ноя 29, 2010 05:52:05
- Откуда: Иркутск
Re: CodeVision AVR в вопросах и ответах
Во первых это не пограмма ,а кусок кода)черновик(...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 в вопросах и ответах
Здраствуйте, подскажите пожалуйста как правильно записать условие:
Если PORTB.O=1 (кнопка нажата), то PORTC.0=1
если кнопка выкл, то PORTC.0=0
Если PORTB.O=1 в течение 0,3 сек(кнопку нажали и отпустили), то PORTС.O=1 в течение 5 сек
Если на PORTD.O=1, то PORTC.0=0
Спасибо.
Если PORTB.O=1 (кнопка нажата), то PORTC.0=1
если кнопка выкл, то PORTC.0=0
Если PORTB.O=1 в течение 0,3 сек(кнопку нажали и отпустили), то PORTС.O=1 в течение 5 сек
Если на PORTD.O=1, то PORTC.0=0
Спасибо.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
как правильно записать условие
Код: Выделить всё
if(...){
....
}- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
vadd писал(а):PORTB.O=1 (кнопка нажата), то PORTC.0=1
если кнопка выкл, то PORTC.0=0
Код: Выделить всё
PORTC.0= PINB.0;Использовать отслеживание по времени.vadd писал(а):Если PORTB.O=1 в течение 0,3 сек(кнопку нажали и отпустили), то PORTС.O=1 в течение 5 сек
А как это согласуется с первым условием?vadd писал(а):Если на PORTD.O=1, то PORTC.0=0
Docendo discimus
Re: CodeVision AVR в вопросах и ответах
Я хотел сделать так, чтобы при появлении 1 на портуD.0 - порт С.0 оключался , в каком бы состоянии не была кнопка вкл или выкл.
А можно ссылку на раздел "Периферия"
А можно ссылку на раздел "Периферия"


