Не может быть у Вас этих записей много, т.к. битов в порте всего 8
CodeVision AVR в вопросах и ответах
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Да поменяйте в своём проекте все PORTA на PORT_OUT, да и всё. Быстрее уже поменяли бы, пока здесь пишите посты. Проблему из ничего делаете...
Не может быть у Вас этих записей много, т.к. битов в порте всего 8
Не может быть у Вас этих записей много, т.к. битов в порте всего 8
Re: CodeVision AVR в вопросах и ответах
Аlex писал(а):Да поменяйте в своём проекте все PORTA на PORT_OUT, да и всё. Быстрее уже поменяли бы, пока здесь пишите посты. Проблему из ничего делаете...
Не может быть у Вас этих записей много, т.к. битов в порте всего 8
Ха, так менял уже.
Не работают тогда такие конструкции
if (pin_left == o ) {...}
pin_left = 1;
и т.д..
Похоже , что к битам переменной не достучаться так просто, как к битам порта..
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Для Си, биты переменной ничем не отличаются от битов порта 
- pashaumnov
- Прорезались зубы
- Сообщения: 236
- Зарегистрирован: Чт июн 25, 2009 16:00:25
- Откуда: нижний новгород
Re: CodeVision AVR в вопросах и ответах
pyzhman
Разбирая прошивку по строчке возникло еще несколько вопросов. во первых при создании в код вижен заголовочного файла у меня не было вот этой строчки
что она делает первые два слова означают отсчет от 0до 250 а counter?? ему что присвоено какое то значение?? если да то где ?? потому как при настройке таймера через окно программы в пункте Mode поставил Normal top - (счетчик щитает от 0 до 255, после переполнения сбрасывается в 0 и счет повторяется) и галку в пункте Overflow interrupt - генерируется прерывания при переполненииunsigned int counter;
второе-
Каждые 27мсек происходит прерывание.
каким образом высчитана эта цифра 27.31 ??// прерывание каждые 27,31мсек
и не совпало у меня вот еще что
уменя это выглядит так TCCR0B=0x00; вот с этими значениями у меня просто на выходе порта постоянная 1 , как только поменял как у вас все заработало . почему у меня при формировании заголовка эта строчка выставилась в 0 и что она означает??TCCR0B=0x05;
за ранее спасибо и извините за назойливость , очень хочется разобраться со всеми пунктами .
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Код: Выделить всё
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 в вопросах и ответах
а вот что еще интересно . можно ли назначить две ноги бод входящий сигнал , например один при приходе лог 0 другой при лог1 и 2 таймера работающих не зависимо друг от друга с разными временными работами .все это на тини 13. к тому же я так понимаю пока лог норль на входе пина В0, таймер все равно считает и кушает энергию где надо поправить что бы до подачи 1 на вход В0 таймер находился в спящем режиме , и нужно ли будет менять фузы.????
Re: CodeVision AVR в вопросах и ответах
Здравствуйте Уважаемые Коты!
Подскажите как в codevision работать с портами adc6 и adc7 в mege8.
Подскажите как в codevision работать с портами adc6 и adc7 в mege8.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: CodeVision AVR в вопросах и ответах
как с портами не получится, можно использовать как аналоговые входы
Re: CodeVision AVR в вопросах и ответах
oleg110592 писал(а):как с портами не получится, можно использовать как аналоговые входы
Ну это понятно вот как их настроить и как получать с них данные
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: CodeVision AVR в вопросах и ответах
так например:
Спойлер
Код: Выделить всё
#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 в вопросах и ответах
прошу в очередной раз помощи. общими усилиями была написана программа для таймера , условия работы следующие
// опрос состояния pinb0 если 0 то не чего не делаем, если 1 то запускаем таймер
// работы на 20сек и на portb.2 подаем единицу. смотрим состояние во время
// отсчета таймера pinb0 , если 1 то снова накидываем 20 сек,
// если 0 то ждем завершения работы таймера и по истечении 20сек portb.2 переводим в 0.
далее текст врограммы несколько усовершенствованый (больше кнопок , больше портов задействовано. )
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"
};
}
}
и схема в ротеусе
в протеусе все работает а вот в железе при подключении питания к ножкам мк ,светодиод на PORTB.2 сразу же загорается.
фьющы без изменения.заводские.
// опрос состояния 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"
};
}
}
и схема в ротеусе
в протеусе все работает а вот в железе при подключении питания к ножкам мк ,светодиод на PORTB.2 сразу же загорается.
фьющы без изменения.заводские.
-
kravasergey
- Родился
- Сообщения: 6
- Зарегистрирован: Сб ноя 16, 2013 15:32:11
Re: CodeVision AVR в вопросах и ответах
Здравствуйте всем Радиокотовцам.
Прошу помощи знатоков языка С и программы Codevision Avr2.05.
Дело в том, что при определению глобальной переменной в строке MX_GLOBAL MX_UINT8 FCV_LEG = (0x0); выдает ошибку '(' expected. Уже перепробывал уйму вариантов решения проблемы (и дужки вставлял и просто создавал переменную и потом обнулял), но в итоге проблема осталась такой же как и была.
Проект очень важный и поэтому ищу любое решение этой проблеммы
Прошу помощи знатоков языка С и программы Codevision Avr2.05.
Дело в том, что при определению глобальной переменной в строке MX_GLOBAL MX_UINT8 FCV_LEG = (0x0); выдает ошибку '(' expected. Уже перепробывал уйму вариантов решения проблемы (и дужки вставлял и просто создавал переменную и потом обнулял), но в итоге проблема осталась такой же как и была.
Проект очень важный и поэтому ищу любое решение этой проблеммы
Re: CodeVision AVR в вопросах и ответах
Расскажите нам, что такое MX_GLOBAL и MX_UINT8, и, может, найдем решение...kravasergey писал(а):при определению глобальной переменной в строке MX_GLOBAL MX_UINT8 FCV_LEG = (0x0);
- 0867532
- Встал на лапы
- Сообщения: 142
- Зарегистрирован: Сб май 25, 2013 21:14:11
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Добрый Вечер!
Добрался я до 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'а я думаю не нужно приводить, т.к. он есть у всех вас.)
Контроллер зависает по моему.
Т.е. Пишет приветствие(последняя строчка пере основным циклом) и даже не чистит экран.
Добрался я до 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'а я думаю не нужно приводить, т.к. он есть у всех вас.)
Контроллер зависает по моему.
Т.е. Пишет приветствие(последняя строчка пере основным циклом) и даже не чистит экран.
Если возникнут вопросы - посмотрите на мой аватар.
Re: CodeVision AVR в вопросах и ответах
0867532 писал(а):Соединил выходы переходника TX и RX с пинами TX и RX контроллера соответственно.
А надо крест-накрест.
RX переходника <- TX контроллера
TX переходника -> RX контроллера
(Стрелочка - направление данных)
Этот пост оказался полезен? Не поленись, нажми
слева!

Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
- 0867532
- Встал на лапы
- Сообщения: 142
- Зарегистрирован: Сб май 25, 2013 21:14:11
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
*Trigger* писал(а):А надо крест-накрест.
RX переходника <- TX контроллера
TX переходника -> RX контроллера
(Стрелочка - направление данных)
Это сделал. Лучше не стало...
Если возникнут вопросы - посмотрите на мой аватар.
- 0867532
- Встал на лапы
- Сообщения: 142
- Зарегистрирован: Сб май 25, 2013 21:14:11
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Подолбился об uart ещё немного, есть результат, но вообще не понятный.
Посылаю любое число(0x00 - 0xFF) приходит либо 0x80 либо вообще ничего. ЧТО ЭТО ЗНАЧИТ???
while (1) {
my_variable=getchar();
putchar(my_variable);
}
Посылаю любое число(0x00 - 0xFF) приходит либо 0x80 либо вообще ничего. ЧТО ЭТО ЗНАЧИТ???
while (1) {
my_variable=getchar();
putchar(my_variable);
}
Если возникнут вопросы - посмотрите на мой аватар.
Re: CodeVision AVR в вопросах и ответах
Проверьте настройки терминала. Скорость, чётность, полярность (инверсию).
Этот пост оказался полезен? Не поленись, нажми
слева!

Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.