реклама на сайте
подробности

 
 
6 страниц V  < 1 2 3 4 5 > »   
Reply to this topicStart new topic
> Как последовательно вытаскивать биты из массива?
мега16
сообщение Dec 28 2010, 12:58
Сообщение #31


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 26-12-10
Пользователь №: 61 893



Ну все ясно,работает правильно,вот в интернете шрифт нашел-попробовал,буква "А"-отражается нормально,правда повернуто-ну это понятно-шрифт для бегущего луча-т.е. для динамической индикации,я хочу собрать схему со статической.Главное-нормально работает код,все равно самому шрифт сделать придется,потому что 8 рядов светодиодов мало,хочу 16 сделать. Вот пример буквы "А"-
Код
my_type code[]={0x30,0x78,0xCC,0xCC,0xFC,0xCC,0xCC,0x00};


Спасибо большое всем.

Сообщение отредактировал мега16 - Dec 28 2010, 23:30
Go to the top of the page
 
+Quote Post
мега16
сообщение Jan 5 2011, 08:47
Сообщение #32


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 26-12-10
Пользователь №: 61 893



Продолжаю тему. Решил так организовать вывод символов на табло- для каждого символа функция показанная выше, символы ,какие надо вывести, записываю в массив(очень желательно в еепром,так как туда можно будет потом писать снаружи через усарт), вытаскиваю из массива символы и подставляю функции,соответствующие символам.
Если так-
Код
char mass[]={"a,b,c"};
-все нормально выводит, а если-
Код
eeprom char mass[]={"a,b,c"};
-то ничего не происходит, не могу понять..
Вот такой код-
Код
   void read_stroka(){unsigned int i;
for(i=0; i<sizeof(mass); i++){
switch(mass[i]){
   case 'a': cifra0(); break;
   case 'b': cifra1(); break;
   case 'c': cifra2(); break;
   }
}
}


Сообщение отредактировал мега16 - Jan 5 2011, 08:50
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 5 2011, 08:52
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Содержимое EEPROM располагается в своем собственном/отдельном адресном пространстве и доступ к EEPROM осуществляется через регистры модуля EEPROM.
Go to the top of the page
 
+Quote Post
мега16
сообщение Jan 5 2011, 08:53
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 26-12-10
Пользователь №: 61 893



Хм, а попонятнее можно,как же мне быть?
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 5 2011, 08:55
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(мега16 @ Jan 5 2011, 16:53) *
Хм, а попонятнее можно,как же мне быть?
Написать функцию извлечения данных из EEPROM, если таковой нет в библиотеке, сопутствующей вашему компилятору.
Go to the top of the page
 
+Quote Post
мега16
сообщение Jan 6 2011, 12:33
Сообщение #36


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 26-12-10
Пользователь №: 61 893



Вообще то CVAVR работает с EEPROM прозрачно-
Код
eeprom chap x;
x=1;
y=x;
-это нормально работает, а вот с массивом- нет, или Протеус это не понимает, на железе не проверял.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 6 2011, 18:04
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(мега16 @ Jan 6 2011, 20:33) *
Вообще то CVAVR работает с EEPROM прозрачно-
...это нормально работает, а вот с массивом- нет
В приведенном вами примере все действительно прозрачно. Константа препроцессором или оптимизатором компилятора переносится прямо в EEPROM. Проблема-то у вас не в этом, а в прямом доступе к памяти EEPROM при обращении к переменным, расположенным там. Почитайте наконец об архитектуре МК, его адресном пространстве и о различиях в типах и областях расположения данных.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jan 6 2011, 20:01
Сообщение #38


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(rezident @ Jan 7 2011, 00:04) *
В приведенном вами примере все действительно прозрачно. Константа препроцессором или оптимизатором компилятора переносится прямо в EEPROM.
Насколько я могу судить, CV сам использует функции чтения записи при обращении к EEPROM данным (не константам). Таким образом, для пользователя предоставляется прозрачный механизм работы с EEPROM по аналогии с обычными переменными в ОЗУ.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 6 2011, 20:13
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Ну я же написал выше, что при наличии библиотечных функций все просто. При отсутствии их нужно написать свои. По сути дела данные, расположенные во внутренней EEPROM, мало чем отличаются от данных, располагающихся во внешней м/с EEPROM.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jan 7 2011, 07:05
Сообщение #40


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



to мега16 приведите asm-листинг такого кода:
Код
char str1[] = "0123456789";
eeprom char str2[] = "0123456789";
for (uint8_t i=0; i<10; i++)
{
    PORTB = str1[i];
    PORTA = str2[i];
}


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
мега16
сообщение Jan 8 2011, 02:36
Сообщение #41


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 26-12-10
Пользователь №: 61 893



CVAVR на uint8_t ругается.
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Jan 8 2011, 07:16
Сообщение #42


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



#include <stdint.h>


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
мега16
сообщение Jan 8 2011, 08:45
Сообщение #43


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 26-12-10
Пользователь №: 61 893



Ругается все равно.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 8 2011, 10:56
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(мега16 @ Jan 8 2011, 10:36) *
CVAVR на uint8_t ругается.

Цитата(мега16 @ Jan 8 2011, 16:45) *
Ругается все равно.

Ничего удивительного. CodeVision это такой недокомпилятор, использующий свою собственную интерпретацию стандарта языка Си. laughing.gif

Go to the top of the page
 
+Quote Post
мега16
сообщение Jan 8 2011, 14:21
Сообщение #45


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 26-12-10
Пользователь №: 61 893



На другом форуме посоветовали- надо объявить массив eeprom глобальным, с необходимым размером, без инициализации. В main присвоить нужные значения элементам. И так работает.
Go to the top of the page
 
+Quote Post

6 страниц V  < 1 2 3 4 5 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 09:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.0142 секунд с 7
ELECTRONIX ©2004-2016