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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

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

Сообщение BCluster »

Мастер Ломастер писал(а):TCCR1B.WGM12 = 1;
кодвижн эту запись понимает?

Не могу знать, ибо это есть изврат, даже не пробовал никогда.
А вот с портами удобненько работать так )
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

BerZerK-ku писал(а):Зачем пересказывать своими словами, если есть возможность дать ссылку на стандарт-первоисточник?
зачем спрашивать то, что легко найти в интернете? нет стандарта на правила поведения, нигде не написано "человек обязан называть незнакомца на ВЫ", однако есть неписанные правила хорошего тона, которых цивилизованные люди придерживаются... хотите, чтобы ваша программа была написана в стиле "эй, ты, придурок, куда прешь, коровья морда?" - пожалуйста. я стараюсь писать в стиле "будьте любезны, отойдите в сторону: вы мне мешаете". где я этому научился? а сам такой умный :)))
битва с дураками проиграна, победители торжествуют. слава победителям!
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

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

Сообщение BerZerK-ku »

Если бы я знал, откуда вы взяли эти правила :dont_know: Это форум куда обращаются за советом/помощью, не уж-то так трудно вставить одну ссылку?!
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

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

Сообщение BCluster »

Мастер Ломастер, имхо это непробиваемо :))))
BerZerK-ku писал(а):не уж-то так трудно вставить одну ссылку?!

Мастер Ломастер писал(а):однако есть неписанные правила хорошего тона, которых цивилизованные люди придерживаются

ключевое слово НЕПИСАНЫЕ

---

Варианты PORTB.2=1 удобно использовать если нужно дернуть ногу. Одну.
Если надо записать по битам регистр, гораздо лучше и удобнее это делать так, как предлагает Мастер Ломастер
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

totty писал(а):Добрый вечер, форумчане, помогите пожалуйста найти ошибку,
контроллер мега8, 4х 7сегментных индикатора, должны выводить число 4 разрядное, на индикаторе при тестировании в протеусе творится нечто не понятное, 2 разряда только выводит

Протестил ваш кекс действительно только два младших разряда моргают.
Подправил.
Там с if путанница
Перенёс counter в прерывание

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

interrupt [TIM0_OVF] Timer0_ovf(void)  
// прерывание по переполнению Т0 для индикации 7-seg
{
static unsigned int counter=0;
 if (counter==0)
 {
  PORTD.0=1;
  PORTD.1=0;
  PORTD.2=0;
  PORTD.3=0;}
    else if (counter==1)
        {
        PORTD.0=0;
        PORTD.1=1;
        PORTD.2=0;
        PORTD.3=0;}
        else if (counter==2)
            {
            PORTD.0=0;
            PORTD.1=0;
            PORTD.2=1;
            PORTD.3=0;}
            else
                {
                PORTD.0=0;
                PORTD.1=0;
                PORTD.2=0;
                PORTD.3=1;
}
                   PORTB=data[counter];
                   counter++;
                   if (counter>=4)
                             {
                              counter=0;
                             }
                             
}

Так залил все четыре заморгали.

Лучше было как в исходнике оставить SWITCH

interrupt [TIM0_OVF] Timer0_ovf(void)
// прерывание по переполнению Т0 для индикации 7-seg
{PORTD&=0xF0;
switch(counter)
{
case 0: PORTB=data[counter]; PORTD.3=1; break;
case 1: PORTB=data[counter]; PORTD.2=1; break;
case 2: PORTB=data[counter]; PORTD.1=1; break;
case 3: PORTB=data[counter]; PORTD.0=1; break;
}
counter++;
if (counter>=4)
{
counter=0;
}
}

конверт дата тоже наоборот работает поменяйте числа в
коде:
temp=x;
res=temp/1000; //Calculate 1000-s
data[
3]=codes[res];
temp=temp-res*1000;
В поисках истины человек развивается.
Аватара пользователя
totty
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср авг 03, 2011 22:26:02
Откуда: Севастополь

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

Сообщение totty »

vitalik_1984, спасибо большое :)
а вот еще нюанс, протеус при тестировании схемы с этим кодом на 90% загружает ЦП у мк тоже будет высокая степень загрузки? или это не показатель для подобных доводов?
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

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

Сообщение BerZerK-ku »

Протеус показывает загрузку ЦП вашего ПК при моделировании схемы.
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

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

#include <mega8.h>
#include <delay.h> // подключаем библиотеку задержки

