МК ATtiny261 простая программа не помесщается в памяти

Обсуждаем контроллеры компании Atmel.
Ответить
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Ср мар 23, 2022 01:17:37

Сообщение Sergiusz »

Здравствуйте уважаемые форумчане. Я совсем зеленый новичок, хочу научиться программировать МК т сразу столкнулся с проблемой.
Взялся за освоение AVR Studio, начал понемногу изучать язык Си для AVR. Нашей учебник, и на МК ATMEGA8L понемногу изучаю. Использую Proteus, и с МК ATMEGA8 все идет нормально.
Но вот решил то же самое проверить на МК Attiny261, потому что их у меня 10 шт. не жалко если одна испортится. И столкнулся с такой проблемой, начал с простейшей программы мигание светодиода. В AVR Studio нормально получил файл типа Hex. Но вот когда агчал его проверять на Proteuse, то ничего не идет, выдается сообщение что объем программы не умещается в памяти МК. И ни в какую не проходит даже простейшая прорамма.
Правда объем памяти Attiny261 2 кбайта, а файл Imia.hex около 9 кбайт. Но ведь это простейшая программа - мигает один светодиод. И она не помещается в памяти????
Вот текст на Си:
/*
* AVRGCC1.c
*
* Created: 18.03.2022 7:12:07
* Author: Admin
*/

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

int main(void)
{
DDRB = 0xFF;
PORTB = 0b00000000;
while(1)
{
PORTB |= (1<<(PORTB0));
_delay_ms(500);
PORTB &= ~(1<<(PORTB0));
_delay_ms(500);
}

}
А что будет если пробовать зашить программу мигания гирлянды светодиодов ???
Что-то тут не так.
Очень прошу помощи, разобраться в чем дело, и как заставить МК Attiny261 принять такой простой код.
Реклама
Нашел транзистор. Понюхал.
Сообщения: 158
Зарегистрирован: Сб апр 24, 2021 18:42:11

Сообщение phalanx »

Нет ничего криминального в программе. Приведите полный ответ компилятора - линкера.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18675
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

размер HEX-файла не должен никак вас пугать, он ни о чем не говорит. смотрите выхлоп программы avr-size - после компиляции она обязательно вызывается и показывает, сколько реально памяти отъела программа.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

[uquote="Sergiusz",url="/forum/viewtopic.php?p=4202351#p4202351"]...что объем программы не умещается в памяти МК...[/uquote]
Скинь сюда скриншот протеуса с этим сообщением. Подозреваю, что не тот файл указываешь для мк.
Docendo discimus
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Ср мар 23, 2022 01:17:37

Сообщение Sergiusz »

Вот так ругается Протеус:
ISIS Release 8.06.02 (Build 23525) (C) Labcenter Electronics 1990- 2017.
Compiling design 'E:\AVR-projekty\Atmega261\test02\Test03.pdsprj'.
Netlist compilation completed OK.
Netlist linking completed OK.
Partition analysis completed OK.
Simulating partition [AC81A74A]
PROSPICE 8.04.00 (Build 21720) (C) Labcenter Electronics 1993-2017.
Loaded netlist 'C:\DOCUME~1\Admin\USTAWI~1\Temp\LISA8842.SDF' for design 'Test03.pdsprj'
AVR Release 8.3SP0 build 22019 for ATTINY261. [U2]
Loading HEX file 'test02\Debug\test02.hex'. [U2]
Program file is too big for the microcontroller: flash size = 2048, load address = 2048, number of bytes = 16.
Real Time Simulation failed to start.

Последние 2 строки красным

А вот это сообщение компилятора:
------ Build started: Project: test02, Configuration: Debug AVR ------
Build started.
Project "test02.avrgccproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files\Atmel\AVR Studio 5.0\Vs\AvrGCC.targets" from project "E:\AVR-projekty\Atmega261\test02\test02\test02.avrgccproj" (target "Build" depends on it):
Using "RunAvrGCC" task from assembly "C:\Program Files\Atmel\AVR Studio 5.0\Vs\AvrGCCLib.dll".
Task "RunAvrGCC"
C:\Program Files\Atmel\AVR Studio 5.0\AVR ToolChain\bin\make.exe all
AVR Memory Usage
----------------
Device: attiny261
Program: 3360 bytes (164.1% Full)
(.text + .data + .bootloader)
Data: 8 bytes (6.2% Full)
(.data + .bss + .noinit)
Done executing task "RunAvrGCC".
Done building target "CoreBuild" in project "test02.avrgccproj".
Target "PostBuildEvent" skipped, due to false condition; ('$(PostBuildEvent)' != '') was evaluated as ('' != '').
Target "Build" in file "C:\Program Files\Atmel\AVR Studio 5.0\Vs\Avr.common.targets" from project "E:\AVR-projekty\Atmega261\test02\test02\test02.avrgccproj" (entry point):
Done building target "Build" in project "test02.avrgccproj".
Done building project "test02.avrgccproj".

Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========

