Re: Вопросы по С/С++ (СИ)
Добавлено: Пн дек 23, 2013 17:11:27
У IAR и Keil есть версии без ограничения по времени, но с ограничением размера кода в 30 Кб, что для большинства задач более-чем достаточно.
не для моих будущих, увыmenzoda писал(а):У IAR и Keil есть версии без ограничения по времени, но с ограничением размера кода в 30 Кб, что для большинства задач более-чем достаточно.
Eclipse+GCCdzrkot писал(а):как быть?
В приведенном коде есть только создание текстбокса, создания кнопок я не вижу. И зачем кнопку наследовать от формы? Рисуете кнопки там же, где и текстбоксChip115 писал(а):При такой структуре в проекте только текст_бокс.
Это типа, хочу не как все, сам не знаю зачем, поможите люди добрые? Ерундой не занимайтесьChip115 писал(а):В общем создавать формы в дизайнере не для меня и потому пытаюсь научиться создавать форму " в ручную".
Для крупных коммерческих проектов, предлагаю приобрести IARdzrkot писал(а):не для моих будущих, увы
Вы пишете в область памяти, которая линкером выделена для другой секции. Из-за этого и проблемы. Для таких вещей, которые вам нужны есть область infomem, в нее и пишите.pokk писал(а):Наверное можно как-то в файле линкера добавить секцию и тд.. но мне не сильно охота его изменять.
Да, ерундой занимаюсь, но разобраться хочется ))BCluster писал(а): Это типа, хочу не как все, сам не знаю зачем, поможите люди добрые? Ерундой не занимайтесь
Код: Выделить всё
using System.IO;
using System.Data;
using System.Drawing;
class Program
{
public static void Main()
{
MyForm Calc = new MyForm();
Calc.Height = 300;
Calc.Width = 200;
Calc.Text = "Calculator";
Application.Run(Calc);
}
}
class MyForm : Form
{
private Button[] btn;
public MyForm()
{
TextBox txtBox = new TextBox();
txtBox.Parent = this;
btn = new Button[1];
btn[0].Parent = this; // тут ругань
}
}
Это что же за проекты, что не влезут в 30 кБ?не для моих будущих, увы
там 4кб для msp430 на сайте написано, про покупку уже не ко мне...)YS писал(а):Это что же за проекты, что не влезут в 30 кБ?не для моих будущих, увы![]()
Это должно быть что-то очень серьезное и коммерческое. Для таких IAR и приобрести не грех.
Хм. Для ARM 30Kb. Я думал для всех архитектур одно ограничение.dzrkot писал(а):там 4кб для msp430 на сайте написано
А с чего бы ей не быть тут, если в btn[0] ничего нет? Т.е. массив есть, но пустой.Chip115 писал(а): btn[0].Parent = this; // тут ругань
Код: Выделить всё
bnt[0] = new Button();БываетYS писал(а):Это что же за проекты, что не влезут в 30 кБ?
Более-менее сложный интерфейс вы "объявлять в коде" будете часами. В дизайнере я это сделаю за 5 минут. И результат ничем отличаться не будет.menzoda писал(а):А так вообще я сам дизайнер не люблю. Мне проще и понятней в коде все объявить. Жалко только, что современные инструменты и фреймворки уже практически не позволяют это сделать
pokk писал(а):Как в компиляторе IAR при компиляции разместить структуру по определённому адресу ?
делаю вот так вотКод: Выделить всё
#pragma location=0x080E0000 NETCONF NetConf123={1,2,3,4};вроде всё нормально компилятор не ругается но и не размешает по заданному адресу возможно из за того что NetConf123 не где не используется.Код: Выделить всё
typedef struct _NETCONF { unsigned char mac[6]; unsigned long int IP; unsigned int port; unsigned long int gateway; unsigned long int Mask; NET_SNMP SNMP; unsigned char bord_status; unsigned long int IP_list[4]; }NETCONF;
Этой переменной хочу просто выделить область памяти в которой будут хранится настройки.
При старте программы я из этой области читаю настройки в переменную NetConf (которая находится в озу) и дальше работаю с ней. А в случае когда надо сохранить настройки пишу из NetConf в NetConf123.
А когда пытаюсь считать NetConf123 в главном цикле то выскакивает ошибка
Наверное можно как-то в файле линкера добавить секцию и тд.. но мне не сильно охота его изменять.Код: Выделить всё
Error[Lp025]: absolute section .data (main.o #128) ([0x080e0000-0x080e004b]) overlaps with absolute section .data (main.o #117) ([0x080e0000-0x080e004b])
Можно по подробнее про infomem что-то не нашёл такое.BCluster писал(а):Вы пишете в область памяти, которая линкером выделена для другой секции. Из-за этого и проблемы. Для таких вещей, которые вам нужны есть область infomem, в нее и пишите.
Код: Выделить всё
Sector 11 0x080E 0000 - 0x080F FFFF 128 Kbytes
Код: Выделить всё
/*###ICF### Section handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x08000000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x08000000;
define symbol __ICFEDIT_region_ROM_end__ = 0x080FFFFF;
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__ = 0x20020000;
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x400;
define symbol __ICFEDIT_size_heap__ = 0x200;
/**** End of ICF editor section. ###ICF###*/
define memory mem with size = 4G;
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
initialize by copy { readwrite };
do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
place in RAM_region { readwrite,
block CSTACK, block HEAP };Код: Выделить всё
void shim_start()
{
ASSR=0x00;
// Установим биты COM1A1-COM1A0:0b10,означает сброс вывода канала A при сравнении Clear OC1A/OC1B on Compare Match, set OC1A/OC1B at BOTTOM (non-inverting mode), for Fast PWM. page135
TCCR1A |= (1 << COM1A1)|(0 << COM1A0)|(0 << WGM11)|(1 << WGM10);
// Установим биты WGM13-10:0b0101, согласно таблице это будет режим - Fast PWM, 8-bit, где верхний предел счета задается битом ICR1. page136
TCCR1B |= (0 << WGM13)|(1 << WGM12)|(1 << CS12)|(0 << CS11)|(0 << CS10);
// Битами CS12-10:0b100 задаем источник тактового сигнала для таймера МК, clkI/O/256 (From prescaler)=31250Hz. page137
TCNT1 = 0x00; // начальная установка счетчика
TIMSK1=0x00;
ICR1 = 0x20; //0x20; задаем период ШИМ, здесь у нас число 255,
// по формуле fPWM=fclk_I/O/N*(1+ICR1) вычисляем частоту ШИМ, она будет равна 8MHz/256(1+2)=10416Hz
OCR1A = 0x50; //0x50; начальный коэффициент заполнения ШИМ 0xC8=200, 0x50=1/3
}
Код: Выделить всё
void shim_stop()
{
ASSR=0x00;
TCCR1A |= (0 << COM1A1)|(0 << COM1A0)|(0 << WGM11)|(0 << WGM10);
TCCR1B |= (0 << WGM13)|(0 << WGM12)|(0 << CS12)|(0 << CS11)|(0 << CS10);
TCNT1 = 0x00; // начальная установка счетчика
TIMSK1=0x00;
ICR1 = 0x00; //0x20; задаем период ШИМ, здесь у нас число 255,
OCR1A = 0x00; //0x50; начальный коэффициент заполнения ШИМ 0xC8=200, 0x50=1/3
}
service47 писал(а):Не останавливается ШИМ на ATmega88PA, как остановить?
Код: Выделить всё
TCCR1A |= (0 << COM1A1)|(0 << COM1A0)|(0 << WGM11)|(0 << WGM10);
TCCR1B |= (0 << WGM13)|(0 << WGM12)|(0 << CS12)|(0 << CS11)|(0 << CS10);
Код: Выделить всё
TCCR1A=0;
TCCR1B=0;