MSP430G2452 и SD карта

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: MSP430G2452 и SD карта

Сообщение Ser60 »

GreatDrek писал(а):В общем под цветной дисплей лучше другой МК брать?
Вовсе не обязательно. У графических дисплеев интерфейс как правило SPI или параллельный. Для быстрого вывода картинки последний предпочтителен. А насчет SPI - большое удобство архитектуры MSP430 - это возможность тактирования интерфейса на частоте процессора. Однако, Gxxx - подсемейство начального уровня. В более продвинутых подсемействах (например FR57xxx) имеется DMA, что ощутимо разгружает процессор при выводе на экран.
Реклама
GreatDrek
Встал на лапы
Сообщения: 81
Зарегистрирован: Чт июн 20, 2013 03:39:19

Re: MSP430G2452 и SD карта

Сообщение GreatDrek »

В итоге на Energia получилось сделать не огромный код, принимать любое значение с uart и записывать его в flash
Если нажать 1 начинается запись данных, 2 окончание записи, 3 чтение из памяти, 4 очистка сегмента
#include "MspFlash.h"

#define flash SEGMENT_D

unsigned char p = 0;
unsigned char inByte = 0;
int key = 0;
int op=0;
boolean zapis = false;

void setup() {
Serial.begin(9600);
int i=0;
do
{
Flash.read(flash+i, &p, 1);
Serial.write(p);
if(p!=255){
op=op+1;
}
} while ( p && (i++ < 63) );
key=op;
}

void loop() {

if(Serial.available() > 0){
inByte = Serial.read();

if(inByte==49){
zapis=true;}
if(inByte==50){
zapis=false;}

if(inByte==51){
int i=0;
Serial.println("Read:");
do
{
Flash.read(flash+i, &p, 1);
Serial.write(p);
} while ( p && (i++ < 63) );
Serial.println(".");
}

if(inByte==52){
Flash.erase(flash);
key=1;
Serial.println("Segment clear");
}

if(zapis==true){
if(inByte==49){}else{
Flash.write(flash+key, &inByte ,1);
key=key+1;
}
}
}
}
Реклама
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: MSP430G2452 и SD карта

Сообщение Ser60 »

Мда, похоже YS не убедил Вас закончить игры с Energia. Я с ним полностью солидарен.
GreatDrek
Встал на лапы
Сообщения: 81
Зарегистрирован: Чт июн 20, 2013 03:39:19

Re: MSP430G2452 и SD карта

Сообщение GreatDrek »

Та нет :) Я писал раньше, что отбрасываю энергию, просто я уже начинал писать программу под нее и мне было интересно ее уже дописать до конца, именно как выглядит реализация на энергии, просто не люблю бросать вещи не доделав до конца, все программа дописана ухожу с энергии :))
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: MSP430G2452 и SD карта

Сообщение Ser60 »

Доводить вещи до конца очень хорошее качество! А в остальном - удачи на новом поприще.
Реклама
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: MSP430G2452 и SD карта

Сообщение YS »

Разница между теорией и практикой на практике гораздо больше, чем в теории.
Реклама
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: MSP430G2452 и SD карта

Сообщение Ser60 »

Тогда тоже молодец :)
В плане обмена опытом, в качестве "PNP аналогa" ULN2003 я однажды использовал TLC59213, у нее даже защелки есть:
http://mcs.uwsuper.edu/sb/Electronics/BigLED/
А подобную проблему понижения уровня в другом проекте с ОК индикаторами решил с помощью MAX394:
http://mcs.uwsuper.edu/sb/Electronics/HugeLED/
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: MSP430G2452 и SD карта

Сообщение YS »

Это да, спасибо за наводку на детальки.

Тем не менее, когда мы потом с народом на кружке делали большой кубик 8x8x8, я уже все правильно спроектировал, под ULN2003. :)
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: MSP430G2452 и SD карта

Сообщение Ser60 »

Расскажите в двух словах, что за кружок Вы ведете, если не секрет.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: MSP430G2452 и SD карта

Сообщение YS »

Ответил в ЛС. :)
Разница между теорией и практикой на практике гораздо больше, чем в теории.
GreatDrek
Встал на лапы
Сообщения: 81
Зарегистрирован: Чт июн 20, 2013 03:39:19

Re: MSP430G2452 и SD карта

Сообщение GreatDrek »

