чето немогу найти где эту галку поставить,может версия другая.
CodeVision AVR в вопросах и ответах
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
я как понял это не для всех контроллеров?для mega48 подойдет?
чето немогу найти где эту галку поставить,может версия другая.
чето немогу найти где эту галку поставить,может версия другая.
- Реклама
Как то так:


Спойлер
- Вложения
-
- 2012-09-23_095119.png
- (26.3 КБ) 706 скачиваний
А из наших труб идет необычный дым. Стой! Опасная зона! Работа мозга!...
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
у меня нет таких настроек
и подскажите насчет макроса,чет непойму,так(выдает ошибку):
#define data(x) (SPDR=x; while (!( SPSR&(1<<7))){}); // макрос
data(0xff);//вызов макроса
и подскажите насчет макроса,чет непойму,так(выдает ошибку):
#define data(x) (SPDR=x; while (!( SPSR&(1<<7))){}); // макрос
data(0xff);//вызов макроса
- Вложения
-
- Безымянный.GIF
- (94.25 КБ) 365 скачиваний
Попробуйте так
Видимо, у Вас версия CodeVision более ранняя. Можно попробовать задать в тексте программы до подключения всех заголовочных файлов. То есть в самом начале.
В моей версии это помогает.
Код: Выделить всё
#define data(x) SPDR=x; while (!( SPSR&(1<<7)));
Код: Выделить всё
#define _IO_BITS_DEFINITIONS_А из наших труб идет необычный дым. Стой! Опасная зона! Работа мозга!...
- Сообщения: 581
- Зарегистрирован: Ср янв 05, 2011 10:03:18
Может, так будет лучше?спящий писал(а):Код: Выделить всё
#define data(x) (SPDR=x; while (!( SPSR&(1<<7))){}); // макрос
Код: Выделить всё
#define data(x) {SPDR=x; while ( !(SPSR & 0x80) ) continue;}
Последний раз редактировалось ut1wpr Вс сен 23, 2012 15:38:36, всего редактировалось 1 раз.
С уважением,
Виктор.
Виктор.
- Реклама
(SPSR & 0x80) - Нолик вместо "о", а то опять ошибка вылезет и вопросы будут.ut1wpr писал(а):спящий писал(а):Код: Выделить всё
( !(SPSR & ox80) )
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
Вопрос почкму выдает ошибку при вставке printf('dhdhfb'); ну если ктонить шарит в картах почему при чтениии карты выдает FF,хотя CMD0(выдала ответ 01),CMD1(выдала ответ00) прошли?
#include <mega48.h>
#include <delay.h>
#include <string.h>
#include <io.h>
#define data(x) SPDR=x; while (!( SPSR&(1<<7)));
void main() {
int i,temp;
char array[100] ;
DDRD.2=0;
DDRB=0b11101111;
DDRC=255;
// 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
UCSR0A=0x00;
UCSR0B=0x18;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x33;
// настройка шим
TCCR1A=0b10000001;
TCCR1B=0b00001001;
TIMSK1=0b01000000;
//настройка SPI
SPCR=0b01010011;
SPSR=0x01;
//подаем 74 импульса
PORTB.2=1;
PORTB.3=1;
for(i=0;i<80;i++)
{
data(0xff)
}
PORTB.2=0;
delay_ms(1);
//CMD0
data(0x40);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x15);
putchar('a');
while (temp!=0x01)
{temp= SPDR;
data(0xff)
if (i>50)
{data(0x40);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x15);
i=0;
}
i++;
}
putchar(temp);
putchar('b');
//CMD1
data(0x41);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x95);
while (temp!=0x00)
{temp= SPDR;
data(0xff);
}
putchar(temp);
delay_ms(200);
//cmd 49
data(0x49);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x95);
for(i=0;i<17;i++)
{
putchar(SPDR);
}
putchar('v');
printf("qqqqq");
//CMD17 чтение байтов
data(0x52);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x95);
while (temp==0xff)
{temp= SPDR;
data(0xff);
}
while (temp!=0xfe)
{temp= SPDR;
data(0xff);
}
putchar(temp);
putchar('g');
while (temp==0xff)
{temp= SPDR;
data(0xff);
}
while(1){
for (i=0;i<100;i++)
{
data(0xff);
array=SPDR ;
}
for (i=0;i<100;i++)
{
putchar(array) ;
}
}
}
Спойлер
#include <stdio.h>#include <mega48.h>
#include <delay.h>
#include <string.h>
#include <io.h>
#define data(x) SPDR=x; while (!( SPSR&(1<<7)));
void main() {
int i,temp;
char array[100] ;
DDRD.2=0;
DDRB=0b11101111;
DDRC=255;
// 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
UCSR0A=0x00;
UCSR0B=0x18;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x33;
// настройка шим
TCCR1A=0b10000001;
TCCR1B=0b00001001;
TIMSK1=0b01000000;
//настройка SPI
SPCR=0b01010011;
SPSR=0x01;
//подаем 74 импульса
PORTB.2=1;
PORTB.3=1;
for(i=0;i<80;i++)
{
data(0xff)
}
PORTB.2=0;
delay_ms(1);
//CMD0
data(0x40);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x15);
putchar('a');
while (temp!=0x01)
{temp= SPDR;
data(0xff)
if (i>50)
{data(0x40);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x15);
i=0;
}
i++;
}
putchar(temp);
putchar('b');
//CMD1
data(0x41);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x95);
while (temp!=0x00)
{temp= SPDR;
data(0xff);
}
putchar(temp);
delay_ms(200);
//cmd 49
data(0x49);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x95);
for(i=0;i<17;i++)
{
putchar(SPDR);
}
putchar('v');
printf("qqqqq");
//CMD17 чтение байтов
data(0x52);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x95);
while (temp==0xff)
{temp= SPDR;
data(0xff);
}
while (temp!=0xfe)
{temp= SPDR;
data(0xff);
}
putchar(temp);
putchar('g');
while (temp==0xff)
{temp= SPDR;
data(0xff);
}
while(1){
for (i=0;i<100;i++)
{
data(0xff);
array=SPDR ;
}
for (i=0;i<100;i++)
{
putchar(array) ;
}
}
}
- Вложения
-
- Безымянный.GIF
- (52.07 КБ) 367 скачиваний
Чтобы программировать - надо хотя бы немного с "английским" дружить. Без него смысла нет.
В мессаге указано:Не хватает стека! Пожалуйста увеличьте стек!
В мессаге указано:Не хватает стека! Пожалуйста увеличьте стек!
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
а как его увеличить? на асме вроде так:
ldi r16,high(RAMEND) ;
out SPH,r16 ;
ldi r16,low(RAMEND) ;
out SPl,r16 ;
а на C,в кодевисион?
ldi r16,high(RAMEND) ;
out SPH,r16 ;
ldi r16,low(RAMEND) ;
out SPl,r16 ;
а на C,в кодевисион?
Следует уточнить, что это не системный стек, а размер стека данных, фича такая в кодевижене.
Docendo discimus
Всем привет.
Помогите с написанием кода для Attiny13 такого плана:
К МК подключен 1 светодиод к одному из выводов
1 реле через транзистор к другому выводу
и ещё 3 вывода испоьзуются как кнопки выбора работ.
НАДО:
светодиод чтоб моргал с периодичностью 1 раз в 5 сек (всегда)
а реле работало в зависимости от выбранной кнопки
1 включено всегда
2 включено 15 минут выключено 45 минут (и далее по кругу)
3 включено 30 минут выключено 30 минут (и далее по кругу)
буду очень благодарен...
Помогите с написанием кода для Attiny13 такого плана:
К МК подключен 1 светодиод к одному из выводов
1 реле через транзистор к другому выводу
и ещё 3 вывода испоьзуются как кнопки выбора работ.
НАДО:
светодиод чтоб моргал с периодичностью 1 раз в 5 сек (всегда)
а реле работало в зависимости от выбранной кнопки
1 включено всегда
2 включено 15 минут выключено 45 минут (и далее по кругу)
3 включено 30 минут выключено 30 минут (и далее по кругу)
буду очень благодарен...
http://perm-mag.ru icq 9три28один7
А выключеное состояние реле не рассматривается?
Вам не нужно режим светодиодом показывать?Просто всегда моргает или все же только когда реле включено?
Вам не нужно режим светодиодом показывать?Просто всегда моргает или все же только когда реле включено?
ну можно второй светодиод когда реле отключеноvitalik_1984 писал(а):А выключеное состояние реле не рассматривается?
Вам не нужно режим светодиодом показывать?Просто всегда моргает или все же только когда реле включено?
http://perm-mag.ru icq 9три28один7
а чем выключать предполагается?Какое то тех задание размытое.Соответственно и решений тоже может быть уйма. Вместо одного правильного.
Короче раз ног мало можно сделать несколько кнопок через Ацп сделаем четыре: три режима и выключение.
Так же можно сделать и два светодиода один будет моргать в зависимости от режима, если включен один из режимов и другой диод если выключены.
Короче раз ног мало можно сделать несколько кнопок через Ацп сделаем четыре: три режима и выключение.
Так же можно сделать и два светодиода один будет моргать в зависимости от режима, если включен один из режимов и другой диод если выключены.
конечно можно и так, да просто это будет включатся вентиляция... вот и нет так такового выключения (просто отключение из сети и есть стоп программы)vitalik_1984 писал(а):а чем выключать предполагается?Какое то тех задание размытое.Соответственно и решений тоже может быть уйма. Вместо одного правильного.
Короче раз ног мало можно сделать несколько кнопок через Ацп сделаем четыре: три режима и выключение.
Так же можно сделать и два светодиода один будет моргать в зависимости от режима, если включен один из режимов и другой диод если выключены.
http://perm-mag.ru icq 9три28один7
вот схема
- Вложения
-
- 555.JPG
- (68.56 КБ) 241 скачивание
http://perm-mag.ru icq 9три28один7
Вот со схемы и нужно было начинать.А ресет будем как ресет использовать или переключим его в порт ввода-вывода.
И что это за джамперы?Вы от нас скрываете какие то подробности, которые опять же отдаляют от решения вашей задачи.
И что это за джамперы?Вы от нас скрываете какие то подробности, которые опять же отдаляют от решения вашей задачи.
Как в CVAVR произвести сдвиг с переносом (в ассемблере ROR и ROL) или как указать чтобы переменная помещалась в один из РОН
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
.. сделать asm_вставку, а еще лучше подумать и решить задачу чисто средствами С.Как в CVAVR произвести сдвиг с переносом


