Задержка на Attiny

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Frezerok
Открыл глаза
Сообщения: 67
Зарегистрирован: Ср мар 17, 2010 21:21:48

Задержка на Attiny

Сообщение Frezerok »

Всем доброго дня.
Не могу понять что за лажа, пишу в AVRS 5, прога работает нормально, и весит нормально. Но как только добавляю функцию _delay_ms(), после компиляции вижу непонятное.

Device: attiny13
Program: 3836 bytes (374.6% Full)
(.text + .data + .bootloader)
Data: 8 bytes (12.5% Full)
(.data + .bss + .noinit)

Что я не правильно делаю?
Заранее всем спасибо.
Реклама
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Задержка на Attiny

Сообщение Мастер Ломастер »

очевидно, в параметре функции _delay_ms() вы указываете переменную, а не константу. ну и само собой, не читали документацию по этой функции.
битва с дураками проиграна, победители торжествуют. слава победителям!
Реклама
Frezerok
Открыл глаза
Сообщения: 67
Зарегистрирован: Ср мар 17, 2010 21:21:48

Re: Задержка на Attiny

Сообщение Frezerok »

в delay стоит константа, "_delay_ms(440)".
Аватара пользователя
s_black
Мучитель микросхем
Сообщения: 411
Зарегистрирован: Вс авг 10, 2008 19:35:49
Откуда: Евпатория
Контактная информация:

Re: Задержка на Attiny

Сообщение s_black »

А Вы не забыли подключить <util/delay.h> ?
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Задержка на Attiny

Сообщение pyzhman »

Не плохо бы проект выложить.
Docendo discimus
Реклама
Frezerok
Открыл глаза
Сообщения: 67
Зарегистрирован: Ср мар 17, 2010 21:21:48

Re: Задержка на Attiny

Сообщение Frezerok »

Вот код:

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

#define F_CPU 6000000UL
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
   DDRB = 0x03;
   PORTB = 0x00; 
   
   ADCSRA |= (1 << ADEN)|(1 << ADPS1)|(1 << ADPS0);
   ADMUX |= (0 << REFS0)|(1 << MUX0)|(1 << MUX1);
   
   TCCR0A = (1 << COM0A1)|(0 << COM0A0)|(1 << COM0B1)|(0 << COM0B0)|(1 << WGM01)|(1 << WGM00);
   TCCR0B = (0 << WGM02) |(0 << CS02) |(0 << CS01) |(1 << CS00);
   TCNT0 = 0x00;
   CLKPR = 0x80;
	
	while(1)
    {
        unsigned int u;
		ADCSRA |= (1 << ADSC); 
		while ((ADCSRA&(1 << ADIF))== 0);
		u = (ADCL|ADCH << 8);
		
		if (u < 645) 
		{
			OCR0A = 0;
			OCR0B = 0;
		}	
		if ((u >= 645)&&(u < 665))  // U=3.15V      
		{      
			OCR0A = 77;    
			OCR0B = 0;
		}	
		if ((u >= 665)&&(u < 675))  // U=3.25V             
		{
			OCR0A = 128; 
			OCR0B = 0;
		}	
		if ((u >= 675)&&(u < 685))  // U=3.30V      
		{      
			OCR0A = 204;
			OCR0B = 0;
		}	
		if (u > 685)  // U=3.35V             
		{
			OCR0A = 254;
			OCR0B = OCR0B+1;
			_delay_ms(10);		
				
		}
	
    }
}
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Задержка на Attiny

Сообщение pyzhman »

Вставил сюда:

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

      if (u > 685)  // U=3.35V             
      {
         OCR0A = 254;
         OCR0B = OCR0B+1;
         _delay_ms(10);      
            
      }
   
      _delay_ms(440);
    }
Получил:
Build started 19.1.2012 at 19:10:38
avr-gcc.exe -mmcu=attiny13 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT ttt.o -MF dep/ttt.o.d -c ../ttt.c
avr-gcc.exe -mmcu=attiny13 -Wl,-Map=ttt.map ttt.o -o ttt.elf
avr-objcopy -O ihex -R .eeprom ttt.elf ttt.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex ttt.elf ttt.eep || exit 0
avr-objdump -h -S ttt.elf > ttt.lss

AVR Memory Usage
----------------
Device: attiny13

Program: 212 bytes (20.7% Full)
(.text + .data + .bootloader)

Data: 0 bytes (0.0% Full)
(.data + .bss + .noinit)
AVRS version 4.13 SP2
Docendo discimus
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Re: Задержка на Attiny

Сообщение BerZerK-ku »

Программа разрастается до 3-4кБ , если отключить оптимизацию.
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: Задержка на Attiny

Сообщение a_skr »

с -O2 еще меньше: 20.3% Full
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Задержка на Attiny

Сообщение YS »

А если дизассемблер поглядеть? Что там? С delay и без?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Re: Задержка на Attiny

Сообщение coredumped »

Проблема очевидна - выключена оптимизация. Зайдите а Project -> Properties, В закладке Toolchain -> AVR/GNU C Compiler -> optimization поставьте -Os и будет все гут.
Все будет только лучше, в крайнем случае - хуже.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»