Обсуждаем контроллеры компании Atmel.
Ответить

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

Пт янв 13, 2023 20:55:12

WiseLord, Да, в var.c 1 строчка. Приинклюдил к lern.c файл stdint.h. Ошибка
Код:
var.h(4), #included from: lern.c: '(' expected
пропала. Ошибка
Код:
var.c(1): '(' expected
осталась.

Добавлено after 4 minutes 13 seconds:
Приинклюдил stdint.h и к var.c. Ошибки пропали. Спасибо за подсказку!

Добавлено after 3 minutes 18 seconds:
Но не понятно поведение компилятора. Если не раскидывать код на файлы, то инклюдить stdint.h не требуется, все и так работает. :facepalm:

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

Пт янв 13, 2023 21:26:23

А откуда компилятор, по-вашему, поймёт, что такое uint8_t, если ни в файле, ни в том, что из них инклюдится, ничего про это нет? Это же не встроенный тип вроде int или char.

В случае одного файла все работает за счёт того, что оно через mega8.h где-то прилетает.

Поймите главное - каждый .c файл - это самостоятельная единица компиляции.

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

Вс апр 23, 2023 22:27:34

Можно ли поменять ASCII таблицу на свою? Индикатор на MAX7219 для наглядной записи кода.

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

Ср июн 21, 2023 15:47:41

Не устанавливается на WIN7-64 AvrStudio4Setup-4.18. После начала установки больше ничего не происходит, значёк установки просто висит в панели задач. Подскажите как установить.

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

Чт окт 19, 2023 07:24:18

Вот в функцию можно передать ссылку на массив типа void (char *mass)
А вот как бы передать ссылку на переменную? Чтобы менять эту переменную в функции.
А то приходится передавать ее в функцию и возвращать ее в нее же.

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

Чт окт 19, 2023 11:10:29

Точно так же

Код:
void func(int *var)
{
  *var = 5;
}

int main()
{
    int a = 3;
    func(&a); // a = 5 теперь
}

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

Чт окт 19, 2023 11:24:58

кстати, массив кодевижен всегда передает в функцию по указателю, это надо иметь в виду
(т.е. если передать массив в функцию и там его изменить, то исходный массив тоже изменится, как бы его ни передавали, хоть со звёздочками, хоть без)

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

Пн окт 23, 2023 17:59:11

Точно так же

Код:
void func(int *var)
{
  *var = 5;
}

int main()
{
    int a = 3;
    func(&a); // a = 5 теперь
}


Прикольно, оно работает, но компилится в больший размер, я думал будет экономия кода

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

Ср окт 25, 2023 08:02:08

я в этом плане тоже кодевижену удивляюсь, код, который по идее должен быть компактнее в итоге получается тяжелее...
както делал фильтр на 2 канала (надо было одинаково отфильтровать 2 переменные) самым компактным оказалось простое дублирование кода (через дефайны), звтем с функциями и с передачей в них массивов, самым тяжелым оказался код с указателями...

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

Чт окт 26, 2023 21:02:38

Братцы /, памагити!!! Кодвижен не хочет делать операцию деления




#include <mega8.h>



#include <delay.h>
#include <stdlib.h>
#include <stdio.h>
#define LATCH PORTB.1
#define DI PORTB.2
#define CLK PORTB.0



unsigned int long Big_data , Neu_data=0 , adc_data ;

unsigned int data=0 ;
//unsigned char data=0 ;

unsigned int Print_digit ;
unsigned char DIGIT [10]={ 0b11000000, 0b11111001, 0b10100100, 0b10110000, 0b10011001, 0b10010010, 0b10000010, 0b11111000, 0b10000000, 0b10010000} ;
unsigned char count_LED_print=0, count_LED_flag=0 ;
unsigned char ;

/// ADC interrupt service routine
interrupt [ADC_INT] void adc_isr(void)
{

// Read the AD conversion result
adc_data=ADCW;
//adc_flag=1 ;

}

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
unsigned char i=0 ;
for ( i=0 ; i<16 ; i++ ) {
if (Print_digit&0x8000) { DI=1 ; }
else { DI=0 ; }
CLK=1;
delay_us(5) ;
CLK=0;
Print_digit<<=1 ; }

count_LED_print++ ;
count_LED_flag=1 ;
}

// Declare your global variables here

void main(void)
{
// Declare your local variables here
unsigned char R_digit =0x01, r=0 ;


PORTB=0x00;DDRB=0x0F;PORTC=0x00;DDRC=0x00;PORTD=0x00;DDRD=0x00;
TCCR0=0x04;TCNT0=0x00;
TCCR1A=0x00;TCCR1B=0x00;TCNT1H=0x00;TCNT1L=0x00;ICR1H=0x00;ICR1L=0x00;
OCR1AH=0x00;OCR1AL=0x00;OCR1BH=0x00;OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;TCNT2=0x00;OCR2=0x00;
MCUCR=0x00;
TIMSK=0x01;
UCSRB=0x00;ACSR=0x80;SFIOR=0x00;
ADMUX=0x40 ;ADCSRA=0x8F;
SPCR=0x00;TWCR=0x00;

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

while (1)
{

#asm("cli")
if(count_LED_flag==1) { count_LED_flag=0 ; // индикация начало
Print_digit= DIGIT [data%10] ;
data/=10 ;
Print_digit<<=8 ;
Print_digit|=R_digit;

R_digit<<=1;
LATCH=1 ;
delay_us(5) ;
LATCH=0 ;

if(count_LED_print==4) { R_digit =0x01 ;
data=(unsigned int) Big_data ;
count_LED_print=0 ; }

} // индикация конец
#asm("sei")


if (r<=4) { r++;
ADCSRA|=(1<<ADSC) ;
while((ADCSRA & (1<<ADSC))) { ; }
Big_data+=adc_data ; }
Big_data/=5 ;
r=0 ;


}

}






Вот проблемный участок

if (r<=4) { r++;
ADCSRA|=(1<<ADSC) ;
while((ADCSRA & (1<<ADSC))) { ; }
Big_data+=adc_data ; }
Big_data/=5 ;
r=0 ;

почему то Big_data/=5 ; не выполняется...
надо получить среднее значение за (n) измерений.

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

Пт окт 27, 2023 03:39:29

edds писал(а):почему то Big_data/=5 ; не выполняется...
Скорее всего, Вам так только кажется.


Добавлено after 6 minutes 3 seconds:
ПыСы: Наш форум позволяет отображать код в красивом и отформатированном виде.

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

Пн окт 30, 2023 21:51:32

Я бы делил на четыре, пусть будет среднее за четыре измерения, простым сдвигом.

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

Сб дек 23, 2023 21:11:41

Всем доброго вечера! Надо прошить ATmega8 в схеме используется часовой кварц 32768. В статье есть картинки с фъюзами как мне надо ставить для codevision? Помогите пожалуйста.
Изображение Изображение
тут кусок исходника
Изображение
Вот так правильно?
Изображение
Ответить