Посмотрел объем программы, действительно 3360 байт, а в Аттины261 помещается только 2000 байт.
Но почему такая короткая программа скомпилированная занимает так много места ???
Последний раз редактировалось Sergiusz Чт мар 24, 2022 11:18:26, всего редактировалось 1 раз.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18675
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Sergiusz писал(а):Program: 3360 bytes (164.1% Full)
вот тут и порылась собачка, вы заметили уже
Sergiusz писал(а):Но почему такая коротнаяпрогиамма скомпилированная занимает так много места ???
наверное, потому, что вы не включили оптимизацию... рекомендую включить -Os и приятно удивиться.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Ср мар 23, 2022 01:17:37

Сообщение Sergiusz »

Не нашел как включить оптимизацию. Мне подсказали что вроде включается из меню проект:
Project->Configuration Options->Optimization->Os
Но в моем AVR Studio версии "5" нет такой опции. Перекопал все меню подряд, и нигде не нашел оптимизации.
БЕДА!!!!!
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

Sergiusz, Плохо ищете
есть даже в четвертой студии
Изображение
Вложения
studio4.jpg
(69.31 КБ) 373 скачивания
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Ёпрст! Да такая программа и без оптимизации должна занимать с гулькин нос.
Docendo discimus
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Программа в первом сообщении, использующая Arduino IDE и ATTinyCore для Аttiny261:
Скетч использует 104 байт (5%) памяти устройства. Всего доступно 2048 байт.
Глобальные переменные используют 0 байт (0%) динамической памяти, оставляя 128 байт для локальных переменных. Максимум: 128 байт.
SpenceKonde/ATTinyCore
https://github.com/SpenceKonde/ATTinyCore

Скопируйте и распакуйте архив в
C:\Users\...\Documents\Arduino\hardware

Выберите свой микроконтроллер и и использовайте. Для программирования: Arduino IDE и ArduinoISP, из примеров. Никаких внешних программ и внешних программаторов. Все через USB. Все бесплатно.
---
Тест в Proteus (старая версия v8.3). Светодиод мигает.
Вложения
pr.jpg
(88.2 КБ) 74 скачивания
sketch_mar25a.zip
(18.28 КБ) 169 скачиваний
261.jpg
(213.07 КБ) 69 скачиваний
Контактная информация:
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Сообщение Novice user »

veso74, вопрос был ни чем скомпилировать,а про размер прошивки
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Вот мой AVR Studio 5 что выдал:
Device: attiny261
Program: 104 bytes (5.1% Full)
(.text + .data + .bootloader)
Но без математической функции выдавал ошибки. Пришлось лапами вставить:

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

#define F_CPU 8000000UL

#include <avr/io.h>
#include <math.h> // вставлено мною
#include <util/delay.h>


int main(void)
{
DDRB= 0xFF;
PORTB= 0b00000000;
while(1)
{
PORTB|= (1<<PORTB0);
_delay_ms(500);
PORTB&= ~(1<<PORTB0);
_delay_ms(500);
}	
}
Docendo discimus
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18675
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

pyzhman писал(а):Но без математической функции выдавал ошибки.
:shock: :shock: :shock: :shock:
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Сам в шоке. Причем мой предыдущий проект, использующий эту библиотеку, норм. А этот даже переписал лапами и тем не менее пришлось вкорячить. Пока не разбирался в чём засада.

Добавлено after 4 minutes 55 seconds:
Отключил оптимизацию:
Device: attiny261
Program: 1184 bytes (57.8% Full)
(.text + .data + .bootloader)
Docendo discimus
Контактная информация:
Ответить

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