Kerajinan



Harga
Deskripsi Produk Kerajinan

Craft adalah demo yang berjalan pada platform demo minimalisnya sendiri. Platform demo berbasis mikrokontroler ATmega88.

Setelah berhasil membuat soundchip dari mikrokontroler bersama teman-teman di kryo, saya ingin mengatasi tantangan yang lebih besar untuk menghasilkan sinyal video realtime bersamaan dengan suaranya. Inilah hasilnya:


(Video ini di youtube)
Download
lft_craft (klip video asli, Xvid, 89,4 MB)
lft_craft_capture (capture video layar penuh, H.264, 85.5 MB)
Linus Akesson - Kerajinan (Soundtrack, MP3, 3.3 MB)
lft_craft_src (Skema, binari firmware dan kode sumber, 70,5 kB)
Adegan reaksi
Kerajinan memenangkan Konsol / Kompo Wild Real di Breakpoint 2008. Saya tidak akan pernah melupakan reaksi yang luar biasa dari penonton!

Inilah halaman Pouët untuk Craft.

Bagaimana cara kerjanya?


Sama seperti komputer rumah rata-rata 80 Anda, keseluruhan desain berpusat pada waktu sinyal video.

Monitor CRT beresolusi VGA berbasis VGA yang khas akan menggambar ulang layar 60 kali per detik menggunakan berkas elektron, yang menyapu layar satu baris setiap kali. Monitor TFT bekerja secara berbeda, namun sinyal VGA masih berdasarkan gagasan balok elektron. Waktu sangat penting: Satu garis tampilan membutuhkan 24 µs, dan diikuti oleh istirahat 7,75 µs yang disebut periode blanking horisontal. Setelah 480 garis seperti itu, ada jeda yang lebih panjang (1428,75 µs, sama dengan 45 garis tampilan penuh) sebelum semuanya dimulai lagi. Dua sinyal digital digunakan untuk menyinkronkan pengirim (kartu grafis, demo hardware dll) dan receiver (monitor). Mereka disebut sinkronisasi horizontal dan sinyal sync vertikal. Tidak apa-apa untuk menyimpang sedikit dari nilai waktu standar selama Anda menjaga sinyal sinkronisasi tetap stabil.

Mikrokontroler diberi clock 20 MHz. Jika kita mengubah angka di atas menjadi siklus clock, kita mendapatkan 480 siklus piksel yang terlihat, 155 siklus blanking horizontal dan 45 garis tampilan penuh yang bernilai pengosongan vertikal - namun selama garis tersebut Anda perlu terus menghasilkan pulsa sinkronisasi horizontal. Karena kesalahan rouding, kita mendapatkan frame rate 59,99 Hz, tapi itu juga berada dalam kisaran toleransi monitor komputer.



Musik
Suara dihasilkan selama periode horisontal. Itu memberikan sample rate 31.496 kHz. Tentu saja, hanya bagian kritis waktu sebenarnya (generasi bentuk gelombang) yang dilakukan selama horisontal blanking. Melodi, irama, amplop amplop, arpeggio dan lain-lain ditangani oleh sebuah playroutine yang dipanggil sekali untuk setiap bingkai video, selama pengosongan vertikal.

Ada empat saluran suara secara total, masing-masing dengan bentuk gelombang tetapnya sendiri. Bentuk gelombangnya adalah segitiga 4-bit, pulsa 50%, pulsa 75% dan white noise. Kebisingan dihasilkan dengan menggunakan register geser 15 bit. Volume setiap saluran dapat dikontrol secara individual, kecuali saluran segitiga, yang selalu diputar pada volume penuh. Softsynth minimalis ini tentu saja terinspirasi oleh chip suara NES.



