Почему именно это? Просто всегда хотел сделать свое устройство, полностью запрограммированное мной на котором можно будет поиграть
MSP430G2452 и SD карта
Re: MSP430G2452 и SD карта
Вообще к чему вся эта тема, в конце (не обязательно на этом МК) хочу подключить к нему экран кнопки, написать примитивную игру, а Flash нужен что бы там хранить например какие то игровые достижения.
Почему именно это? Просто всегда хотел сделать свое устройство, полностью запрограммированное мной на котором можно будет поиграть
Почему именно это? Просто всегда хотел сделать свое устройство, полностью запрограммированное мной на котором можно будет поиграть
- Реклама
Re: MSP430G2452 и SD карта
Если у Вас в программе имеется интенсивная работа с записью во флеш, попробуйте семейство MSP430FRxxx с ферро-магнитной памятью. Там для записи байта/слова в память не надо стирать весь блок и специальной процедуры записи не надо. В С прото операции присваивания с синтаксисом записи в RAM записывают в любое место FRAM. Красота! Не говоря уже о том, что FRAM выдерживает на несколько порядков больше перезаписей чем FLASH. Кстати, любопытно, что последний писк фирмы - модель MSP430FR5969 семейства Wolverine можно заказать на настоящий момент только в России через Compel ! Их серийный выпуск намечен позже в этом году, а пока все остальные страны могут попробовать их через семплы. Я, помню, долго охотился за ними - семплы появляются и их тут-же все растребывают - это не контроллеры а "полный атас". Но в Росии, похоже, ни у кого к ним интереса пока нет, 10 штук через Compel доступны уже несколько месяцев.GreatDrek писал(а):Просто не удобно что нельзя очистить один байт из сегмента
GreatDrek - Ваше стремление похвально. Шаг за шагом к реализации игры и придете. Кстати, игру уже выбрали?
Re: MSP430G2452 и SD карта
Логический платформер с генерацией карты, мало кода надо, мало места занимать будет, ведь еще надо будет написать работу с экраном и т.д.GreatDrek - Ваше стремление похвально. Шаг за шагом к реализации игры и придете. Кстати, игру уже выбрали?
Re: MSP430G2452 и SD карта
Я про такую не слышал. Это что-то типа этого?
http://gamer.livejournal.com/388189.html
Как я понял, Вы пока "тренируетесь на кошках", т.к. сдается мне что такая игра не под F2452.
http://gamer.livejournal.com/388189.html
Как я понял, Вы пока "тренируетесь на кошках", т.к. сдается мне что такая игра не под F2452.
Re: MSP430G2452 и SD карта
Представим что у нас экран 20 на 20 пикселей(это для удобства объяснения), герой у нас к примеру пиксель которого мы передвигаем вперед, можем прыгать к примеру и т.д.
Так вод есть двадцать пикселей с низу экрана, герой наш на самом деле всегда стоит на месте, то есть по центру экрана, а вот если мы говорим пройти в перед на один шаг в перед ( на один пиксель) то те 20 которые у нас были сдвигаются в лево, остается 19 из двадцати которые были, а новый пиксель который должен появиться может рандомно появиться на разной высоте, к примеру в трех разных пикселях по высоте, это делается в коде так--- к примеру делаем таймер который каждые 100мс обнуляется, по кругу до 100 и снова в 0, делим 100мс на 4, получаем по 25 мс, и говорим что если в тот момент когда вы нажали переместиться таймер был <25 то на высоте 1 появиться пиксель, если >25 && <50 то на высоте 2 пикселя, >50 && <75 3пиксель, ну а >75 && <100 то вообще не создавать пиксель, всю логику до конца я не продумывал так как пока не будет экрана и всего нет смысла придумывать полностью игру, надо работать уже с теми вещами что у меня буду и выжимать из них максимум.
Пиксель это абстрактно, на практике же нарисовать человечка и разнообразней ландшафт и добавить логический элемент, чтото на подобии надо переместить кубики так что бы можно было пройти дальше а не окончательно завалить проход.
Кстати я сейчас под G2553 программирую.
Да кстати вспомнил, что такого типа игру я уже делал но только с светодиодной матрицей, у меня лежали светодиоды, скрутил я их на матрицу 5 на 5, но 5 светодиодов очень мало для понимания что происходит на экране если не ты написал там происходящее
Единственное что нормально на той матрице выглядело - это синусоида и эквалайзер, но за то на примере той матрицы я понял как работает развертка в мониторах.
Так вод есть двадцать пикселей с низу экрана, герой наш на самом деле всегда стоит на месте, то есть по центру экрана, а вот если мы говорим пройти в перед на один шаг в перед ( на один пиксель) то те 20 которые у нас были сдвигаются в лево, остается 19 из двадцати которые были, а новый пиксель который должен появиться может рандомно появиться на разной высоте, к примеру в трех разных пикселях по высоте, это делается в коде так--- к примеру делаем таймер который каждые 100мс обнуляется, по кругу до 100 и снова в 0, делим 100мс на 4, получаем по 25 мс, и говорим что если в тот момент когда вы нажали переместиться таймер был <25 то на высоте 1 появиться пиксель, если >25 && <50 то на высоте 2 пикселя, >50 && <75 3пиксель, ну а >75 && <100 то вообще не создавать пиксель, всю логику до конца я не продумывал так как пока не будет экрана и всего нет смысла придумывать полностью игру, надо работать уже с теми вещами что у меня буду и выжимать из них максимум.
Пиксель это абстрактно, на практике же нарисовать человечка и разнообразней ландшафт и добавить логический элемент, чтото на подобии надо переместить кубики так что бы можно было пройти дальше а не окончательно завалить проход.
Кстати я сейчас под G2553 программирую.
Да кстати вспомнил, что такого типа игру я уже делал но только с светодиодной матрицей, у меня лежали светодиоды, скрутил я их на матрицу 5 на 5, но 5 светодиодов очень мало для понимания что происходит на экране если не ты написал там происходящее
Единственное что нормально на той матрице выглядело - это синусоида и эквалайзер, но за то на примере той матрицы я понял как работает развертка в мониторах.
Последний раз редактировалось GreatDrek Сб июн 22, 2013 23:19:51, всего редактировалось 1 раз.
- Реклама
Re: MSP430G2452 и SD карта
Ясно. Я из-за любопытства спросил. Единственная игра, в проект которой я был вовлечен когда-то - эта:
http://mcs.uwsuper.edu/sb/327/Projects/2008/Race/
Может и Вам чего-то попроще выбрать для начала.
http://mcs.uwsuper.edu/sb/327/Projects/2008/Race/
Может и Вам чего-то попроще выбрать для начала.
Re: MSP430G2452 и SD карта
Ser60 писал(а):Ясно. Я из-за любопытства спросил. Единственная игра, в проект которой я был вовлечен когда-то - эта:
http://mcs.uwsuper.edu/sb/327/Projects/2008/Race/
Может и Вам чего-то попроще выбрать для начала.
Дописал уже после вашего ответаДа кстати вспомнил, что такого типа игру я уже делал но только с светодиодной матрицей, у меня лежали светодиоды, скрутил я их на матрицу 5 на 5, но 5 светодиодов очень мало для понимания что происходит на экране если не ты написал там происходящее
Единственное что нормально на той матрице выглядело - это синусоида и эквалайзер, но за то на примере той матрицы я понял как работает развертка в мониторах.
Re: MSP430G2452 и SD карта
Тогда удачи! Будут вопросы по 430 - поможем.
Re: MSP430G2452 и SD карта
Спасибо, сейчас разбираю синтаксис IAR, все таки переубедили отбросить EnergiaSer60 писал(а):Тогда удачи! Будут вопросы по 430 - поможем.
Re: MSP430G2452 и SD карта
И правильно. Energia - для детей и девочек.отбросить Energia
В IAR нет какого-то совсем особого синтаксиса. Единственно только объявления прерываний:Спасибо, сейчас разбираю синтаксис IAR
Код: Выделить всё
#pragma vector = <название вектора, объявленное в заголовочнике для МК и указанное в доках>
__interrupt void <название функции-обработчика, какое Вам больше нравится>(void)
А если Вы, например, хотите, чтобы линкер сразу поместил Вашу структуру, например, с сейвами игры, в нужный сегмент, сделать это можно через #pragma location. Указываете адрес, куда положить, - и все, оно будет там.
Все. Остальное - стандартный ANSI C. Боже упаси Вас писать под МК на C++ и заводить объекты!
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: MSP430G2452 и SD карта
Понял, не пытаться делать объектно ориентированное программирование на МК 
Re: MSP430G2452 и SD карта
Ну, тут разговор не столько об ООП вообще, сколько о его конкретной реализации. Но вообще да, ООП - вотчина систем с гигабайтами памяти и гигагерцами вычислительной мощности. Порождение объекта, да еще, не приведи Господь, динамического, отжирает кучу памяти и требует кучу ненужной возни процессора.
Да, тип float/double тоже не надо использовать там, где нет FPU. Софтовые манипуляции с плавающей точкой страшно все замедляют и раздувают код.
Да, тип float/double тоже не надо использовать там, где нет FPU. Софтовые манипуляции с плавающей точкой страшно все замедляют и раздувают код.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: MSP430G2452 и SD карта
Я понимаю что вопрос тупой
Но все же перед окончательным уходом от Energia хочу понять что не так то.
Есть код
Вот если я так пишу то в память записывается abcde
Но если я возьму и приму с uart букву 'c' к примеру, а ее код из
Мне просто интересно понять почему не правильно записывается информация с uart в память.
Есть код
static char drek[][1]= {'a','b','c','d','e'};
...
for(int i=0; i<5; ++i){
Flash.write(flash+key, (unsigned char*) drek ,1);
++key;
}
...
Вот если я так пишу то в память записывается abcde
Но если я возьму и приму с uart букву 'c' к примеру, а ее код из
равен 99 и напишу в прогеinByte = Serial.read();
то при чтении я получаю не 99 а 135 вроде и не понятный символFlash.write(flash+key, (unsigned char*) inByte ,1);
Мне просто интересно понять почему не правильно записывается информация с uart в память.
Re: MSP430G2452 и SD карта
В общем если не тяжело будет ответьте пожалуйста.
Re: MSP430G2452 и SD карта
UART не при чем, это магия указателей.почему не правильно записывается информация с uart в память.
Код: Выделить всё
static char drek[][1]= {'a','b','c','d','e'};
Во втором случае
Код: Выделить всё
inByte = Serial.read();
Код: Выделить всё
Flash.write(flash+key, (unsigned char*) inByte ,1);
Правильно было бы
Код: Выделить всё
Flash.write(flash+key, inByte ,1);
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: MSP430G2452 и SD карта
Стало понятно, но только так как вы сказали было бы правильно нельзя записать, так как программа ругается и говорит что перед записью в ячейку значение надо перевести в char.
Re: MSP430G2452 и SD карта
Если функции write() нужен поинтер на char, попробуйте так:
Код: Выделить всё
Flash.write(flash+key, (unsigned char*) &inByte ,1);Re: MSP430G2452 и SD карта
Э, а какого типа inByte изначально?перед записью в ячейку значение надо перевести в char
Похоже все же не поинтер, а само число, ибо там идет обращение к элементу массива:Если функции write() нужен поинтер на char
Код: Выделить всё
(uint8_t *)array[i]
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: MSP430G2452 и SD карта
inByte у меня типа Byte, но я делал его и типа char и типа unsigned char толку ноль, unsigned я так понял из типа убирает все возможные результаты с минусом, тоесть если байт значения от -128 до 127 то unsigned byte будет от 0 до 255, в общем все то что выписали не помагает я все перепробывал уже, я еще делал так,
char test[][1]={};
...
test[1]=inByte;
...
Flash.write(flash+key, (unsigned char*) test[1] ,1);
...
и толку ноль.
В общем не понятно.
char test[][1]={};
...
test[1]=inByte;
...
Flash.write(flash+key, (unsigned char*) test[1] ,1);
...
и толку ноль.
В общем не понятно.
Re: MSP430G2452 и SD карта
В чем смысл такой записи? Почему не char test[1]={} ?char test[][1]={};
Ошибка. Элемента с номером 1 в массиве с одним элементом нет. Нумерация начинается с нуля.test[1]=inByte;
Правильно:
Код: Выделить всё
uint8_t test[1];
...
test[0]=inByte;
...
Flash.write(flash+key,test[0] ,1);
...
Разница между теорией и практикой на практике гораздо больше, чем в теории.


