Страница 198 из 421

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пн апр 09, 2012 19:24:32
Apparatchik
vitalik_1984 писал(а):эти две записи почти эквивалентны.Насколько я понял имя буфера это адрес нулевой ячейки.
а вы хотите четвертой ячейке этого буфера присвоить значение,возвращаемое функцией?
Я хочу в последнюю ячейку массива, который будет передаватся радиомодулем, записывать контрольную сумму, а в приемнике проверять её.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пн апр 09, 2012 19:27:27
pyzhman

Код: Выделить всё

void main(void)
PORTB=0x00;
И это оно пропускает? :shock:
И это:

Код: Выделить всё

unsigned data;
?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пн апр 09, 2012 19:52:22
Vatson4ik
Инициализацию порта он сам создает.
и все пропускает

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пн апр 09, 2012 20:43:10
vitalik_1984
По умолчанию в си компилятор обычно все к инт сводит вроде.
Пишем

Код: Выделить всё

eeprom unsigned data = 0xff;
Память еепром 2 байта занято.
pyzhman писал(а):void main(void)
PORTB=0x00;
А что вам не нравится в этой записи?Функция ведь ничего не возвращает...И порт в ноль тоже можно выставить.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пн апр 09, 2012 21:10:39
pyzhman
Мне? Да, откровенно говоря, по барабану как написано. Пусть пишут как хотят. Но не работает почему-то у товарища.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пн апр 09, 2012 22:03:33
vitalik_1984
Где смайл где кота в его г... запихивают?
Vatson4ik

Код: Выделить всё

interrupt [SPI_STC] void spi_isr(void)
{
unsigned data;// Это одна переменная
///////////////-------------

void main(void){
// Declare your Local variables here !!!!!!!!!<<-------------------
while(1){
// Place your code here !!!!!!!!!!!!

unsigned data;// Это вторая переменная
SPDR=data; 
вы типа объявили локальную переменную(не там где нужно), и пихаете ее неинициализированное(пустое) значение в регистр?

Думаю нужно убрать unsigned data; и добавить volatile в начале где глобальные переменные.

Почему не работает :dont_know: не пойму :)))
Вам мастер_ломастер правильно сказал, лучше почитать и перечитать еще раз.А то так каждый раз тыкать будут.

Неплохо было бы еще и даташит на предмет обсуждения.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пн апр 09, 2012 22:14:10
pyzhman
Кстати! Кто тут рисовал смайлы? Очень хорошая идея.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вт апр 10, 2012 05:07:55
Совесть
vitalik_1984 писал(а):Где смайл где кота в его г... запихивают?
:))) а надо ли оно вам, а то вдруг самого полоскать в этой субстанции будут?
Не, ну ладно макнуть того кто слишком много "знает". Но подобная агрессивность к новичку откуда возникает? Не нравится вопрос, просто проигнорируйте.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вт апр 10, 2012 09:14:39
vitalik_1984
да ладно,я же шуткой сказал,а все зацепились.когда кота с автоматом шлют это же не значит что расстрелять готовы.
и вообще я ошибки указал грубые, если что.
и хватит флудить по этому поводу.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пт апр 13, 2012 22:40:57
Upgrader
Подскажите, почему ругается на знак больше/меньше (инвалид экспрессии), и как надо это правильно написать в switch?

switch (x) {
case <10: y++;
case >20: y--;
break;
}

Или как написать диапазон возможных значений переменной?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пт апр 13, 2012 22:45:20
pyzhman
Параметр при case д/б числом. Напишите

Код: Выделить всё

if(x < 10) ++y;
if(x > 20) --y;

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб апр 14, 2012 20:12:23
SH_Pasha
Всем привет!
Вот написал код

Код: Выделить всё

#include <tiny2313.h>
#include <stdlib.h>
#include <delay.h>

void main(void) {
DDRD.1=0x00;
DDRB.2=0xff;
while(1) 
{
if (PIND.1 == 1)
{
PORTB.2=1;
delay_ms(20);
PORTB.2=0;
delay_ms(40);
PORTB.2=1;
delay_ms(10);
PORTB.2=0;
}
}
}
Создал проект в протеусе, после того как нажал на кнопку(PIND.1 == 1), светодиоды начали мигать постоянно, а мне нужно, чтоб код выполнился только один раз. В чем проблема?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб апр 14, 2012 20:56:01
pyzhman
Убрать вайл, а вместо

Код: Выделить всё

if (PIND.1 == 1)
написать

Код: Выделить всё

while(!PIND.1);//ожидание нажатия кнопки.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб апр 14, 2012 21:53:24
SH_Pasha
pyzhman, сначала светодиод просто мигает, а когда я нажимаю на кнопку, перестает и все, даже если еще раз нажать, то не мигает :(

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб апр 14, 2012 22:14:49
pyzhman
Ну и? Виртуально представлять себе схему и то, что вы там понаписали?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб апр 14, 2012 22:29:37
SH_Pasha
pyzhman, спаял, работает точно так же как и в протеусе

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб апр 14, 2012 22:31:11
pyzhman
Мне-то как схему представить и увидеть то, что вы там понаписали? Только прикладывайте рисунок, протеус тут половина присутствующих не увидит.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб апр 14, 2012 22:33:11
SH_Pasha
к PD1 присоединена кнопка
к PB2 светодиод
Вот и все

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб апр 14, 2012 22:38:12
pyzhman
А второй конец кнопки? А второй конец светодиода? А полярность светодиода? А программа? :kill:

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб апр 14, 2012 22:40:44
SH_Pasha
:o

Код: Выделить всё

#include <mega8.h>
#include <stdlib.h>
#include <delay.h>

void main(void) {
DDRD.1=0x00;
DDRB.2=0xff;
while(!PIND.1) 
{
PORTB.2=1;
delay_ms(100);
PORTB.2=0;
delay_ms(200);
PORTB.2=1;
delay_ms(50);
PORTB.2=0;
}
}

Второй конец кнопки к плюсу, второй конец светодиода к минусу