Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 20.02.2013, 14:58  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: НС595 - помогите оптимизировать код

у меня всё подключенно последовательно. Идет 60 светодиодов, после них 1 регистр на сегменты и 3 на общий анод(катод).
Реклама:

Последний раз редактировалось miwutka; 20.02.2013 в 15:11.
miwutka вне форума  
Непрочитано 20.02.2013, 15:22  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: НС595 - помогите оптимизировать код

Код:
//вывод на сдвиговые регистры
void shiftout(char _data){
	PORTB &= ~(1‹‹DATA); //установим ноль на пине данных
	PORTB &= ~(1‹‹ST_CP); //снимем "защелку" 74HC595
	//цикл по битам 74hc595, 0..15 два байта для двух 74HC595
	for (char i=0; i‹=15; i++) {
		if(i‹_data) PORTB |= (1‹‹DATA);
		else PORTB &= ~(1‹‹DATA);
		//обозначим clock
		PORTB |= (1‹‹SH_CP);
		PORTB &= ~(1‹‹SH_CP);
	}
	PORTB |= (1‹‹ST_CP); //установим "защелку" 74HC595
}
вызываем нужное число раз (по колву последовательных регистров), передавая в _data состояние ног регистров от дальнего к ближнему
whoim вне форума  
Непрочитано 20.02.2013, 15:23  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: НС595 - помогите оптимизировать код

от черт, тут для двух регистров
ну суть понятна думаю
- снять защелку
- в цикле передать данные для всех регистров, подергивая клоком
- поставить защелку когда все нужные байты уйдут
whoim вне форума  
Непрочитано 20.02.2013, 15:28  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: НС595 - помогите оптимизировать код

Такое я вставлял в текст, но мк начал ужасно медленно всё это делать... Вставлял текстом а не процедурой... думаю мне лучше подходит по SPI... Надо всётаки с ним разбираться смотрю...
miwutka вне форума  
Непрочитано 20.02.2013, 15:30  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: НС595 - помогите оптимизировать код

miwutka, это и есть односторонний SPI, и скорость работы этого кода в сотни раз превосходит ваши требования. Ищите проблему в другом месте вашей разработки.
От аппаратного spi это отличается по скорости работы незначительно (в вашем случае)
whoim вне форума  
Непрочитано 20.02.2013, 15:35  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: НС595 - помогите оптимизировать код

изза чего жэ тогда может так начинать тормозить МК? как думаете? Если я свои 4 кейса заменяю на 4 for'а(и это все в прерывании которое срабатывает каждые 200 мкс, частота 16 МГЦ ядра) то всё тормозит, а отображение на ЖК выводится спустя минуту ))
miwutka вне форума  
Непрочитано 20.02.2013, 15:36  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: НС595 - помогите оптимизировать код

приведу логический пример. Еще раз. Но более полно.
1) "Снимаем = ставим в 0" защелку (пин ST_CP всех hc595). Они, сохраняя прежнее состояние выходов, готовы к загрузке новых данных.
2) Передаем байт. Например 0b00001000 -
2.1) ставим data в 0 (передаем первый ноль) - ставим-снимаем CLOCK. Дергание CLOCK дает знать HC595-й о том, что состояние пина data есть бит (в нашем случае первый из байта)
2.2) повторяем 2.1 еще два раза (уходят биты 000 справа-налево)
2.3) ставим data в 1 и дергаем CLOCK (уходит единичка
2.4) передаем как в 2.1 оставшиеся нули

Пункт 2 повторяется то число раз, сколько у нас последовательно hc595-х. Первый посланный байт попадает в дальнюю микросхему, последний - в ближнюю. Они побитно через q7 проталкивают данные "дальше" по конвейеру.

3) ставим защелку. Для всех hc595-х это сигнал - данные загружены, активируем их на ноги.

Байт читается (передается) справа-налево.
whoim вне форума  
Непрочитано 20.02.2013, 15:45  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: НС595 - помогите оптимизировать код

switch (Number_disp) - номер цыфры
switch (Num_segm) - включение сегментов
switch (Number) - это одна группа светодиодов 32 шт
switch (tah_LED) - это вторая 32 шт

я управляю динамикой + 64 светодиода... на индикаторах отображаю счетчики и 2 АЦП. АЦП 250 кГц настроил чтоб быстрее обрабатывал без особой точности на 10 бит.
Сейчас еще попробую ваш код воткнуть.....
miwutka вне форума  
Непрочитано 20.02.2013, 15:46  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: НС595 - помогите оптимизировать код

Сообщение от miwutka Посмотреть сообщение
Подскажите...
Я неповерю, что значительно замедлится работа если применить стандартное решение типа нижеследующего (например вывод 30 символов на 24 светодиодный экран)
Код:
const __flash uint8_t symbol[30][3] = {...};

void outsym(uint8_t sym)
{
  const __flash uint8_t *ptr = &symbol[sym];
  uint8_t i, tmp;

  tmp = *ptr++;
  for(i=0; i‹8; i++)
  {
     DATA = tmp & 1;
     tmp ››= 1;
     CLK = 1;
     CLK = 0;
  }
  tmp = *ptr++;
  for(i=0; i‹8; i++)
  {
     DATA = tmp & 1;
     tmp ››= 1;
     CLK = 1;
     CLK = 0;
  }
  tmp = *ptr++;
  for(i=0; i‹8; i++)
  {
     DATA = tmp & 1;
     tmp ››= 1;
     CLK = 1;
     CLK = 0;
  }
}
SasaVitebsk вне форума  
Непрочитано 20.02.2013, 15:49  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: НС595 - помогите оптимизировать код

я тоже не поверил но я вот так и заменил свои 4 кейса как у вас. Только без указателей - я их не понимаю (((
miwutka вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите оптимизировать прогу для ШИМа... miwutka Микроконтроллеры, АЦП, память и т.д 10 27.06.2012 14:19
С код помогите решить проблему 7Fantomas7 Микроконтроллеры, АЦП, память и т.д 33 25.01.2011 16:29
Помогите расшифровать код dizzy Цифровые сигнальные процессоры 7 27.05.2009 20:55
преобразователь код-код zazan111 TTL и CMOS логика 18 05.01.2009 06:11
Помогите переводить код с pic16f84 в 18f242! nhudan Микроконтроллеры, АЦП, память и т.д 12 14.08.2007 13:36


Часовой пояс GMT +4, время: 02:44.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot