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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
IfoR
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула
Контактная информация:

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

Сообщение IfoR »

Ах, ну да... Ну да ладно.
Изображение
/dev/urandom - гигабайты информации.

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

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

Сообщение vitalik_1984 »

IfoR писал(а):А тип функции main всё таки на int замени. :)

не нужно это же вижн он сам так пишет.


FreshMan писал(а):в английском пока не силен :( :( :(

да в русском тоже не особо

Переключаться проверочный вопрос -что делать?
Последний раз редактировалось vitalik_1984 Ср фев 15, 2012 20:21:20, всего редактировалось 1 раз.
В поисках истины человек развивается.
Аватара пользователя
IfoR
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула
Контактная информация:

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

Сообщение IfoR »

Ну я по привычки просто. :)
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
Аватара пользователя
totty
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср авг 03, 2011 22:26:02
Откуда: Севастополь

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

Сообщение totty »

vitalik_1984, дописал)) терь ни варнинг ничего, но все-равно не хочет

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

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

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

totty писал(а):теперь дает ошибку что функция main должна возвращать void =)
Это скорее всего не ошибка, а варнинг. И ругается, вероятнее всего, не на int, а на отсутствие return. Попробуйте в конце ф-ии воткнуть return 0; или указать для ф-ии тип void.

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

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

Сообщение vitalik_1984 »

Аlex писал(а):конце ф-ии воткнуть return 0; или указать для ф-ии тип void.

Не придумывайте ерунды.Это же вижн ему правила си не вижн

totty писал(а):пробовал и через автоматический генератор программ, результат тот же

Плохо пробовали

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

#include <tiny2313.h>


 
interrupt [TIM1_OVFvoid Timer1_ovf(void)  
{
TCNT1H=0xff
TCNT1L=0xf0;
PORTB.1=~PORTB.1;   
PORTB.2=~PORTB.2;
}

void main(void)
// основная программа
{
/* Настройка портов */   
DDRB=0xFF// весь порт на вывод
DDRD=0xFF// весь порт на вывод
PORTB.1=1;
PORTB.2=0;
/* Настройки таймера 0 */
TIMSK|=(1<<TOIE1); 
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 31.250 kHz
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x04;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0xff;
ICR1L=0xf0;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

#asm("sei") 
while(1)
        {
        
        }  
        

Сгенерил в проте работает.

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

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

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

Это же вижн ему правила си не вижн
Нормально... :)) И как тогда кодить на нём ? Без правил... :))
Ладно, я походу не в ту ветку залез. Мне больше PIC'и по душе.... :write:
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

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

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

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

Стало на столько интересно, что поставил себе CV. Версия 2.03.4
Тест :

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

main(void)
{
Warning: explicit return type is missing, 'void' assumed

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

int main(void)
{
Error: the 'main' function must return 'void' type

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

void main(void)
{
No errors
No warnings

А Вы говорите "не придумывайте ерунды" :) С void'ом то работает :)
С int'ом вообще ругается :kill:

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

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

Сообщение vitalik_1984 »

между прочим я как раз на ваши предложения добавить ретерны или инты сказал что не придумывать.Нужно пользоваться мастером.Он же сам с собой не будет спорить.
В поисках истины человек развивается.
Аватара пользователя
totty
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср авг 03, 2011 22:26:02
Откуда: Севастополь

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

Сообщение totty »

vitalik_1984, спасибо

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

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

Сообщение vitalik_1984 »

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

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

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

между прочим я как раз на ваши предложения добавить ретерны или инты сказал
Я про инты ничего не говорил. Я только сказал добавить ретурн, если ф-ия имеет тип int или сделать её void :)
Да ладно, что спорить... "Фигня эта Ваша заливная рыба" :)))
Отхожу от темы, всем приятного программирования ! :write:
Duk
Родился
Сообщения: 19
Зарегистрирован: Вс фев 13, 2011 00:23:51

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

Сообщение Duk »

Начинаю разбираться с мк и столкнулся с проблемой,что в CodeVision при компиляции кода выскакивает ошибка что превышен размер Data Stack на несколько байт.Код:

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

#include <90s2313.h>
#include <1wire.h>
#include <lcd.h>
#include <stdio.h>
#include <ds1820.h>
#asm       
 .equ __w1_port=0x18
  .equ __w1_bit=0
#endasm
#asm
 .equ __lcd_port=0x12;
#endasm

int temper; 
unsigned char lcdBuff[5];


void main(void)
{
lcd_init(10);
if(w1_init())
{
while (1)
      {
        temper=ds1820_temperature_10(0);
        sprintf(lcdBuff,"t",temper);
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_puts(lcdBuff);                                                   
      }
    }
}

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

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

Сообщение vitalik_1984 »

проверь в опциях проекта чтобы правильный профессор был выбран.на панели управления кнопочка с ключиком гаечным.левее шестеренки у меня расположена.
В поисках истины человек развивается.
Аватара пользователя
IfoR
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула
Контактная информация:

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

Сообщение IfoR »

Здесь

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

sprintf(lcdBuff,"t",temper); 

вы кладёте в стек temper, а забирать не забираете. Может быть дело в этом. Попробуйте так:

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

sprintf(lcdBuff,"%d",temper); 
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
Duk
Родился
Сообщения: 19
Зарегистрирован: Вс фев 13, 2011 00:23:51

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

Сообщение Duk »

vitalik_1984 писал(а):проверь в опциях проекта чтобы правильный профессор был выбран.на панели управления кнопочка с ключиком гаечным.левее шестеренки у меня расположена.

что вы подразумеваете под правильным профессором?
Аватара пользователя
IfoR
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула
Контактная информация:

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

Сообщение IfoR »

Вероятно имелось ввиду: процессор. Или контроллер.
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
Duk
Родился
Сообщения: 19
Зарегистрирован: Вс фев 13, 2011 00:23:51

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

Сообщение Duk »

Там стоит как нужно - at90s2313.Я даже пробывал увеличить до 120 размер стека,но все равно 3 байта никак не влезают и выдается ошибка((
Аватара пользователя
v000va
Мучитель микросхем
Сообщения: 422
Зарегистрирован: Ср дек 26, 2007 18:33:00

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

Сообщение v000va »

Коты, подскажите плз, может ламерский вопрос, но все же. Есть стандартный обработчик RXD прерывания в codevision с буфером в RX_BUFFER_SIZE =24, например.
1. Как можно достать из буфера какой-то конкретный символ? 14-й например.
2. Как можно отправить пачку символов в буфер, чтоб посмотреть как работает сам буфер, иметь возможность его заполнить, попробовать достать из него что-то?
Т.е. как можно одним махом заполнить весь буфер? В стандартном терминале, как только нажимаешь клавишу в окне ввода - сразу срабатывет прерывание по RXD в контроллере и буфер не заполняется полностью. Или я чего-то не так понимаю? :roll:
Ответить

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