Форум myROBOT.ru » Шаг за шагом » Программирование микроконтроллеров » Программирование микроконтролера

Страниц (1): [1]
 

1. Bar_Duck13 - 28 Января, 2008 - 07:50:21 - перейти к сообщению
Я ещё не начал программировать микроконтролер, а меня терзают смутные сомнения. Собственно из сомнений вытекают следующие вопросы:
    поддерживает ли С++ вещественные типы?
    поддерживает ли С++ массивы, записи?
    поддерживает ли С++ строкавые типы?
    а рекурсию?

Догадываюсь, что там нет объектного подхода, да это и понятно.[/list]
2. VCOM - 28 Января, 2008 - 09:26:30 - перейти к сообщению
Цитата:
поддерживает ли С++ вещественные типы?

Да. К примеру IAR точно.
Цитата:
поддерживает ли С++ массивы, записи?

Да
Цитата:
поддерживает ли С++ строкавые типы?

да
Цитата:
а рекурсию?
Догадываюсь, что там нет объектного подхода, да это и понятно.

Ну ткт смотря какой процессор и какой С... Например для АРМ все это вполне есть... Какие собсно контроллеры хотите программировать?
3. Bar_Duck13 - 28 Января, 2008 - 13:57:40 - перейти к сообщению
Виноват, простите. Уточняю. Все вопросы к статьям "Простейший робот на 1 микросхеме" и соответственно к микроконтроллерам семейства AVR.
4. VCOM - 29 Января, 2008 - 08:58:36 - перейти к сообщению
Вот собсно пример IAR embedded c++ AVR:

#include <iom32.h>
#include <stdio.h>

typedef struct
{
int PartNumber;
float Price;
} PartType;

class BaseClass
{ private:
int x; //Data member
int y; // Data member
public:
BaseClass()
{
x = 0;
y = 0;
}
~BaseClass()
{}
int Add()
{
return x+y;
}
};

double a,b;
char mass[16];
PartType Part;
BaseClass NewClass;

int main()
{
//Вот собсно вещественные числа
a=0.0025;
b=123.456;
a=a*b;

//массив
for(unsigned char i=0;i<16;i++)
{
mass[i]=i*2;
}

//структура
Part.PartNumber=0;
Part.Price=a;

//Вот ваша ооп...
a=NewClass.Add();

return 0;
}
Насчет строк, там есть класс стринг, но мне лениво с ним разбиратсо... Поставьте да поиграйтесь Ж)))) Вот так то 21 век на дворе Ж)))
5. Bar_Duck13 - 29 Января, 2008 - 10:13:06 - перейти к сообщению
Сп-А-с-И-б-О!!!! Мне стало легче и жизнь снова наладилась. Улыбка Теперь можно и приступать к задуманному.
6. VCOM - 29 Января, 2008 - 10:38:10 - перейти к сообщению
Да всегда пжалста. Там поищите описание IAR AVR embedded c++. Там есть какие-то ограничения, я чесна гря не в курсе... Сам простой С пользую. Есть еще IAR AVR Extended embedded c++, там еще меньше ограничений... Вот чтоб эти 2 языка в IAR стали доступны нужно выбрать библиотеку DLIB... Иначе только простой С будет... Вот спрашивайте если чего. А что собсно собрались делать такое если не секрет?
7. Bar_Duck13 - 30 Января, 2008 - 06:30:39 - перейти к сообщению
У меня есть кое-какие азы в электронике. Сам я - программист. Вот хочу пошагово, как в примерах, собрать робота, а дальше есть где мне развернуться. Улыбка Так что пока всё тривиально. В принципе, всё готово. Осталось программатор собрать. Улыбка
8. VCOM - 30 Января, 2008 - 07:58:40 - перейти к сообщению
Понятно. Ну если хотите развернутся, да еще и с ооп, сразу могу посоветовать взять ATMEGA32, вот там действительно можно развернуться Ж))) Если чего, спрашивайте, помогу чем смогу...
9. Bar_Duck13 - 31 Января, 2008 - 07:20:24 - перейти к сообщению
Ещё раз спасибо. Дойдём и до ATMEGA32, ATMEGA64, ATMEGA128 (а дальше цены резко растут!!!). Улыбка Но начинать надо с азов. Запущу робота из примера, вникну как работает, и, наверняка, ещё не раз попрошу о помощи... Улыбка
10. VCOM - 31 Января, 2008 - 10:20:40 - перейти к сообщению
Просто Mega32 она в обычном дипе есть, а вот 64 и 128 они только в ткуфп, т.е. либо платку под них делать, либо плату - переходник покупать Ж))) Спрашивайте если чего Ж)))
11. Bar_Duck13 - 11 Февраля, 2008 - 15:38:43 - перейти к сообщению
OK. Возник ещё вопрос. Если МК содержит flash-память, то можно ли как нибудь записывать свои данные в эту память, чтобы использовать их при следующем включении?
12. gramozeka - 11 Февраля, 2008 - 20:40:43 - перейти к сообщению
Есть энергонезависимая память. EEPROM , можно использовать память программ, в которой можно хранить константы, например поисковые таблицы. Есче есть возможность самопрограмирования. Во флэше есть область загрузчика, камень может сам править или например стереть программу. Вообчще, чтобы работать с МК надо знать их архетектуру.
13. VCOM - 12 Февраля, 2008 - 08:13:16 - перейти к сообщению
Для того чтобы записывать / читать данные в / из flash, смотри команды ассемблера lpm (Load Program Memory) и spm (Store Program Memory) Там правда память страницами пишется... Внутренняя eeprom- какашко редкостное, для поделок куда еще не шло, а для чего-то серьезного совсем не годится Ж))) Как практика показывает если объемы не большие и скорости особой не надо, лучше всего на шину i2c повесить память типа 24C256... Если же нужна скорость и большие объемы, то самое лучшее решение- это карты памяти типа MMC и иже с ними. Вешаются на spi, я лично с ними на 8 Мбит/сек работал- все на ура Ж)))
14. Ivanchik - 13 Сентября, 2008 - 22:48:58 - перейти к сообщению
Bar_Duck13 пишет:
поддерживает ли С++ вещественные типы?
поддерживает ли С++ массивы, записи?
поддерживает ли С++ строкавые типы?
а рекурсию?
Bar_Duck13 пишет:
У меня есть кое-какие азы в электронике. Сам я - программист. Вот хочу пошагово, как в примерах, собрать робота, а дальше есть где мне развернуться. Так что пока всё тривиально. В принципе, всё готово. Осталось программатор собрать.

И на каком языке вы программитуете если не секрет?