BLACK; }else{ kk = 0; str = 0; } str++; break; case 0: delay_us(32); shortsi(shortsyncB); kk = 1; break; case 1: shortsi(shortsyncB); delay_us(4); shortsi(shortsyncB); kk = 2; break; case 2: shortsi(shortsyncB); delay_us(4); shortsi(shortsyncB); kk = 4; break; case 4: longsi(); delay_us(4); longsi(); kk = 5; break; case 5: longsi(); delay_us(4); longsi(); kk = 6; break; case 6: longsi(); delay_us(4); shortsi(shortsyncB); kk = 7; break; case 7: shortsi(shortsyncB); delay_us(4); shortsi(shortsyncB); kk = 8; break; case 8: shortsi(shortsyncB); delay_us(4); shortsi(shortsyncB); kk = 3; break; } }
поэтому с каждым тактом байт загруженный в регистр SPDR с двигается и бит слева или справа (в зависимости от настроек) выводится на вывод MOSI Виталий (аka ВитГо)
сейчас я буду писать еще один модуль вывода изображения, попробую написать его на СИ, правда среду разработки буду использовать бесплатную (WinAVR) Виталий (аka ВитГо)
угу, этот сайт я видел, он даже есть в полезных ссылках...
но там самое интересное не показано (только есть ссылка что есть такое), а на сайт выложены уж совсем простые моменты.. да и если честно не очень оптимально там написана генерация сигналов кадровой синхронизации Виталий (аka ВитГо)
гм.. ну в принципе как я и ожидал: несмотря на то что использовался СИ - код во многом генериться при помощи инлайнового ассемблера.. если еще учесть что автор сам пишет про нелинейность по вертикали - становиться совсем не интересно :-(
возможно все таки нужно подобные вещи писать более изощренно, а не влоб..
плюс генерация строчных данных через сдвиг в портA - вообще ужас какой то.. в принципе как экспериментальный проект пойдет конечно, но можно было бы еще подумать и сделать через SPI