Перейти к содержанию
    

Мастер стартового кода для IAR

Не судите строго, перехожу на IAR (по отзывам наибелее используемый) с AtmanAVR.

Подскажите, кто чем формирует стартовый код для проекта (на C, C++) в IAR, оччень надо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не судите строго, перехожу на IAR (по отзывам наибелее используемый) с AtmanAVR.

Подскажите, кто чем формирует стартовый код для проекта (на C, C++) в IAR, оччень надо.

Руками.

_EXTERN_C char __low_level_init() {
  /* Add your custom setup here. */
    PORTD = (0<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(1<<1)|(1<<0);    //Tx = high, pull-ups on inputs
    DDRD  = (1<<7)|(1<<6)|(1<<5)|(1<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);

    PORTC = (0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(0<<1)|(0<<0);
    DDRC =  (1<<6)|(1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(1<<0);

    PORTB = (0<<7)|(0<<6)|(1<<5)|(1<<4)|(1<<3)|(0<<2)|(0<<1)|(0<<0);    // turn on pull-up on MANUAL_PROG

    UBRRH = ((unsigned)(OSC / (8.0 * RS_BAUDRATE) - 0.5) >> 8) & 0x0F;
    UBRRL = ((unsigned)(OSC / (8.0 * RS_BAUDRATE) - 0.5) >> 0) & 0xFF;
    UCSRA = (1<<U2X);
//    UCSRB = (1<<RXCIE)|(0<<TXCIE)|(0<<UDRIE)|(1<<RXEN)|(1<<TXEN)|(0<<UCSZ2);
    UCSRC = (1<<URSEL)|(0<<UMSEL)|(0<<UPM1)|(0<<UPM0)|(0<<USBS)|(1<<UCSZ1)|(1<<UCSZ0);

    TCCR0 = (1<<CS02)|(0<<CS01)|(0<<CS00);    // OSC / 256

    TCCR1A = (0<<COM1A1)|(0<<COM1A0)|(1<<COM1B1)|(0<<COM1B0)|(0<<WGM11)|(0<<WGM10);
    TCCR1B = (0<<ICNC1)|(0<<ICES1)|(1<<WGM13)|(0<<WGM12)|(0<<CS12)|(0<<CS11)|(1<<CS10);
    ICR1 = OSC / 64000UL / 2;
    OCR1B = 0;//OSC / 64000UL / 2 * 3.2 / 5;
    

    TIMSK = (0<<OCIE2)|(0<<TOIE2)|(0<<TICIE1)|(0<<OCIE1A)|(0<<OCIE1B)|(0<<TOIE1)|(1<<TOIE0);

    SPCR = (0<<SPIE)|(0<<SPE)|(0<<DORD)|(0<<MSTR)|(0<<CPOL)|(0<<CPHA)|(0<<SPR1)|(0<<SPR0);
    SPSR = (0<<SPI2X);
  /* Return 1 to indicate that normal segment */
  /* initialization should be performed. If   */
  /* normal segment initialization should not */
  /* be performed, return 0.                  */
    return 1;
}
_END_EXTERN_C

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если имеется в виду C_startup, то он уже есть в библиотеке (предкомпилирован).

В случае необходимости может быть изменён, исходник находится в \avr\src\lib (файл надо в этом случае включить в проект).

Если же имелся в виду именно мастер периферии, то это отдельное приложение IAR MakeApp. Скачивается бесплатно с сайта производителя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Руками.

 

Не хотелось бы перелопачивать даташиты, но по ходу, придется руками все делать, как Вы и советуете.

Но все же, может от чего другого подходит мастер? Пытался от AtmanAVR файлы приспособить - ругается на заголовочные файлы - у IAR оказ-ся все совсем по другому.

IAR-овский мастер уж как-то запутанно делает и нет автоматического подключения к проекту.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не хотелось бы перелопачивать даташиты....

 

:biggrin: Пять баллов за эту фразу на этом форуме.

 

Дело в том, что даташиты это основные документы для разработки проекта. И от того насколько Вы понимаете что пишете, - напрямую зависит сколько Вы будете отлаживать проект. На этом форуме если Вас куда-нибудь и пошлют .... то только к даташитам. :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело в том, что даташиты это основные документы для разработки проекта. И от того насколько Вы понимаете что пишете, - напрямую зависит сколько Вы будете отлаживать проект. На этом форуме если Вас куда-нибудь и пошлют .... то только к даташитам. :biggrin:

 

На 100% согласен, только когда приходится держать все названия регистров в голове, отвлекаешься от алгоритма и можно ненароком потерять ту мысль, которая наконец-то осенила ум. Без знания даташитов никуда, однако, приятно, когда за тебя софт помнит все названия (особенно правильность написания) - мелочь, а какая приятная!

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На 100% согласен, только когда приходится держать все названия регистров в голове, отвлекаешься от алгоритма и можно ненароком потерять ту мысль, которая наконец-то осенила ум. Без знания даташитов никуда, однако, приятно, когда за тебя софт помнит все названия (особенно правильность написания) - мелочь, а какая приятная!

#include <ioavr.h>

Project->Compile

в дереве проекта под файлом появляется список включенных файлов. Там будет ioavr.h и файл с описанием регистров конкретного процессора (например iom8.h). Вот последний и открываем, в нем и смотрим названия регистров/битов. Ведь компилятор свои знания о названиях регистров/битов берет оттуда.

 

Но более всего тяжело упомнить в каком заголовочном файле прописана та или иная нужная тебе функция или макрос - вот в чем суть моей проблемы, я думаю, со мной согласятся те, кто с начинает осваивать IAR
хм. Я в 90% случаев использую три: <ioavr.h> - описание sfr и <inavr.h> - функции __enable_interrupt(), __disable_interrupt() и т.п., <stdint.h> - платформеннонезависимые типы данных. Если вдруг мне понадобилась библиотечная функция - поиск файла содержащего строку в каталоге \IAR\AVR\INC или google->имя функции. Три раза поискал, на четвертый помню что putchar() живет в stdio.h Все остальные заголовочные файлы мои, завязанные на проект, о них компилятор (оболочка) в любом случае не будет знать ничего дополнительного каким бы умным он не был.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Глянте на Iar.com там я видел прогу MakeUp для генеразии настройки мк. Мне он не понравился и я им не стал пользоваться. Мне лучше в даташит слазить чем потом разбираться в чем проблема.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуй ICCAVRIDE от imagecraft. (www.imagecraft.com)

Изменено пользователем GPP

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Глянте на Iar.com там я видел прогу MakeUp для генеразии настройки мк.

 

Посмотрел - слишком замудрено выходит, так все переделывать я б не стал - потому не понравилось.

 

Попробуй ICCAVRIDE от imagecraft. (www.imagecraft.com)

 

Я решил IAR освоить - тут его больше почитают, значит и поддержки больше будет.

 

Всем спасибо за ответы - буду привыкать руками все делать, пару раз все сдела, потом копией и правкой исходников. Еще раз СПАСИБО всем!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там есть мастер настройки периферии. Выбираешь МК, задаешь тактовую частоту, конфигурируеш переферию, после этого копируеш код, созданный мастером, и все. Только прерывания нужно немного подредактировать. Рекомендую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...