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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

Да поменяйте в своём проекте все PORTA на PORT_OUT, да и всё. Быстрее уже поменяли бы, пока здесь пишите посты. Проблему из ничего делаете...
Не может быть у Вас этих записей много, т.к. битов в порте всего 8 :)
R_ura
Грызет канифоль
Сообщения: 293
Зарегистрирован: Сб май 29, 2010 00:08:48
Откуда: Харьков

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

Сообщение R_ura »

Аlex писал(а):Да поменяйте в своём проекте все PORTA на PORT_OUT, да и всё. Быстрее уже поменяли бы, пока здесь пишите посты. Проблему из ничего делаете...
Не может быть у Вас этих записей много, т.к. битов в порте всего 8 :)


Ха, так менял уже.
Не работают тогда такие конструкции

if (pin_left == o ) {...}

pin_left = 1;

и т.д..

Похоже , что к битам переменной не достучаться так просто, как к битам порта..
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

Для Си, биты переменной ничем не отличаются от битов порта :)
Аватара пользователя
pashaumnov
Прорезались зубы
Сообщения: 236
Зарегистрирован: Чт июн 25, 2009 16:00:25
Откуда: нижний новгород

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

Сообщение pashaumnov »

pyzhman

Разбирая прошивку по строчке возникло еще несколько вопросов. во первых при создании в код вижен заголовочного файла у меня не было вот этой строчки
unsigned int counter;
что она делает первые два слова означают отсчет от 0до 250 а counter?? ему что присвоено какое то значение?? если да то где ?? потому как при настройке таймера через окно программы в пункте Mode поставил Normal top - (счетчик щитает от 0 до 255, после переполнения сбрасывается в 0 и счет повторяется) и галку в пункте Overflow interrupt - генерируется прерывания при переполнении
второе-
Каждые 27мсек происходит прерывание.

// прерывание каждые 27,31мсек
каким образом высчитана эта цифра 27.31 ??
и не совпало у меня вот еще что
TCCR0B=0x05;
уменя это выглядит так TCCR0B=0x00; вот с этими значениями у меня просто на выходе порта постоянная 1 , как только поменял как у вас все заработало . почему у меня при формировании заголовка эта строчка выставилась в 0 и что она означает??
за ранее спасибо и извините за назойливость , очень хочется разобраться со всеми пунктами .
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

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

unsigned int counter;

Это беззнаковая целая переменная. Имеет размерность в два байта. Может принимать значения от 0 до 65535. Имя ей - counter. Придумывается это имя программистом, желательно смысловое(здесь выбрано имя counter - счетчик). При старте программы принимает значение 0, обнуляется. Прописывается ручками.
каким образом высчитана эта цифра 27.31 ??

Я ее не считал. В отладчике AVRStudio прогнал программу и посмотрел.

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

TCCR0B=0x05;

Когда задаете таймер в визарде, запустите его, выбрав частоту тактирования в выпадающем окне Clock Value. У вас таймер так и остался остановленным, ибо по умолчанию там Timer 0 stopped.
Docendo discimus
Аватара пользователя
pashaumnov
Прорезались зубы
Сообщения: 236
Зарегистрирован: Чт июн 25, 2009 16:00:25
Откуда: нижний новгород

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

Сообщение pashaumnov »

а вот что еще интересно . можно ли назначить две ноги бод входящий сигнал , например один при приходе лог 0 другой при лог1 и 2 таймера работающих не зависимо друг от друга с разными временными работами .все это на тини 13. к тому же я так понимаю пока лог норль на входе пина В0, таймер все равно считает и кушает энергию где надо поправить что бы до подачи 1 на вход В0 таймер находился в спящем режиме , и нужно ли будет менять фузы.????
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Можно всё, что угодно.
Docendo discimus
Fleshmax
Родился
Сообщения: 16
Зарегистрирован: Сб окт 11, 2008 14:45:44

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

Сообщение Fleshmax »

Здравствуйте Уважаемые Коты!
Подскажите как в codevision работать с портами adc6 и adc7 в mege8.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

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

Сообщение oleg110592 »

как с портами не получится, можно использовать как аналоговые входы
Fleshmax
Родился
Сообщения: 16
Зарегистрирован: Сб окт 11, 2008 14:45:44

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

Сообщение Fleshmax »

oleg110592 писал(а):как с портами не получится, можно использовать как аналоговые входы

Ну это понятно вот как их настроить и как получать с них данные
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

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

Сообщение oleg110592 »

так например:
Спойлер

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

#include <mega8.h>
#include <delay.h>
#define ADC_VREF_TYPE 0x00

unsigned int AdcValue;

// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

void main(void)
{
// ADC initialization
// ADC Clock frequency: 1000,000 kHz
// ADC Voltage Reference: AREF pin
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;

AdcValue = read_adc(6);
AdcValue = read_adc(7);
}
Аватара пользователя
pashaumnov
Прорезались зубы
Сообщения: 236
Зарегистрирован: Чт июн 25, 2009 16:00:25
Откуда: нижний новгород

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

Сообщение pashaumnov »

