Форумы Modlabs.net: Com + pic16f84 + LCD +???? +4 свободные ноги.... идеи есть? - Форумы Modlabs.net

Перейти к содержимому

  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Com + pic16f84 + LCD +???? +4 свободные ноги.... идеи есть?

#21 Пользователь офлайн   dynaco 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 231
  • Регистрация: 20 Октябрь 03

Отправлено 18 Ноябрь 2003 - 14:09

добил клаву наконец-то :)
определил на чтение одну ногу а припаялся к другой ( соседней ) :(
клава работает.
имхо, длительность импульсов сканирования не суть важна, главное чтобы опрос клавы производился не реже раза в четверть секунды :gigi: опять же имхо
0

#22 Пользователь офлайн   Константин 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 312
  • Регистрация: 05 Август 03

Отправлено 18 Ноябрь 2003 - 15:37

МАЛАДЦА!!! кинь в меня схемой и исходниками......... studimp@mail.ru
0

#23 Пользователь офлайн   listener 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 618
  • Регистрация: 08 Май 03

Отправлено 19 Ноябрь 2003 - 00:41

dynaco
IMHO, писать на асм имеет смысл только для очень критичных вещей. В большинстве случаев, у компилятора можно отыграть 2-3 процента быстродействия ценой гораздо большего количества затраченных усилий. А для большинства CISC писание на асме превращается в жуткий кошмар, например, для моторол HC08, у которых всего два регистра.

Константин
А если за время ожидания нажата другая кнопка? Например, нажимаются две кнопки одновременно, одна обрабатывается раньше другой. Как-то это все медленно получается.
0

#24 Пользователь офлайн   dynaco 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 231
  • Регистрация: 20 Октябрь 03

Отправлено 19 Ноябрь 2003 - 01:11

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

программно я клаву делал так
устанавливаем столбик и почти сразу считываем колонку: если нажата кнопка - делаем паузу, и снова проверяем: если таки нажата - устанавливаем первый бит временного регистра , если нет сбрасываем бит и сбрасываем столбик, далее второй столбик и второй бит, и так до восьми, потом - проверяем равен ли временный регистр выходному
если да - повторяем сканирование ( можно оформить подпрограммой )
если нет присваеваем выходному значение временного ( тут можно и счетчик организовать - если новое значение держится 2-3 сканрования - записывать )

алгоритм не идеален. я видел просто супер код - сканирование битов с использованием инструкций
bsf row1
btfss column1
retlw 'button1'
btfss column2
retlw 'button2'
имхо супер


Константин ээээ, оно на работе - клава приведена в рабочее состояние, но не дописана до окончательного применения ( сканкод я имею ). в общем пришлю что смогу =)
0

#25 Пользователь офлайн   listener 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 618
  • Регистрация: 08 Май 03

Отправлено 19 Ноябрь 2003 - 01:47

dynaco
С софтом-то какие проблемы: практически все производители софта для разработки под микроконтроллеры раздают триальные версии с достаточно приемлемыми ограничениями. Для AVR, вдобавок, есть GCC. Библиотеки тоже есть.

Вот пример в тему (тестовый, поэтому об эффективности заботы не было).
Обработчик таймера. В нем опрос кнопок и софтовый ШИМ.


#pragma interrupt_handler timer0_ovf_isr:10

void timer0_ovf_isr(void) {

	u8 i, c;

	

	TCNT0 = 0x83; //reload counter value

	

	// опрашиваем кнопки

	c = PIND;

	for (i = 0; i < BUTTON_COUNT; i++) {

		struct button * b = buttons+i;

		if ((c&buttonMask[i]) != b->value) {

			// состояние кнопки изменилось

			b->value = c&buttonMask[i];

			b->processed = 0;				

			b->ticks = 0;

			continue;				 

		}

		// состояние кнопки осталосьь тем же

		if (b->processed) 

			continue;   // кнопка уже обработана

		if (++(b->ticks) > 4) {

			// состояние кнопки не менялось уже 1ms, можно ее и обработать

			u8 cl = i >> 1;  // номер кулера

			b->processed = 1;

			if (b->value) // если кнопку отпустили - ничего не делаем

				continue;				

			if (i & 1) {

				// '+'

				if (coolers[cl] < 8)

					coolers[cl]++;

			} else {

				// '-'

				if (coolers[cl] > 0)

					coolers[cl]--;

			}

			

			// вывести значение на светодиоды

			PORTC = ledMask[coolers[cl]];	

			// TODO: записать в соответствующий регистр									 

		}			

	}

	// TODO: включить/выключить все кулеры

	output = coolers[0] > phase ? 0xFF : 0xBF;

	phase++;

	phase &= 7;	 

	

	PORTB = output;				

}

