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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
*Trigger*
Друг Кота
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

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

Сообщение *Trigger* »

Я как то тоже так писал, один unsigned char на все переменные. Была ошибка. Нужно так:

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

void mathematics(unsigned char sec, unsigned char min) 
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Реклама
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

точно........, заработало.....
СПАСИБО !!! :beer:
Tell Me The Truth
Реклама
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

MS24 писал(а):Ребят, подскажите почему не работает элементарнейший код!
Диод тупо моргает один раз и все!
Где моргает один раз?В железе?Если в проте ждите дольше:) 1000 мс = 100000мс в проте или как повезет

а еще на таких контроллерах может быть джей таг его нужно отключать,чтобы все ноги работали нормально.
посмотрите какие остальные значения ноги.даташита у меня нет сейчас под рукой.
В поисках истины человек развивается.
MS24
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

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

Сообщение MS24 »

vitalik_1984 писал(а):
MS24 писал(а):Ребят, подскажите почему не работает элементарнейший код!
Диод тупо моргает один раз и все!
Где моргает один раз?В железе?Если в проте ждите дольше:) 1000 мс = 100000мс в проте или как повезет

а еще на таких контроллерах может быть джей таг его нужно отключать,чтобы все ноги работали нормально.
посмотрите какие остальные значения ноги.даташита у меня нет сейчас под рукой.
А если я шью через джитаг? ) У меня драгон программатор ) Моргает в железе.
Реклама
Эиком - электронные компоненты и радиодетали
Mr.Denis
Прорезались зубы
Сообщения: 220
Зарегистрирован: Пт авг 07, 2009 22:06:49
Откуда: Россия, Москва

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

Сообщение Mr.Denis »

Эта конструкция

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

PORTB = 0x00;
PORTB |= (1 << PB1);
Обозначает следящие:
PORTB = 0x00; // Обнуляем PORTB
PORTB |= (1 << PB1); // Устанавливаем 1 в PORTB.1, то есть PORTB.1=1;
И по идем после выполнения этого куска кода получается:
PORTB = 0x00000010; // В двоичной (BIN)
PORTB = 0x02; // В шестнадцатеричной (HEX)
PORTB = 2; // В десятичной (DEC)
STM32F4 Discovery + KEIL + Windows 7
Реклама
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

MS24 писал(а): А если я шью через джитаг? ) У меня драгон программатор ) Моргает в железе.
ох как же я угадал то :) это же PDO джей тага. тут выход либо выключить его после окончания программирования по спи либо просто забыть об этих ножках.PE0 -PDI PE1- PDO
В поисках истины человек развивается.
Реклама
Аватара пользователя
sheva_s
Грызет канифоль
Сообщения: 256
Зарегистрирован: Пт апр 27, 2007 14:32:48
Откуда: Украина Кривой Рог
Контактная информация:

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

Сообщение sheva_s »

Подскажите пожалуста делаю вольтметр на мега8 получаю данные ацп в переменную unsigned int adc_data=600
есть коэффициент float k=0.01953125; на который нужно помножить данные преобразования ацп. Как перемножить эти 2 числа и получить переменную unsigned int K ?
MS24
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

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

Сообщение MS24 »

