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

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

Чт авг 09, 2018 11:17:36

neo-neo писал(а):буду постепенно проги удалять с компа
удали CodeVision - все проблемы сразу пропадут. вместо этого установи GTA - норм будет замена

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

Пт авг 10, 2018 08:00:35

CodevisionAVR я там выставляю а ну ка напиши мне ради интереса как надо может я не так что делаю

Добавлено after 49 seconds:
delay_ms(500)

Добавлено after 4 minutes 4 seconds:
всё не кому подсказать

Добавлено after 13 minutes 40 seconds:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.04.4a Advanced
Automatic Program Generator
© Copyright 1998-2009 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date : 10.08.2018
Author : NeVaDa
Company : андрей
Comments:


Chip type : ATmega8
Program type : Application
AVR Core Clock frequency: 8,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/

#include <mega8.h>
#include<delay.h>
// Declare your global variables here

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

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=T State4=T State3=T State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0x07;

// 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;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

while (1)
{
PORTB.0=1;
delay_ms(500);
};
}

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

Пт авг 10, 2018 08:19:25

neo-neo писал(а):может я не так что делаю
научитесь задавать вопросы так, чтобы вашу проблему можно было понять сразу, без наводящих вопросов. кстати, в этом очень помогают знаки препинания.
неплохо так же научиться пользоваться тегом [code] для вставки своего кода.

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

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

Пт авг 10, 2018 08:34:19

delay_ms(500); когда вписываю эту строку выдаёт ошибку

Добавлено after 10 minutes 5 seconds:
если с кодом всё нормально почему выдаёт ошибку

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

Пт авг 10, 2018 08:42:04

я вас просил быть конкретным: какую именно ошибку выдает? что пишет?

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

Пт авг 10, 2018 09:15:44

undefihed symbol delay_ms .Вот что выдаёт

Добавлено after 1 minute 59 seconds:
undefined symbol delay_ms .Вот что выдаёт

Добавлено after 27 minutes 27 seconds:
и не кто не подскажет как убрать ошибку

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

Пт авг 10, 2018 09:55:10

странно, я полностью твой код скопировал, себе в кодевижен вставил - он съел и не подавился...

Добавлено after 1 minute 41 second:
возможно, он библиотеку delay.h не нашел.

Добавлено after 2 minutes 50 seconds:
а такого сообщения нет? Error: ... : can't open #include file: delay.h
если есть, то проверь наличие файла (поиском) и пути к библиотекам:
в cvavr нажми Project -> Configure -> C Compiler -> Paths. там проверь пути к файлам библиотек

Добавлено after 7 minutes 15 seconds:
если такого сообщения нет - найди эту библиотеку, открой (можно блокнотом) в ней должны быть функции задержек...

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

Пт авг 10, 2018 10:26:35

в одном квадрате написанно C:\cvavr2\inc а в нижьнем квадрате C:cvavr2\lib

Добавлено after 3 minutes 23 seconds:
/ CodeVisionAVR C Compiler
// (C) 1998-2000 Pavel Haiduc, HP InfoTech S.R.L.

#ifndef _DELAY_INCLUDED_
#define _DELAY_INCLUDED_

#pragma used+

void delay_us(unsigned int n);
void delay_ms(unsigned int n);

#pragma used-

#endif

Добавлено after 1 minute 1 second:
вот что у меня в библеотеки я открыл файл в програме

Добавлено after 14 minutes 41 second:
click ontne message to nighlight tne correspohding source line Rignt click for more optiohs Внизу такое сообщения где ошибки выдаёт

Добавлено after 9 minutes 32 seconds:
ЧТО МОЛЧИШЬ ЧТО ПОДСКАЖИШЬ

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

Пт авг 10, 2018 10:27:22

полностью твой код скопировал, себе в кодевижен вставил - он съел и не подавился...
Аналогично:

Изображение

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

Пт авг 10, 2018 10:33:33

ЧУДЕСА ДА И ТОЛЬКО ВОТ ЧТО МОГУ СКАЗАТЬ

Добавлено after 1 minute 40 seconds:
МОЖЕТ У МЕНЯ ВИНДА7 32 БИТ МОЖЕТ ЗА ЭТОГО

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