0

#26 Пользователь офлайн   Константин 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 312
  • Регистрация: 05 Август 03

Отправлено 19 Ноябрь 2003 - 13:03

listener мы делаем не промышленную весч а так для себя, я не заморачиваясь ответил, но мона было и подумать.......

всем: Ребята а пики дорогие................. надо перелазить на другие.........
0

#27 Пользователь офлайн   listener 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 618
  • Регистрация: 08 Май 03

Отправлено 19 Ноябрь 2003 - 18:32

Константин
А я что - промышленную? Промышленные вещи я делаю несколько более сложные и несколько в другую сторону, а это так, для души, развлечься после работы.

Я закупаюсь: ATmega8 - ~$3-4, ATmega16 - ~$5-6 (аналогичные пики, примерно вдвое дороже). моторолки с USB - ~$5-6.
0

#28 Пользователь офлайн   Константин 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 312
  • Регистрация: 05 Август 03

Отправлено 20 Ноябрь 2003 - 11:13

listener поясни на счёт моторолок с юсб, они его имеют или через него программируются? на кафедре просто интересовались........... а, да и насколько быстрый юсб получается, а то есть конверторы в рс232 и в лпт, так там всё ммммеееедддллллеееееееенноооооооооооо..................
0

#29 Пользователь офлайн   listener 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 618
  • Регистрация: 08 Май 03

Отправлено 20 Ноябрь 2003 - 12:22

Константин MC68HC908JB8 c low-speed USB. Чистый кристалл программируется по 1-wire, через него же доступаются к внутреннему отладчику. USB-bootloader описан в Application Note 2398.
Скорость - типичная для low-speed (1000 пакетов в секунду, 8 байт бакет - порядка 8 кБ/с). Если хочется больше, нужно брать full-speed контроллер. Как способ подключить что-то не очень быстрое к USB - проще придумать трудно.

Кстати, копался ночью в документации - нашел реализацию I2C для x51 (и опрос клавиатуры, и еще кое-какие мелочи). Нужно?
0

#30 Пользователь офлайн   Константин 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 312
  • Регистрация: 05 Август 03

Отправлено 20 Ноябрь 2003 - 17:28

listener клаву я и сам писал компактно, хотя посмотреть мона, и2с давай, хоть у филлипсов которые ковыряем и так встроенный контроллер, в общем всё давай, мона и линку кинуть..... пасиба!

Цитата

Чистый кристалл программируется по 1-wire, через него же доступаются к внутреннему отладчику.

это чего такое???
0

#31 Пользователь офлайн   listener 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 618
  • Регистрация: 08 Май 03

Отправлено 21 Ноябрь 2003 - 22:51

Константин
выложено (что было под рукой):
http://listener.fata.../tmp/AN1820.pdf - мотороловский пример по работе с I2C
http://listener.fata...mp/AN1820SW.zip - исходники к нему
http://listener.fatal.ru/tmp/AN554.pdf - AppNote от микрочипа по реализации I2C master
http://listener.fatal.ru/tmp/kbd44.zip - работа с матрицей 4x4, x51 контроллер
http://listener.fatal.ru/tmp/mouse.zip - переходник PS/2-USB, использует USB контроллер на I2C, x51.

1-wire - полудуплексный RS-232. Получается, если TX подключется через диод к RX и подтягивается к Vcc (уровень сигналов - TTL).
0

#32 Пользователь офлайн   Константин 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 312
  • Регистрация: 05 Август 03

Отправлено 22 Ноябрь 2003 - 18:37

listener спасибо, поглядим........
0

#33 Пользователь офлайн   Константин 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 312
  • Регистрация: 05 Август 03

Отправлено 22 Ноябрь 2003 - 18:37

listener спасибо, поглядим........
0

Поделиться темой:


  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

3 человек читают эту тему
0 members, 3 guests, 0 anonymous users