Ось уявіть собі ви тихо-мирно набираєте текст на комп'ютері. Поступово починаєте помічати, що періодично на клавіатурі починають знаходитесь у скрутному становищі випадкові літери. Спочатку це не особливо напружує, але через деякий час починає дуже дратувати :-) Ви змінюєте клавіатуру на іншу, але проблема не зникає. Перевіряєте комп'ютер всіма можливими антивірусами але всі зусилля ні до чого не приводять і проблема не вирішується. Зрештою перевстановлення операційної системи. Але і після цього нічого не змінюється. Через деякий час ви виявляєте підозрілу «флешку»
Слід звернути увагу на те, що на платі і на схемі відведено проводок від PC0. Природно виникає питання для чого це потрібно. А потрібно це для ініціалізації генератора випадкових чисел. За ідеєю є функція random () яка повертає випадкове число, але вона нам не зовсім підходить. Справа в тому, що функція робить свою справу, але послідовність генеруються випадкових чисел буде кожен раз однакова. Щоб хоч якось її змінити потрібно перед викликом функції random, викликати srandom і передати їй будь-яке випадкове число. Для генерації такого випадкового числа я вирішив використовувати. АЦП! У двох молодших бітах регістра даних АЦП як правило завжди знаходиться всякий випадкове сміття. Ось це сміття якраз і використовує моя функція GetRndDigit (). Вона 8 разів зчитує молодший біт АЦП і запихає біт за бітом в змінну. У функції є один недолік. Що б отримувати якісні випадкові числа, потрібно перед зчитуванням в черговий раз першого біта АЦП, робити затримку. В результаті функція виповнюється занадто тривалий час. Саме тому вона викликається тільки один раз щоб ініціалізувати генератор випадкових чисел. Проводок на платі від Піна PC0 потрібен щоб краще ловити наведення і тим самим поліпшити генерацію випадкових чисел. Я використовував мікроконтролер в корпусі TQFP-32 виключно для мініатюрності. Можна без проблем увіткнути і в DIP корпусі головне пам'ятати, що нумерація висновків інша! Для створення цього девайса була принесена в жертву флешка JetFlash на 128 мегабайт. Хустки у мене вийшла ось такий:
Ніяких налаштувань девайс не вимагає. Досить просто прошити контролер і запаяти детальки. Потрібно тільки не забути виставити фьюз мікроконтролера на тактирование від кварцового резонатора. Можна доопрацювати пристрій, приробити до нього пару кнопок і зробити так щоб при натисканні друкувалися цілі фрази. Ну або ще що-небудь придумати адже вихідні є. До речі про исходниках. Дана розробка заснована на коді компанії Objective Development. Я просто трохи допив схему і програму.
файли проекту
P.S. на фотке плата з не великою помилкою. схема і печатка в файлі - правильні