прошу в очередной раз помощи. общими усилиями была написана программа для таймера , условия работы следующие
// опрос состояния pinb0 если 0 то не чего не делаем, если 1 то запускаем таймер
// работы на 20сек и на portb.2 подаем единицу. смотрим состояние во время
// отсчета таймера pinb0 , если 1 то снова накидываем 20 сек,
// если 0 то ждем завершения работы таймера и по истечении 20сек portb.2 переводим в 0.
далее текст врограммы несколько усовершенствованый (больше кнопок , больше портов задействовано. )
Спойлер#include <tiny13.h>
unsigned int zaderska;

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
if (++zaderska>555) PORTB.2=0;
{
if (++zaderska>552) PORTB.3=0;
{
if (++zaderska>552) PORTB.4=0;
}
}
}

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port B initialization
// Func5=Out Func4=Out Func3=Out Func2=Out Func1=In Func0=In
// State5=0 State4=0 State3=0 State2=0 State1=P State0=P
PORTB=0x03;
DDRB=0x3C;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 9,375 kHz
// Mode: Normal top=0xFF
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x05;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x03;
MCUCR=0x00;

// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x02;

// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;
DIDR0=0x00;

// ADC initialization
// ADC disabled
ADCSRA=0x00;

// Global enable interrupts
#asm("sei")

while (1)
{
if(PINB.1)


{zaderska = 0; // сбрасываем счетчик
PORTB.3= 1; // устанавливаем порт в "1"
PORTB.2= 1;

}
if(PINB.0)
{zaderska = 0; // сбрасываем счетчик
PORTB.4= 1;
PORTB.2= 1; // устанавливаем порт в "1"
};


}
}


и схема в ротеусе
пппапаввпвпвап.JPG
(61.58 КБ) 448 скачиваний

в протеусе все работает а вот в железе при подключении питания к ножкам мк ,светодиод на PORTB.2 сразу же загорается.
фьющы без изменения.заводские.
kravasergey
Родился
Сообщения: 6
Зарегистрирован: Сб ноя 16, 2013 15:32:11

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

Сообщение kravasergey »

Здравствуйте всем Радиокотовцам.
Прошу помощи знатоков языка С и программы Codevision Avr2.05.
Дело в том, что при определению глобальной переменной в строке MX_GLOBAL MX_UINT8 FCV_LEG = (0x0); выдает ошибку '(' expected. Уже перепробывал уйму вариантов решения проблемы (и дужки вставлял и просто создавал переменную и потом обнулял), но в итоге проблема осталась такой же как и была.
Проект очень важный и поэтому ищу любое решение этой проблеммы :(
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Проект

курсовой? :))
Docendo discimus
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

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

Сообщение a_skr »

kravasergey писал(а):при определению глобальной переменной в строке MX_GLOBAL MX_UINT8 FCV_LEG = (0x0);
Расскажите нам, что такое MX_GLOBAL и MX_UINT8, и, может, найдем решение... ;)
Аватара пользователя
0867532
Встал на лапы
Сообщения: 142
Зарегистрирован: Сб май 25, 2013 21:14:11
Откуда: Москва
Контактная информация:

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

Сообщение 0867532 »

Добрый Вечер!
Добрался я до uart :)
Спаял переходник с usb на uart.
Соединил выходы переходника TX и RX с пинами TX и RX контроллера соответственно.
Переходник работает(проверял замыканием TX и RX).
Вот вопрос: Хочу чтоб контроллер выводил на экран чар, который посылаю с компа.

К коду с работой дисплея(nokia3310) Приклеил код сгенерированный в визарде(только касающийся uart'а).
дальше:

. . .
void LCD_writeChar ( unsigned char ch)//Кусочек либы
{
unsigned char j;
for(j=0; j<5; j++)
LCD_writeData( smallFont [(unsigned int)(ch-32)*5 + j] );

LCD_writeData( 0x00 );
}
. . .
while(1)
{
LCD_writeChar(getchar()); // здесь по ходу косяк, может вывести char data; из getChar(); как глобальную переменную, и записывать её?
delay_ms(100);
LCD_clear();
}
(Код uart'а я думаю не нужно приводить, т.к. он есть у всех вас.)
Контроллер зависает по моему.
Т.е. Пишет приветствие(последняя строчка пере основным циклом) и даже не чистит экран.
Если возникнут вопросы - посмотрите на мой аватар.
Аватара пользователя
*Trigger*
Друг Кота
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

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

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

0867532 писал(а):Соединил выходы переходника TX и RX с пинами TX и RX контроллера соответственно.

А надо крест-накрест.
RX переходника <- TX контроллера
TX переходника -> RX контроллера
(Стрелочка - направление данных)
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Аватара пользователя
0867532
Встал на лапы
Сообщения: 142
Зарегистрирован: Сб май 25, 2013 21:14:11
Откуда: Москва
Контактная информация:

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

Сообщение 0867532 »

*Trigger* писал(а):А надо крест-накрест.
RX переходника <- TX контроллера
TX переходника -> RX контроллера
(Стрелочка - направление данных)

Это сделал. Лучше не стало...
Если возникнут вопросы - посмотрите на мой аватар.
Аватара пользователя
0867532
Встал на лапы
Сообщения: 142
Зарегистрирован: Сб май 25, 2013 21:14:11
Откуда: Москва
Контактная информация:

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

Сообщение 0867532 »

Подолбился об uart ещё немного, есть результат, но вообще не понятный.
Посылаю любое число(0x00 - 0xFF) приходит либо 0x80 либо вообще ничего. ЧТО ЭТО ЗНАЧИТ???

while (1) {
my_variable=getchar();
putchar(my_variable);
}
Если возникнут вопросы - посмотрите на мой аватар.
Аватара пользователя
*Trigger*
Друг Кота
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

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

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

Проверьте настройки терминала. Скорость, чётность, полярность (инверсию).
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Ответить

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