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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Ратмир
Друг Кота
Сообщения: 8864
Зарегистрирован: Чт янв 20, 2011 19:54:19
Откуда: Уфа

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

Сообщение Ратмир »

SubDia писал(а):
Ратмир писал(а):Светодиод вообще не мигает, а на оциле такая воть хрень при 0,05V/дел без нагрузки, не работает прога.


Зато нулевая нога порта дергается почему-то (пока что переключите светодиод на PORTD.0 - увидите мигание). Жаль, у меня сейчас времени нет разбираться, только ночью засяду. =)


сделал как вы сказали все ОК!!! Вот это мозг!
Вложения
Все ОК.JPG
(89.3 КБ) 445 скачиваний
"Мы так жить будем, что наши внуки нам завидовать будут" В.С. Черномырдин
Изображение
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

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

Сообщение SubDia »

Ратмир писал(а):
SubDia писал(а):
Ратмир писал(а):Светодиод вообще не мигает, а на оциле такая воть хрень при 0,05V/дел без нагрузки, не работает прога.


Зато нулевая нога порта дергается почему-то (пока что переключите светодиод на PORTD.0 - увидите мигание). Жаль, у меня сейчас времени нет разбираться, только ночью засяду. =)


сделал как вы сказали все ОК!!! Вот это мозг!


А теперь поменяйте в двух строках управления портом "PORTD.1" на "1", и у Вас замигает и первый вывод - PORTD.1 (или на "2", и будет дергаться второй). В общем, использование имени ноги порта не прокатывает. :)
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
Ратмир
Друг Кота
Сообщения: 8864
Зарегистрирован: Чт янв 20, 2011 19:54:19
Откуда: Уфа

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

Сообщение Ратмир »

Изменил порт ни хрена только на PD0 мигает
Вложения
PD.1.JPG
(50.51 КБ) 348 скачиваний
"Мы так жить будем, что наши внуки нам завидовать будут" В.С. Черномырдин
Изображение
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

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

Сообщение Сериг »

Сериг писал(а):а вы включили делэй функцию в начале?
Аватара пользователя
Ратмир
Друг Кота
Сообщения: 8864
Зарегистрирован: Чт янв 20, 2011 19:54:19
Откуда: Уфа

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

Сообщение Ратмир »

delay.h вроде да, а #include не достаточно для включения?
"Мы так жить будем, что наши внуки нам завидовать будут" В.С. Черномырдин
Изображение
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

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

Сообщение Сериг »

Сериг писал(а):
Сериг писал(а):Ребят,просьба помогите часы сделать мне надо на семисегментниках с общим анодом! ,не у кого не будет прошики в CVAVR ??? оч нужно.
Аватара пользователя
Ратмир
Друг Кота
Сообщения: 8864
Зарегистрирован: Чт янв 20, 2011 19:54:19
Откуда: Уфа

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

Сообщение Ратмир »

меняю delay на 25 милисек никакого эффекта с PD0 стабильный сигнал, с других Х...й
"Мы так жить будем, что наши внуки нам завидовать будут" В.С. Черномырдин
Изображение
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

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

Сообщение SubDia »

Ратмир писал(а):Изменил порт ни хрена только на PD0 мигает


Дык я же говорил писать не "_BV(PORTD.1)", а "_BV(1)". Вы не то написали.
Получается так: командой "PORTD |= _BV(1)" мы накладываем маску 0b00000010 на порт (а там у нас 0). В итоге на PORTD.1 появляется высокий уровень. Дальше мы выполняем команду побитного И значения PORTD (в данный момент 0b00000010) с инвертированным значением маски (а это - число 0b11111101). В результате этой операции у нас получится так, что там, где были в маске нули, в значении PORTD биты обнулятся независимо от того, какие числа там стояли (а все прочее останется неизменным). В итоге второй бит PORTD обнулится в соответствии с накладываемой маской.
Этот вариант работает.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
Ратмир
Друг Кота
Сообщения: 8864
Зарегистрирован: Чт янв 20, 2011 19:54:19
Откуда: Уфа

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

Сообщение Ратмир »

Сериг писал(а):
Сериг писал(а):
Сериг писал(а):Ребят,просьба помогите часы сделать мне надо на семисегментниках с общим анодом! ,не у кого не будет прошики в CVAVR ??? оч нужно.

