Вовсе не обязательно. У графических дисплеев интерфейс как правило SPI или параллельный. Для быстрого вывода картинки последний предпочтителен. А насчет SPI - большое удобство архитектуры MSP430 - это возможность тактирования интерфейса на частоте процессора. Однако, Gxxx - подсемейство начального уровня. В более продвинутых подсемействах (например FR57xxx) имеется DMA, что ощутимо разгружает процессор при выводе на экран.GreatDrek писал(а):В общем под цветной дисплей лучше другой МК брать?
MSP430G2452 и SD карта
Re: MSP430G2452 и SD карта
- Реклама
Re: MSP430G2452 и SD карта
В итоге на Energia получилось сделать не огромный код, принимать любое значение с uart и записывать его в flash
Если нажать 1 начинается запись данных, 2 окончание записи, 3 чтение из памяти, 4 очистка сегмента
Если нажать 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;
}
}
}
}
Re: MSP430G2452 и SD карта
Мда, похоже YS не убедил Вас закончить игры с Energia. Я с ним полностью солидарен.
Re: MSP430G2452 и SD карта
Та нет
Я писал раньше, что отбрасываю энергию, просто я уже начинал писать программу под нее и мне было интересно ее уже дописать до конца, именно как выглядит реализация на энергии, просто не люблю бросать вещи не доделав до конца, все программа дописана ухожу с энергии 
Re: MSP430G2452 и SD карта
Доводить вещи до конца очень хорошее качество! А в остальном - удачи на новом поприще.
- Реклама
Re: MSP430G2452 и SD карта
Я так светодиодный кубик добивал. 
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: MSP430G2452 и SD карта
Тогда тоже молодец
В плане обмена опытом, в качестве "PNP аналогa" ULN2003 я однажды использовал TLC59213, у нее даже защелки есть:
http://mcs.uwsuper.edu/sb/Electronics/BigLED/
А подобную проблему понижения уровня в другом проекте с ОК индикаторами решил с помощью MAX394:
http://mcs.uwsuper.edu/sb/Electronics/HugeLED/
В плане обмена опытом, в качестве "PNP аналогa" ULN2003 я однажды использовал TLC59213, у нее даже защелки есть:
http://mcs.uwsuper.edu/sb/Electronics/BigLED/
А подобную проблему понижения уровня в другом проекте с ОК индикаторами решил с помощью MAX394:
http://mcs.uwsuper.edu/sb/Electronics/HugeLED/
Re: MSP430G2452 и SD карта
Это да, спасибо за наводку на детальки.
Тем не менее, когда мы потом с народом на кружке делали большой кубик 8x8x8, я уже все правильно спроектировал, под ULN2003.
Тем не менее, когда мы потом с народом на кружке делали большой кубик 8x8x8, я уже все правильно спроектировал, под ULN2003.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: MSP430G2452 и SD карта
Расскажите в двух словах, что за кружок Вы ведете, если не секрет.
Re: MSP430G2452 и SD карта
Ответил в ЛС. 
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: MSP430G2452 и SD карта
И опять мои глупые вопросы))
В общем на примере хотя бы той программы которую я сюда скидывал, вот там я записываю информацию в сегмент.
Если я поменяю код, то в принципе можно искать из 64 байтов именно тот, который мне нужен и использовать его.
Так вот, когда я пишу обычную программу и объявляю переменную к примеру byte и назовем ее "one", с этого момента "one" висит где то в памяти и занимает 1 байт.
Когда мне нужно узнать какое число в данный момент храниться в этом "one", процессор выполняет примерно тоже, что я описывал в программе?
То есть можно считать, что я работаю напрямую с памятью как процессор? Или этот уровень далек от уровня процессора?
Как происходит обращение процессора к участку памяти? Это похоже на то что я описывал в программе? Или нет?
В общем на примере хотя бы той программы которую я сюда скидывал, вот там я записываю информацию в сегмент.
Если я поменяю код, то в принципе можно искать из 64 байтов именно тот, который мне нужен и использовать его.
Так вот, когда я пишу обычную программу и объявляю переменную к примеру byte и назовем ее "one", с этого момента "one" висит где то в памяти и занимает 1 байт.
Когда мне нужно узнать какое число в данный момент храниться в этом "one", процессор выполняет примерно тоже, что я описывал в программе?
То есть можно считать, что я работаю напрямую с памятью как процессор? Или этот уровень далек от уровня процессора?
Как происходит обращение процессора к участку памяти? Это похоже на то что я описывал в программе? Или нет?
Последний раз редактировалось GreatDrek Пт июн 28, 2013 22:25:01, всего редактировалось 1 раз.
Re: MSP430G2452 и SD карта
GreatDrek - уважайте тех, кто будет читать Ваши сообщения. Я имею в виду соблюдайте знаки пунктуации и перечитайте сообщения хотя-бы раз перед тем как отправите. Я лично их него ничего не понял. Конечно, процессор будет выполнять именно то, что написано в программе. Но я думаю Вы не это хотели спросить.
Re: MSP430G2452 и SD карта
Извините, так правильней?В общем на примере хотя бы той программы которую я сюда скидывал, вот там я записываю информацию в сегмент.
Если я поменяю код, то в принципе можно искать из 64 байтов именно тот, который мне нужен и использовать его.
Так вот, когда я пишу обычную программу и объявляю переменную к примеру byte и назовем ее "one", с этого момента "one" висит где то в памяти и занимает 1 байт.
Когда мне нужно узнать какое число в данный момент храниться в этом "one", процессор выполняет примерно тоже, что я описывал в программе?
То есть можно считать, что я работаю напрямую с памятью как процессор? Или этот уровень далек от уровня процессора?
Как происходит обращение процессора к участку памяти? Это похоже на то что я описывал в программе? Или нет?
Re: MSP430G2452 и SD карта
Можно, конечно.Если я поменяю код, то в принципе можно искать из 64 байтов именно тот, который мне нужен и использовать его.
Да, именно так.Так вот, когда я пишу обычную программу и объявляю переменную к примеру byte и назовем ее "one", с этого момента "one" висит где то в памяти и занимает 1 байт.
Когда мне нужно узнать какое число в данный момент храниться в этом "one", процессор выполняет примерно тоже, что я описывал в программе?
А как еще процессор может работать с памятью при чтении, если не напрямую?То есть можно считать, что я работаю напрямую с памятью как процессор? Или этот уровень далек от уровня процессора?
Как происходит обращение процессора к участку памяти?
Это похоже на то что я описывал в программе? Или нет?
Re: MSP430G2452 и SD карта
Так, смотрите был выше код программы, в котором я записывал информацию в сегмент и считывал информацию из сегмента.
Тот код компилировался получался набор и из команд которые выполняет процессор.
Можно ли считать что считать, что то что выполняет процессор когда хочет прочитать значение из памяти, оперативной к примеру, похоже на то, что было описано в том коде который я скидывал выше?
Точно так же процессор ищет значение в памяти?
Или ладно, такой вопрос. Где можно почитать о работе процессора с памятью?
Тот код компилировался получался набор и из команд которые выполняет процессор.
Можно ли считать что считать, что то что выполняет процессор когда хочет прочитать значение из памяти, оперативной к примеру, похоже на то, что было описано в том коде который я скидывал выше?
Точно так же процессор ищет значение в памяти?
Или ладно, такой вопрос. Где можно почитать о работе процессора с памятью?
Re: MSP430G2452 и SD карта
Вы, надеюсь, понимаете, что Ваш код написан на языке высокого уровня, который процессор напрямую не поддерживает. И в этом смысле он выполняет другие инструкции, именно такие, какие он поддерживает. Компилятoр преобразует Ваш код в последовательность инструкций процессора. Как именно он это переводит и в какие именно инструкции можно понять, сделав дисассемблирование Вашего кода. Я не знаю, поддерживает-ли Energia эту функцию, IAR поддерживает.
Чтобы лучше понять как работает процессор, следует ознакомиться с его архитектурой, системой команд и методов адресации. Начальные сведения находятся в ДШ на семейство F2xxx.
Чтобы лучше понять как работает процессор, следует ознакомиться с его архитектурой, системой команд и методов адресации. Начальные сведения находятся в ДШ на семейство F2xxx.
Формально - не похоже, поскольку система команд процессора отличается от конструкций языка С.Можно ли считать что считать, что то что выполняет процессор когда хочет прочитать значение из памяти, оперативной к примеру, похоже на то, что было описано в том коде который я скидывал выше?
При чтении байта из памяти процессор ничего не ищет в ней. Адрес байта либо присутствует явно в машинной инструкции, генерируемой компилятором (прямая адресация), либо берется из регистра процессора (косвенная адресация), либо содержится в указале стека, и т.д.Точно так же процессор ищет значение в памяти?
В ДШ. Или сформулируйте точнее вопрос. Мне кажется, что Вы что-то имеете в виду, но недоговариваете. Может опишите к чему эти вопросы?Где можно почитать о работе процессора с памятью?
Re: MSP430G2452 и SD карта
Допустим есть программа в которой говориться, что нужно из одного сегмента данные записать в другой сегмент.
Если я поменяю код, в том коде я руками напишу прочитать значение из первого сегмента, записать его в оперативную память (создать массив в памяти и записать туда к примеру 64 байта), а потом из оперативной памяти записать значения в второй сегмент.
Это будет считаться лишним действием, лишней нагрузкой процессора?
То есть я просто из одного сегмента в другой переношу на прямую информацию. Но понятное дело процессор на прямую не работает с памятью и все операции проходят через оперативную память(вы поняли о чем я)....
Flash.read(flash+i, &p, 1);
...
Flash.write(flashOne+i, &p ,1);
Если я поменяю код, в том коде я руками напишу прочитать значение из первого сегмента, записать его в оперативную память (создать массив в памяти и записать туда к примеру 64 байта), а потом из оперативной памяти записать значения в второй сегмент.
Это будет считаться лишним действием, лишней нагрузкой процессора?
Re: MSP430G2452 и SD карта
Архитектуре MSP430 позволяет в одной машинной инструкции копировать значение из памяти в другое место памяти. Если спрашиваете про нагрузку на процессор, то надо на низком уровне считать число циклов для каждого случая.
Флеш поддерживает 2 режима записи - единичный и блоковый. В первом случае можно писать прямо из флеша во флеш минуя RAM. При этом на время записи ЦПУ будет остановлен и по окончании ее снова запущен. После повторного запуска он может прочитать новое значение из флеша и записать его в другое место. При этом высоковольтный генератор будет включаться при записи каждого байта и на выход на режим ему каждый раз надо порядка 20 (точнее см. секцию 7 в ДШ, я точно не помню) циклов генератора тактирования флеша.
Блоковый режим позволяет включать высоковольтный генератор лишь 1 раз при записи всего блока. Соответтственно, генератору нужно будет только 1 раз выдти на рабочий режим. Однако, т.к. во время работы высоковольтного генератора читать из флеша нельзя, то нужно всю программу записи поместить в RAM и туда-же предварительно перекачать весь массив данных.
В любом случае, во время работы программы запись в флеш должно производиться достаточно редко, т.к. иначе выполнение программы сильно замедлится. В этом слысле для оптимизации нагрузки на процессор во время таких редких явлений нужны весомые причины.
Выход - использовать МК в FRAM и DMA, в этом случае нагрузка на процессор будет минимальной.
Флеш поддерживает 2 режима записи - единичный и блоковый. В первом случае можно писать прямо из флеша во флеш минуя RAM. При этом на время записи ЦПУ будет остановлен и по окончании ее снова запущен. После повторного запуска он может прочитать новое значение из флеша и записать его в другое место. При этом высоковольтный генератор будет включаться при записи каждого байта и на выход на режим ему каждый раз надо порядка 20 (точнее см. секцию 7 в ДШ, я точно не помню) циклов генератора тактирования флеша.
Блоковый режим позволяет включать высоковольтный генератор лишь 1 раз при записи всего блока. Соответтственно, генератору нужно будет только 1 раз выдти на рабочий режим. Однако, т.к. во время работы высоковольтного генератора читать из флеша нельзя, то нужно всю программу записи поместить в RAM и туда-же предварительно перекачать весь массив данных.
В любом случае, во время работы программы запись в флеш должно производиться достаточно редко, т.к. иначе выполнение программы сильно замедлится. В этом слысле для оптимизации нагрузки на процессор во время таких редких явлений нужны весомые причины.
Выход - использовать МК в FRAM и DMA, в этом случае нагрузка на процессор будет минимальной.
Re: MSP430G2452 и SD карта
Можно не писать в программе что нужно использовать оперативную память при перезаписи, но она все равно будет использоваться, а можно написать.
Если написать то это будет лишнее использование оперативной памяти?
Если написать то это будет лишнее использование оперативной памяти?
Re: MSP430G2452 и SD карта
Я не знаю что означает использовать/не использовать память в тех API, что Вы используете. По логике вещей, если написать не использовать RAM, то должно быть побайтное (или пословное) прямое копирование из одного места флеша в другое. Но может это и не так - надо смотреть диассемблированный код. Еще непонятнее, что значит использовать RAM при копировании - API только заведет там промежуточный массив или еще организует вычисление кода процедуры записи из RAM. Я ответа на этот вопрос не знаю. Я-бы написал ассемблерную вставку в программу. Или смотрите точнее документацию или дисассемблированный код.


