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

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

Добавлено: Вт дек 27, 2011 11:13:13
BCluster
Мастер Ломастер писал(а):TCCR1B.WGM12 = 1;
кодвижн эту запись понимает?
Не могу знать, ибо это есть изврат, даже не пробовал никогда.
А вот с портами удобненько работать так )

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

Добавлено: Вт дек 27, 2011 11:15:21
Мастер Ломастер
BerZerK-ku писал(а):Зачем пересказывать своими словами, если есть возможность дать ссылку на стандарт-первоисточник?
зачем спрашивать то, что легко найти в интернете? нет стандарта на правила поведения, нигде не написано "человек обязан называть незнакомца на ВЫ", однако есть неписанные правила хорошего тона, которых цивилизованные люди придерживаются... хотите, чтобы ваша программа была написана в стиле "эй, ты, придурок, куда прешь, коровья морда?" - пожалуйста. я стараюсь писать в стиле "будьте любезны, отойдите в сторону: вы мне мешаете". где я этому научился? а сам такой умный :)))

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

Добавлено: Вт дек 27, 2011 11:21:52
BerZerK-ku
Если бы я знал, откуда вы взяли эти правила :dont_know: Это форум куда обращаются за советом/помощью, не уж-то так трудно вставить одну ссылку?!

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

Добавлено: Вт дек 27, 2011 12:05:29
BCluster
Мастер Ломастер, имхо это непробиваемо :))))
BerZerK-ku писал(а):не уж-то так трудно вставить одну ссылку?!
Мастер Ломастер писал(а):однако есть неписанные правила хорошего тона, которых цивилизованные люди придерживаются
ключевое слово НЕПИСАНЫЕ

---

Варианты PORTB.2=1 удобно использовать если нужно дернуть ногу. Одну.
Если надо записать по битам регистр, гораздо лучше и удобнее это делать так, как предлагает Мастер Ломастер

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

Добавлено: Ср дек 28, 2011 00:15:31
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;

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

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

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

Добавлено: Ср дек 28, 2011 06:41:24
BerZerK-ku
Протеус показывает загрузку ЦП вашего ПК при моделировании схемы.

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

Добавлено: Пт дек 30, 2011 20:34:11
FreshMan

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

#include <mega8.h>
#include <delay.h> // подключаем библиотеку задержки
скажите пожалуйста, а как новичку узнать какие готовые функции есть вообще, для чего они предназначены и где их взять ? :dont_know:

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

Добавлено: Пт дек 30, 2011 21:51:40
vitalik_1984
totty писал(а):vitalik_1984, спасибо большое :)
а вот еще нюанс, протеус при тестировании схемы с этим кодом на 90% загружает ЦП у мк тоже будет высокая степень загрузки? или это не показатель для подобных доводов?
Ваш процессор не рассчитан на выполнение таких опкодов, тем более со всякими там наворотами в виде темы и прочей дребедени оболочки.Процессор АВР выполняет большинство команд за один цикл такта.Так что не беспокойтесь.Ваш процессор большую часть времени проведет возле While(1) {} :)

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

Добавлено: Пт дек 30, 2011 22:02:15
vitalik_1984
FreshMan писал(а):

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

#include <mega8.h>
#include <delay.h> // подключаем библиотеку задержки
скажите пожалуйста, а как новичку узнать какие готовые функции есть вообще, для чего они предназначены и где их взять ? :dont_know:
наверно в спецификациях для компилятора, в справочных файлах студии.Или просто в интернете.
Вот например тут поглядеть...

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

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

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

Добавлено: Сб дек 31, 2011 12:29:33
Apparatchik
totty писал(а):Еще вопрос, допустим в коде есть работа АЦП и прерывания таймера для индикации на 7-сегментные индикаторы, при каждом прерывании происходит пауза работы ацп или он как и работал так и работает? т е параллельно с выполняющимся кодом написанном в прерывании?
Нет не паралельно! По этому не рекомендуется "засиживатся" в обработчике прерывания.

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

Добавлено: Сб дек 31, 2011 13:26:13
FreshMan

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

PORTB.3=1
PINB.3=1
равнозначны ли по смыслу и по силе действия вышеуказанные команды ?

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

Добавлено: Сб дек 31, 2011 13:33:27
Apparatchik
FreshMan писал(а):

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

PORTB.3=1
PINB.3=1
равнозначны ли по смыслу и по силе действия вышеуказанные команды ?
Нет. Вот почитайте раздел "Порт в МК"

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

Добавлено: Сб дек 31, 2011 13:47:01
FreshMan
ага............, это подтяжка :))
ох у не люблю я же рекомендованный тобой сайт.............,преподают как то там инфу не толково :)

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

Добавлено: Сб дек 31, 2011 14:09:44
ChipKiller
FreshMan вместо того чтобы "озадачивать" всех подобными вопросами достаточно прочесть всего пару книжек (благо найти их можно не только в магазине). В качестве справочника по AVR лучшее ИМХО книги Евстифеева, а по CV AVR есть книга Лебедева.

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

Добавлено: Сб дек 31, 2011 14:13:33
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:

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

Добавлено: Сб дек 31, 2011 14:14:41
FreshMan
ChipKiller, приведи полное название книжек, плиз :)

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

Добавлено: Сб дек 31, 2011 14:24:42
ChipKiller
FreshMan писал(а):приведи полное название книжек, плиз :)
..а погуглить тяжело?
Евстифеев AVR, Лебедев AVR и сразу море ссылок....

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

Добавлено: Сб дек 31, 2011 14:33:03
vitalik_1984
FreshMan писал(а):

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

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