скажите пожалуйста, а как новичку узнать какие готовые функции есть вообще, для чего они предназначены и где их взять ? :dont_know:
Tell Me The Truth
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

totty писал(а):vitalik_1984, спасибо большое :)
а вот еще нюанс, протеус при тестировании схемы с этим кодом на 90% загружает ЦП у мк тоже будет высокая степень загрузки? или это не показатель для подобных доводов?

Ваш процессор не рассчитан на выполнение таких опкодов, тем более со всякими там наворотами в виде темы и прочей дребедени оболочки.Процессор АВР выполняет большинство команд за один цикл такта.Так что не беспокойтесь.Ваш процессор большую часть времени проведет возле While(1) {} :)
В поисках истины человек развивается.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

FreshMan писал(а):

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

#include <mega8.h>
#include <delay.h> // подключаем библиотеку задержки

скажите пожалуйста, а как новичку узнать какие готовые функции есть вообще, для чего они предназначены и где их взять ? :dont_know:

наверно в спецификациях для компилятора, в справочных файлах студии.Или просто в интернете.
Вот например тут поглядеть...
В поисках истины человек развивается.
Аватара пользователя
totty
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср авг 03, 2011 22:26:02
Откуда: Севастополь

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

Сообщение totty »

Еще вопрос, допустим в коде есть работа АЦП и прерывания таймера для индикации на 7-сегментные индикаторы, при каждом прерывании происходит пауза работы ацп или он как и работал так и работает? т е параллельно с выполняющимся кодом написанном в прерывании?
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

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

Сообщение Apparatchik »

totty писал(а):Еще вопрос, допустим в коде есть работа АЦП и прерывания таймера для индикации на 7-сегментные индикаторы, при каждом прерывании происходит пауза работы ацп или он как и работал так и работает? т е параллельно с выполняющимся кодом написанном в прерывании?

Нет не паралельно! По этому не рекомендуется "засиживатся" в обработчике прерывания.
«И всё-таки она вертится!»
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

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

PORTB.3=1
PINB.3=1

равнозначны ли по смыслу и по силе действия вышеуказанные команды ?
Tell Me The Truth
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

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

Сообщение Apparatchik »

FreshMan писал(а):

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

PORTB.3=1
PINB.3=1

равнозначны ли по смыслу и по силе действия вышеуказанные команды ?

Нет. Вот почитайте раздел "Порт в МК"
«И всё-таки она вертится!»
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

ага............, это подтяжка :))
ох у не люблю я же рекомендованный тобой сайт.............,преподают как то там инфу не толково :)
Tell Me The Truth
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

FreshMan вместо того чтобы "озадачивать" всех подобными вопросами достаточно прочесть всего пару книжек (благо найти их можно не только в магазине). В качестве справочника по AVR лучшее ИМХО книги Евстифеева, а по CV AVR есть книга Лебедева.
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

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

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

void main(void)
{
UCSRA=0x02;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x67;
 
PORTB=0x00;
DDRB=0x01; 

while (1)
      {
            PORTB.0=1; //Включаем светодиод на 0 выходе порта D
            printf("On"); //Передаем ПК слово включен
            delay_ms(1000); // Делаем задержку в 1с
            PORTB.0=0; 
            printf("Off");
            delay_ms(1000);         
      };
}

есть вот такая програмка.................., мне здесь непонятен смысл команды printf("Off");..........., где должнен печатать это слово ПК ??? :dont_know:
Tell Me The Truth
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

ChipKiller, приведи полное название книжек, плиз :)
Tell Me The Truth
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

FreshMan писал(а):приведи полное название книжек, плиз :)
..а погуглить тяжело?
Евстифеев AVR, Лебедев AVR и сразу море ссылок....
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

FreshMan писал(а):

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

PORTB.3=1
PINB.3=1

равнозначны ли по смыслу и по силе действия вышеуказанные команды ?

Это не одно и то же.Дело в том,что порты мк управляются тремя регистрами :
1-DDRx-определяет направление порта
высокий уровень(логическая единица)
тут означает,что порт используется для вывода данных.
2-PORTx-включает подтяжку ноги порта при DDRx=0 или переключает ногу порта с низкого уровня на высокий при DDRx=1
3-PINx-меняет свое значение в соответствии с состоянием реальной ноги при DDRx =0
запись значения в регистр PINx практического смысла не имеет
В поисках истины человек развивается.
Ответить

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