И опять мои глупые вопросы))
В общем на примере хотя бы той программы которую я сюда скидывал, вот там я записываю информацию в сегмент.
Если я поменяю код, то в принципе можно искать из 64 байтов именно тот, который мне нужен и использовать его.
Так вот, когда я пишу обычную программу и объявляю переменную к примеру byte и назовем ее "one", с этого момента "one" висит где то в памяти и занимает 1 байт.
Когда мне нужно узнать какое число в данный момент храниться в этом "one", процессор выполняет примерно тоже, что я описывал в программе?
То есть можно считать, что я работаю напрямую с памятью как процессор? Или этот уровень далек от уровня процессора?
Как происходит обращение процессора к участку памяти? Это похоже на то что я описывал в программе? Или нет?
Последний раз редактировалось GreatDrek Пт июн 28, 2013 22:25:01, всего редактировалось 1 раз.
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: MSP430G2452 и SD карта

Сообщение Ser60 »

GreatDrek - уважайте тех, кто будет читать Ваши сообщения. Я имею в виду соблюдайте знаки пунктуации и перечитайте сообщения хотя-бы раз перед тем как отправите. Я лично их него ничего не понял. Конечно, процессор будет выполнять именно то, что написано в программе. Но я думаю Вы не это хотели спросить.
GreatDrek
Встал на лапы
Сообщения: 81
Зарегистрирован: Чт июн 20, 2013 03:39:19

Re: MSP430G2452 и SD карта

Сообщение GreatDrek »

В общем на примере хотя бы той программы которую я сюда скидывал, вот там я записываю информацию в сегмент.
Если я поменяю код, то в принципе можно искать из 64 байтов именно тот, который мне нужен и использовать его.
Так вот, когда я пишу обычную программу и объявляю переменную к примеру byte и назовем ее "one", с этого момента "one" висит где то в памяти и занимает 1 байт.
Когда мне нужно узнать какое число в данный момент храниться в этом "one", процессор выполняет примерно тоже, что я описывал в программе?
То есть можно считать, что я работаю напрямую с памятью как процессор? Или этот уровень далек от уровня процессора?
Как происходит обращение процессора к участку памяти? Это похоже на то что я описывал в программе? Или нет?
Извините, так правильней?
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: MSP430G2452 и SD карта

Сообщение Ser60 »

Если я поменяю код, то в принципе можно искать из 64 байтов именно тот, который мне нужен и использовать его.
Можно, конечно.
Так вот, когда я пишу обычную программу и объявляю переменную к примеру byte и назовем ее "one", с этого момента "one" висит где то в памяти и занимает 1 байт.
Да, именно так.
Когда мне нужно узнать какое число в данный момент храниться в этом "one", процессор выполняет примерно тоже, что я описывал в программе?
:roll: Конечно. Процессор выполяет именно то, что написано в программе.
То есть можно считать, что я работаю напрямую с памятью как процессор? Или этот уровень далек от уровня процессора?
А как еще процессор может работать с памятью при чтении, если не напрямую?
Как происходит обращение процессора к участку памяти?

:roll: Не понял, что именно хотите спросить. Для меня вопрос звучит слишком глобально, типа "как работает процессор?"
Это похоже на то что я описывал в программе? Или нет?
:roll: Не понял вопроса. Что "Это"?
GreatDrek
Встал на лапы
Сообщения: 81
Зарегистрирован: Чт июн 20, 2013 03:39:19

Re: MSP430G2452 и SD карта

Сообщение GreatDrek »

Так, смотрите был выше код программы, в котором я записывал информацию в сегмент и считывал информацию из сегмента.
Тот код компилировался получался набор и из команд которые выполняет процессор.
Можно ли считать что считать, что то что выполняет процессор когда хочет прочитать значение из памяти, оперативной к примеру, похоже на то, что было описано в том коде который я скидывал выше?
Точно так же процессор ищет значение в памяти?
Или ладно, такой вопрос. Где можно почитать о работе процессора с памятью?
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: MSP430G2452 и SD карта

Сообщение Ser60 »

Вы, надеюсь, понимаете, что Ваш код написан на языке высокого уровня, который процессор напрямую не поддерживает. И в этом смысле он выполняет другие инструкции, именно такие, какие он поддерживает. Компилятoр преобразует Ваш код в последовательность инструкций процессора. Как именно он это переводит и в какие именно инструкции можно понять, сделав дисассемблирование Вашего кода. Я не знаю, поддерживает-ли Energia эту функцию, IAR поддерживает.