Video
Terlepas dari sinyal sinkron yang disebutkan di atas, sinyal VGA berisi tiga garis tegangan analog - merah, hijau dan biru - yang bervariasi antara ground dan 0,7 V selama bagian bingkai video yang terlihat. Seperti yang dapat Anda lihat di skematik di bawah ini, saya melakukan konversi digital-ke-analog dua bit untuk masing-masing sinyal ini, dengan menggunakan tangga resistor R-2R. Dengan begitu, perangkat lunak dapat mengubah warna saat ini dalam satu siklus clock dengan menggunakan PORTC, register instruction.

Selain itu, saya telah menghubungkan beberapa dioda dan transistor PNP sedemikian rupa, sehingga ketika pin MOSI rendah sedangkan pin OC2B tinggi, tiga sinyal warna akan ditarik ke voltase tinggi, sesuai putih. Ini digunakan untuk menghasilkan teks gulir resolusi tinggi: Pin MOSI terhubung ke register geser secara internal di AVR (biasanya digunakan untuk transmisi data serial), dan register geser ini dapat diprogram untuk memancarkan urutan 8 bit dengan instruksi tunggal, sehingga membongkar CPU. Smooth scrolling kemudian diimplementasikan dengan memasukkan variable delay sebelum dan sesudah setiap display line, tapi itu saja tidak cukup, karena karakter akan muncul dan hilang tiba-tiba di tepi layar. Jadi tambahan, komparator output yang terhubung ke timer 2 di chip diatur untuk membuat jendela visibilitas menggunakan pin OC2B.

Schematics
Ini adalah bagaimana semuanya cocok bersama, hardware-wise. Jika Anda tertarik dengan tata letak fisik yang digunakan pada papan tempat memotong roti, Anda dapat menemukannya bersama dengan firmware dan kode sumber di dekat bagian atas halaman.

Resistor variabel 1K dapat digunakan untuk mengatur kecerahan teks gulir.

                                 .--- [1K] - + ------- E (PNP) C ------------------- + --- + ---.
                                 | / | \ | B _ | _ _ | _ _ | _
                                 | `---- '| \ / \ / \ /
                                 | | --- --- ---
                                 | --- __---. | | | |
               (untuk programmer) --- RESET | | PC5 ---- [442] ----------- + --- + --- | --- | --- Merah
                                 | | | | .- [220] - '| |
                              (n.c.) PD0 | | PC4 ---- [442] - + - [442] --- GND | |
                                 | | | | | |
            .---------- + - [2K] ----- PD1 | | PC3 ---- [442] ----------- + ------- + --- | --- Hijau
            | .- [1K] - '| | | | .- [220] - '|
            | `- + ------- [2K] ----- PD2 | | PC2 ---- [442] - + - [442] --- GND |
            | `- [2K] - GND | | | | |
            | `- OC2B | | PC1 ---- [442] ----------- + ----------- + - Biru
            `--- [1K] -. | | | .- [220] - '
              .-------- + - [2K] ----- PD4 | | PC0 ---- [442] - + - [442] --- GND
              | | | |
              | VCC | | GND `- [1K] -.
              | | | |
              | GND | | AREF (n.c.) |
              | 22pF | | |
              | GND - || - + - XTAL1 | | AVCC (n.c.) |
              | 20 MHz [] | | |
              | GND - || - + - XTAL2 | | SCK -------------- (untuk programmer)
              `- [1K] -. 22pF | | |
              .-------- + - [2K] ----- PD5 | | MISO ------------- (untuk programmer)
              `- [1K] -. | | |
              .-------- + - [2K] ----- PD6 | | MOSI --------- + --- (untuk programmer)
           + `- [1K] -. | |
     ----) | ------------ + - [2K] ----- PD7 | | OC1B ------------------------------------- HSync
Audio 10uF | |
     --------- GND (n.c.) PB0 | | PB1 -------------------------------------- VSync
                                         `-------- '
Jika Anda ingin belajar lebih banyak, saya sarankan Anda menyelam ke kode sumber, dimulai dengan boot.S, mainloop.S dan asm.S. Bagian yang paling menarik adalah kode siklus-akurat di asm.S.Baca juga: pusat plakat
5 24
Copyright © 2015. OKEbutik Template Allright reserved.