Пт авг 10, 2018 11:21:50

такаяже (win7 x32)

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

Пт авг 10, 2018 13:47:29

скачал на атмегу8 codevision avr cvavr vmlab ATmega8 поевилась в програме новая библиотека и всё заработало mega bits. этого файла у меня не было

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

Пт авг 10, 2018 14:32:27

Кто-нибудь это понял :shock: ?

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

Пт авг 10, 2018 14:38:38

я тоже не понел но это работает

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

Сб авг 11, 2018 13:46:02

А состояние таймеров можно считывать как-то?

Код:
TCNT1H=TC >> 8;
TCNT1L=TC & 0xff;


Только в обратном направлении?

Код:
TC=TCNT1H << 8;
TC=TC+TCNT1L;


У меня это приводит к нарушению работы таймера. Как будто нули туда пишутся. Наверное эти регистры только для записи. Да и результат чтения может быть не корректным, пока читаем старший байт, нижний уже на переполнение может уйти...

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

Сб авг 11, 2018 15:00:07

разве в CV не определена "встроенная" 16-битная переменная TCNT1? чтобы не по частям её читать?

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

Сб авг 11, 2018 15:43:02

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

Добавлено after 11 minutes 18 seconds:
кстати, я уже не раз встречал, в К.В. неопределенные целиком 16 битные регистры, приходилось править заголовочники (дописывать)

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

Ср авг 15, 2018 01:21:31

А что такое режим WDT - interrupt + reset? По отдельности понятно, а всё вместе это как? Сначала прерывание, потом неизбежный сброс по выходу из него? Или можно WDT сбросить и продолжить работу?

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

Ср авг 15, 2018 07:20:01

SIM31 писал(а):Сначала прерывание, потом неизбежный сброс по выходу из него? Или можно WDT сбросить и продолжить работу?
этот режим работает так: когда он включен, первое переполнение WDT вызывает прерывание. при переходе к обработчику прерывания WDT автоматически переключается на режим сброса, т.е. следующее переполнение WDT уже вызовет не прерывание, а сброс.
чтобы сброс не прооизошел никогда, надо всякий раз после прерывания (но не в обработчике!) заново включать этот режим WDT.

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

Чт авг 16, 2018 13:12:30

Похоже эксперименты с WDT нужно проводить только в железе. Протеус и CV глючат с WDT, вероятно производители решили что это второстепенная периферия.

CV дает не кооректный код инициализации, Proteus ругается, код для ATmega328
Код:
// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/256k
// Watchdog timeout action: Reset
#pragma optsize-
WDTCSR=(0<<WDIF) | (0<<WDIE) | (0<<WDP3) | (1<<WDCE) | (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);
WDTCSR=(0<<WDIF) | (0<<WDIE) | (0<<WDP3) | (0<<WDCE) | (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);



или такой
Код:
// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/256k
// Watchdog timeout action: Reset + Interrupt
#pragma optsize-
//WDTCSR=(0<<WDIF) | (0<<WDIE) | (0<<WDP3) | (1<<WDCE) | (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);
//WDTCSR=(1<<WDIF) | (1<<WDIE) | (0<<WDP3) | (0<<WDCE) | (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);


А Proteus в свою очередь не понимает прерывания от WDT, только Reset, корректный код набранный руками, но в симуляторе делает Reset
Код:
#asm("WDR")
WDTCSR=(1<<WDCE)|(1<<WDE);
WDTCSR=(1<<WDIE) | (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);


PC=0x012A. [AVR WATCHDOG] Timer expired - Interrupt generated and processor will be reset after its handling. [U1]


Возможно надо обновлять Proteus 8.3, но не факт что там что-то поправили, может новые контроллеры добавляют. Но может и ошибся где-то или надо что-то править ))

На всякий случай даже в основной цикл добавил переинициализацию
Код:
while (1)
      {
      WDTCSR=(1<<WDCE)|(1<<WDE);
      WDTCSR=(1<<WDIE) | (1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);
      }

Все равно каждые 2 секунды перезагружает после отработки прерывания.
Ответить