vitalik_1984 писал(а):
MS24 писал(а): А если я шью через джитаг? ) У меня драгон программатор ) Моргает в железе.
ох как же я угадал то :) это же PDO джей тага. тут выход либо выключить его после окончания программирования по спи либо просто забыть об этих ножках.PE0 -PDI PE1- PDO
На самом деле проблема была в самом программаторе )) тупил он, ток большой почему-то жрет((
MS24
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

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

Сообщение MS24 »

Ребят, подскажите пожалуйста, как можно к одному пину подключить 6 кнопок?? Через ацп пробовал, никак не получается ((
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Не старался. Код где?
2sheva_s: приведите все переменный к вещественному типу. Апосля вычислений переведите в целое. Там дажеть функция есть в библиотеке.
Docendo discimus
Аватара пользователя
ValBag
Потрогал лапой паяльник
Сообщения: 326
Зарегистрирован: Сб сен 06, 2008 12:56:13

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

Сообщение ValBag »

MS24 писал(а):Ребят, подскажите пожалуйста, как можно к одному пину подключить 6 кнопок?? Через ацп пробовал, никак не получается ((
Один из способов
Аватара пользователя
sheva_s
Грызет канифоль
Сообщения: 256
Зарегистрирован: Пт апр 27, 2007 14:32:48
Откуда: Украина Кривой Рог
Контактная информация:

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

Сообщение sheva_s »

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

#include <mega8.h>
#asm
   .equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#include <stdio.h>
unsigned int a,b;
int x;  
float k=0.01953125;
char buffer [5];
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here

}

#include <delay.h>

#define ADC_VREF_TYPE 0x40

// ADC interrupt service routine
interrupt [ADC_INT] void adc_isr(void)
{
unsigned int adc_data;
// Read the AD conversion result
adc_data=ADCW;
// Place your code here
a=a+adc_data;   
x++;   
if(x==8){b=a>>3; a=0; x=0;};   
}
// Declare your global variables here        
void DISPLAY(void)
{           sprintf(buffer, "%4d",b);
            lcd_gotoxy( 2,0 );
            lcd_puts(buffer);

};

   lcd_gotoxy( 0,0 );
   lcd_putsf( "U=" );    
   sprintf(buffer, "%4d",b);
   lcd_gotoxy( 2,0 );
   lcd_puts(buffer);

while (1)
      {
      // Place your code here
 ADCSRA.6=1;     
delay_ms(10);     
DISPLAY();

      };
}
Вот код по которому меряю напряжение с помощью ацп. В переменную b попадает среднее значение после 8 измерений нужно это значение умножить на коэффициент float k=0.01953125; но они разных типов как поступить в таком случае .
MS24 писал(а):2sheva_s: приведите все переменный к вещественному типу. Апосля вычислений переведите в целое.
можно подробнее что значит вещественный тип.
Последний раз редактировалось sheva_s Сб мар 31, 2012 14:27:14, всего редактировалось 3 раза.
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

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

Сообщение urry »

во-первых, переменная b у вас должна быть volatile.
http://www.pic24.ru/doku.php/osa/articl ... r_chainiks
Во - вторых, старайтесь ничего не делать в прерывании, ставьте флаг готовности и в основном цикле анализируйте результат, умножайте и пр.
В третьих, большими буквами в программе обозначаются только константы, название функции DISPLEY, пусть даже с орфографической ошибкой такой моветон, шо песец.
В четвертых
float fRez;
int iRez;
fRez=(float)b*k;
iRez=(int)fRez;
Аватара пользователя
sheva_s
Грызет канифоль
Сообщения: 256
Зарегистрирован: Пт апр 27, 2007 14:32:48
Откуда: Украина Кривой Рог
Контактная информация:

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

Сообщение sheva_s »

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

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

Сообщение vitalik_1984 »

Я не понимаю зачем писать вот эту пустую простыню.Неужели трудно выделить нужную часть текста и задать вопрос, а весь текст привести во вложении для тех кто захочет целиком посмотреть?
sheva_s писал(а):
Спойлер

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


// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
 

sheva_s писал(а):

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

   lcd_gotoxy( 0,0 );
   lcd_putsf( "U=" );    
   sprintf(buffer, "%4d",b);
   lcd_gotoxy( 2,0 );
   lcd_puts(buffer);

 
А вот так не получится разве сделать?

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

 
   sprintf(buffer, "U=%4d",b);
   lcd_gotoxy( 0,0 );  
   lcd_puts(buffer); 
В поисках истины человек развивается.
MS24
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

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

Сообщение MS24 »

sheva_s
спасибо! буду разбираться!
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

MS24И что вам sheva_s посоветовал?
В поисках истины человек развивается.
gve
Родился
Сообщения: 1
Зарегистрирован: Сб мар 31, 2012 14:10:03

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

Сообщение gve »

здравствуйте! помогите разобраться с проблемой.
при выводе информации на светодиодную матрицу 8*56 сильно теряется яркость
atmega8 прошит на 8 мГц, использую сдвиговые регистры 74hc595
порты подключения 74hc595 PORTC.0 порт SH_CP; PORTC.1 - DS; PORTC.2 - ST_CP
минусы светодиодной матрицы подключены на PORTB

в чем может быть проблема?
может не хватает скорости записи данных в сдвиговый регистр?
при уменьшении светодиодной матрицы яркость увеличивается.

пример кода

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

for(i=0;i<8;i++)
                   {

                    //порты подключения 74hc595 PORTC.0 порт SH_CP;  PORTC.1 - DS; PORTC.2 - ST_CP
                     // минусы светодиодной матрицы подключены на PORTB
                       
                    PORTC=0b0000001; 
                    PORTC=0b0001001;
                    for(j=0;j<56;j++)
                        {
                            PORTC.0 = 0; 
                            PORTC.1 = 1; // все биты равны 1
                            PORTC.0 = 1;   
                        }
                        PORTB=s2[i];//в этом случае сильно теряется яркость. s2[] массив последов включения PORTB.0..7  
                                          //если  записать  PORTB=0x00; то все хорошо.
                        PORTC.2 = 1;
                   }
Аватара пользователя
ValBag
Потрогал лапой паяльник
Сообщения: 326
Зарегистрирован: Сб сен 06, 2008 12:56:13

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

Сообщение ValBag »

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

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

Сообщение vitalik_1984 »

gve писал(а):в чем может быть проблема?
1.В том что при четырех столбцах матрицы время горения каждого столбца = Tпериода/4
Соответственно при 8 столбцах время в два раза меньше ну и яркость вслед за этим тоже изменяется.От этого никуда не денешься.
ValBag писал(а):Попробуйте уменьшить сопротивления балластных резисторов
Согласен
2.Промеряйте напряжение на запитку контроллера и регистра может просто источник питания проседает.
В поисках истины человек развивается.
Ответить

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