Ниже на форуме есть тема: часы, таймер,будильник на жк и сегментных индикаторах
"Мы так жить будем, что наши внуки нам завидовать будут" В.С. Черномырдин
Изображение
Аватара пользователя
Ратмир
Друг Кота
Сообщения: 8864
Зарегистрирован: Чт янв 20, 2011 19:54:19
Откуда: Уфа

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

Сообщение Ратмир »

SubDia писал(а):
Ратмир писал(а):Изменил порт ни хрена только на PD0 мигает


Дык я же говорил писать не "_BV(PORTD.1)", а "_BV(1)". Вы не то написали.
Получается так: командой "PORTD |= _BV(1)" мы накладываем маску 0b00000010 на порт (а там у нас 0). В итоге на PORTD.1 появляется высокий уровень. Дальше мы выполняем команду побитного И значения PORTD (в данный момент 0b00000010) с инвертированным значением маски (а это - число 0b11111101). В результате этой операции у нас получится так, что там, где были в маске нули, в значении PORTD биты обнулятся независимо от того, какие числа там стояли (а все прочее останется неизменным). В итоге второй бит PORTD обнулится в соответствии с накладываемой маской.
Этот вариант работает.

Все порядок, все работает. Теперь поиграюсь с портами
"Мы так жить будем, что наши внуки нам завидовать будут" В.С. Черномырдин
Изображение
chinga
Родился
Сообщения: 2
Зарегистрирован: Чт май 05, 2011 13:08:31

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

Сообщение chinga »

извините, вот наткнулся на такую прогу, и никак не могу переделать под CVAVR, поможете?
выставляю код

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

#define F_CPU 8000000
#define bit_test(data,bitno) (data & (1 << bitno))
#include <mega8.h>
#include <delay.h>
#include <interrupt.h>
#define _BV(x) (1<<(x))

void answer();


/*
ISR(USART_RXC_vect)
{
switch(UDR)
    {
    case '1': PORTB=0; break;
    case '2': PORTB=0xFF; break;
    case '3': answer(); break;
    default: break;
   
    }
} */


void UART_snt(char*text)
{
    for(unsigned char i=0;text[i]!=0;i++)
    {
        while(1)
            if((UCSRA & (1<<UDRE))==1<<UDRE)
                break;
    UDR=text[i];
    }
}

void UART_snt_byte(unsigned char text)
{
    while(1)
        if((UCSRA & (1<<UDRE))==1<<UDRE)
            break;
    UDR=text;
}


void ascii_print(char*text, unsigned char nom,unsigned char funk)
{
    unsigned char buf1, buf2, buf3;
    unsigned char i=0;
    buf1=nom/100;
    if(buf1!=0) text[i++]=buf1+48;
    buf2=nom/10-buf1*10;
    if(buf1!=0 || buf2!=0) text[i++]=buf2+48;
    buf3=nom-buf1*100-buf2*10;
    text[i++]=buf3+48;
    if(funk==1) text[i++]='\0';
}

/*unsigned char ascii_scan(char*text, unsigned char positions)
{
   
}*/


void answer()
{
    PORTB=0b11111110;
    for(unsigned char j=1;j<=200;j++)
    {
        char text[4];
        ascii_print(text, j, 1);
        UART_snt(text);
        UART_snt_byte(32);
    }   
    PORTB=0b11111110;
    PORTB=0b01111111;
    _delay_ms(1000);
    PORTB=0b11111111;

}
void UART_init(void)
{
    #define XTAL 8000000L
    #define baudrate 9600L
    #define bauddivider (XTAL/(16*baudrate)-1)
    #define HI(x) ((x)>>8)
    #define LO(x) ((x)& 0xFF)
 
    UBRRL = LO(bauddivider);
    UBRRH = HI(bauddivider);
    UCSRA = 0;
    UCSRB = 1<<RXEN|1<<TXEN|1<<RXCIE|0<<TXCIE;
    UCSRC = 1<<URSEL|1<<UCSZ0|1<<UCSZ1;
}