Чтобы лучше понять как работает процессор, следует ознакомиться с его архитектурой, системой команд и методов адресации. Начальные сведения находятся в ДШ на семейство F2xxx.
Можно ли считать что считать, что то что выполняет процессор когда хочет прочитать значение из памяти, оперативной к примеру, похоже на то, что было описано в том коде который я скидывал выше?
Формально - не похоже, поскольку система команд процессора отличается от конструкций языка С.
Точно так же процессор ищет значение в памяти?
При чтении байта из памяти процессор ничего не ищет в ней. Адрес байта либо присутствует явно в машинной инструкции, генерируемой компилятором (прямая адресация), либо берется из регистра процессора (косвенная адресация), либо содержится в указале стека, и т.д.
Где можно почитать о работе процессора с памятью?
В ДШ. Или сформулируйте точнее вопрос. Мне кажется, что Вы что-то имеете в виду, но недоговариваете. Может опишите к чему эти вопросы?
GreatDrek
Встал на лапы
Сообщения: 81
Зарегистрирован: Чт июн 20, 2013 03:39:19

Re: MSP430G2452 и SD карта

Сообщение GreatDrek »

Допустим есть программа в которой говориться, что нужно из одного сегмента данные записать в другой сегмент.
...
Flash.read(flash+i, &p, 1);
...
Flash.write(flashOne+i, &p ,1);
То есть я просто из одного сегмента в другой переношу на прямую информацию. Но понятное дело процессор на прямую не работает с памятью и все операции проходят через оперативную память(вы поняли о чем я).

Если я поменяю код, в том коде я руками напишу прочитать значение из первого сегмента, записать его в оперативную память (создать массив в памяти и записать туда к примеру 64 байта), а потом из оперативной памяти записать значения в второй сегмент.
Это будет считаться лишним действием, лишней нагрузкой процессора?
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: MSP430G2452 и SD карта

Сообщение Ser60 »

Архитектуре MSP430 позволяет в одной машинной инструкции копировать значение из памяти в другое место памяти. Если спрашиваете про нагрузку на процессор, то надо на низком уровне считать число циклов для каждого случая.

Флеш поддерживает 2 режима записи - единичный и блоковый. В первом случае можно писать прямо из флеша во флеш минуя RAM. При этом на время записи ЦПУ будет остановлен и по окончании ее снова запущен. После повторного запуска он может прочитать новое значение из флеша и записать его в другое место. При этом высоковольтный генератор будет включаться при записи каждого байта и на выход на режим ему каждый раз надо порядка 20 (точнее см. секцию 7 в ДШ, я точно не помню) циклов генератора тактирования флеша.

Блоковый режим позволяет включать высоковольтный генератор лишь 1 раз при записи всего блока. Соответтственно, генератору нужно будет только 1 раз выдти на рабочий режим. Однако, т.к. во время работы высоковольтного генератора читать из флеша нельзя, то нужно всю программу записи поместить в RAM и туда-же предварительно перекачать весь массив данных.

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

Выход - использовать МК в FRAM и DMA, в этом случае нагрузка на процессор будет минимальной.
GreatDrek
Встал на лапы
Сообщения: 81
Зарегистрирован: Чт июн 20, 2013 03:39:19

Re: MSP430G2452 и SD карта

Сообщение GreatDrek »

Можно не писать в программе что нужно использовать оперативную память при перезаписи, но она все равно будет использоваться, а можно написать.
Если написать то это будет лишнее использование оперативной памяти?
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: MSP430G2452 и SD карта

Сообщение Ser60 »

Я не знаю что означает использовать/не использовать память в тех API, что Вы используете. По логике вещей, если написать не использовать RAM, то должно быть побайтное (или пословное) прямое копирование из одного места флеша в другое. Но может это и не так - надо смотреть диассемблированный код. Еще непонятнее, что значит использовать RAM при копировании - API только заведет там промежуточный массив или еще организует вычисление кода процедуры записи из RAM. Я ответа на этот вопрос не знаю. Я-бы написал ассемблерную вставку в программу. Или смотрите точнее документацию или дисассемблированный код.
Ответить

Вернуться в «Разные вопросы по МК»