int main(void)
{


    DDRB=0xFF;
    PORTB=0xFF;
    DDRA=0;
    PORTA=0xFF;
    UART_init();
    sei();

    UART_snt("ATMega start..\r\n\0");
    while(1)
     {
        if(PINA!=0xFF)
        {
            char buf=PINA;
            _delay_ms(150);
            if(buf!=PINA) buf=PINA;
            switch(buf)
            {
                case 0b11111110: UART_snt("0 button\r\n\0"); break;
                case 0b11111101: UART_snt("1 button\r\n\0"); break;
                case 0b11111011: UART_snt("2 button\r\n\0"); break;
                case 0b11110111: UART_snt("3 button\r\n\0"); break;
                case 0b11101111: UART_snt("4 button\r\n\0"); break;
                case 0b11011111: UART_snt("5 button\r\n\0"); break;
                case 0b10111111: UART_snt("6 button\r\n\0"); break;
                case 0b01111111: UART_snt("7 button\r\n\0"); break;
                case 0b11111100: UART_snt("Hi Sergey!\r\n\0"); break;
                case 0b11110011: PORTB=0; break;
                case 0b11001111: PORTB=0xFF; break;
                case 0b00111111: UART_snt("\f\0"); break;

                default: break;
            }
            _delay_ms(150);
        }
     }
    return 0;
}


это юарт)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

chinga писал(а):это юарт)
это тихий ужас!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
hd44780
Встал на лапы
Сообщения: 132
Зарегистрирован: Вт июл 14, 2009 09:27:37
Откуда: Донецк, Украина

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

Сообщение hd44780 »

На хрен (извиняюсь) Вам её переделывать?
CvAVR имеет генератор начального кода, воспользуйтесь им. Генерит нормальный код, который не нужно переделывать.
chinga
Родился
Сообщения: 2
Зарегистрирован: Чт май 05, 2011 13:08:31

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

Сообщение chinga »

что нужно изменить для этого?
Аватара пользователя
Ратмир
Друг Кота
Сообщения: 8864
Зарегистрирован: Чт янв 20, 2011 19:54:19
Откуда: Уфа

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

Сообщение Ратмир »

наверное новый проект начать :)
"Мы так жить будем, что наши внуки нам завидовать будут" В.С. Черномырдин
Изображение
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

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

Сообщение clawham »

Здравствуйте снова Товарищи судари...
постала предо мной непостижимая задача...
пишу свой ваттметр...катастрофически не хватает памяти...
много текстов и менюшек..а мега 8
так вот....много текста я уже вынес из флеши в еепрому...
но есть ещё туева хуча конструкций типа

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

printf("#%.2i:", NumCounter);

вот как бы эту строку

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

"#%.2i:"
тоже вынести в еепрому? причём так чтоб назад считать было бы не затратно по коду....

ну и аналогичный вопрос
есть функция

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

void FP(char* text)
{
...
puts(text);
...
}

я её хочу вызывать с параметром

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

void FP_eep(eeprom char* text)
{
... // какие то преобразования типов и...
FP(text1); // но техт1 это уже указатель на строку в оперативке
}


вот как такие преобразования делать-то? чтоб и еепромину можно было передавать и флешевую..и внешнееепроминную...
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

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

Сообщение avreal »

Если катастрофически не хватает памяти, то в первую очередь нужно отказаться от printf.
При том, что я сам его люблю и при первой же возможности прикручиваю...
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

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

Сообщение clawham »

ну я как видите итак юзаю только лонги а мне лонги и надо выводить...с точным значением колличества выводимых символов-пробелов или нулей
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

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

Сообщение clawham »

да и скажем так...текстам как раз и место во внешней микросхеме еепрома ибо это гибкость и возможность поменять язык не лазия в прошивку
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Аватара пользователя
hd44780
Встал на лапы
Сообщения: 132
Зарегистрирован: Вт июл 14, 2009 09:27:37
Откуда: Донецк, Украина

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

Сообщение hd44780 »

clawham писал(а):пишу свой ваттметр...катастрофически не хватает памяти...
много текстов и менюшек..а мега 8


Я предвидел это .... И изначально взял Mega16.
Ненамного дороже, зато теперь нет проблем ни с printf, ни с плавающей точкой (ну люблю я её :)) ), ни с какой-то лишней периферией, если понадобится.
Зато теперь и кнопки, и индикатор, и режим калибровки и плавающая точка. И флэшки ещё 40% свободно - пиши что хочешь.

А с 8 мегой одни проблемы - то памяти мало, то ног не хватает. Кварц не поставишь, ибо он от порта B ноги отбирает :( и т.п.
Доп. EEPROM тоже надо куда-то подключать и писать код для работы с ним.
Мой совет - возьмите контроллер покруче и не мучайтесь.
Ответить

Вернуться в «AVR»