Самодельная графическая приставка
-
Вадиматоричик
- Грызет канифоль
- Сообщения: 299
- Зарегистрирован: Пн май 16, 2011 10:54:32
- Откуда: Красноярск
Re: Самодельная графическая приставка
Здравствуйте, уважаемые коты! И вот я вернулся. У меня есть просто море новостей. Но чтобы вам не мучиться, я сделал их максимально краткими. И так - начнем.
Какие я себе ставил цели после того, как написал свое последнее сообщение здесь.
1) Выучить русский. Нашел репетитора и за год, перед сдачей экзамена (ГИА) выучил русский так, что сдал на 5 (90%).
2) Прочесть книгу, которую мне посоветовали выше. Прочел ее не с 1-го раза. 1-й раз прочел около 120 страниц и остановился за одну главу до начала самого интересного. Приступил к дальнейшему чтению лишь через пол года. Книга оказалась отличной! Но об этом ниже.
3) Выучить хоть 1 язык программирования. Выполнено. (Об этом тоже ниже)
4) Выполнить хоть 1 проект от и до. Выполнено!
А теперь обо все по порядку. Если отбросить все детали, то получится так.
1. Прочел книгу до 120-й странице.
2. Узнал об языке Pascal.
3. Написал первую программу на Pascal.
4. Изучил весь язык вдоль и поперек.
5. Написал Арканоид в текстовом и графическом режимах.
6. Узнал о microPascal-е. И тот понеслась!
7. Написал игру "Волк и яйца". С железом под Atmega 8. Но после решил, что 3.4 кб памяти - это много! Да и использовать SPI - глупо. С ним, кстати, разобрался с 1-й минуты прочтения статьи. Но через год.
8. Узнал о CodeVision под AVR и языке C.
9. Очень сложно мне давалось пересесть с microPascal на C. Уж очень! Помогло лишь то, что в С есть функция обращения к пинам как, например A=PINB.3; Записать в 2-х режимную переменную значение ножки №3. Но усложняло жизнь то, что это фокус CV. AVR Studio этого не поддерживает вообще. Пришлось учиться пользоваться командами "И, ИЛИ, НЕ". Но со временем все получилось.
10. Были многократные попытки выучить ассемблер. Но безуспешно. После Pascal - это ужасно сложно! Так как он является языком высокого уровня и то, что в Pascal-е делается в 2 клика, в ассемблере нужно в ручную прописывать. Со временем хочу научиться все таки.
11. Собрал конструктор состоящий из: Пленочной клавиатуры (Самодельной), 7-seg-ментного индикатора + HC595, модуль под программатор с выводами.
Вот такая получилась игрушка (В прикрепленном файле код под CV и схема Proteus).
А теперь о книжке. Огромное спасибо за нее! Прочел. Это была 1-я книжка. В последствие прочел еще парочку, но они были меньше. И того теперь у меня есть опыт работы с МК во Flowcode, СV, Avr Studio и microPascal. И на компьютере Delphi и Pascal.
Какие я себе ставил цели после того, как написал свое последнее сообщение здесь.
1) Выучить русский. Нашел репетитора и за год, перед сдачей экзамена (ГИА) выучил русский так, что сдал на 5 (90%).
2) Прочесть книгу, которую мне посоветовали выше. Прочел ее не с 1-го раза. 1-й раз прочел около 120 страниц и остановился за одну главу до начала самого интересного. Приступил к дальнейшему чтению лишь через пол года. Книга оказалась отличной! Но об этом ниже.
3) Выучить хоть 1 язык программирования. Выполнено. (Об этом тоже ниже)
4) Выполнить хоть 1 проект от и до. Выполнено!
А теперь обо все по порядку. Если отбросить все детали, то получится так.
1. Прочел книгу до 120-й странице.
2. Узнал об языке Pascal.
3. Написал первую программу на Pascal.
4. Изучил весь язык вдоль и поперек.
5. Написал Арканоид в текстовом и графическом режимах.
6. Узнал о microPascal-е. И тот понеслась!
7. Написал игру "Волк и яйца". С железом под Atmega 8. Но после решил, что 3.4 кб памяти - это много! Да и использовать SPI - глупо. С ним, кстати, разобрался с 1-й минуты прочтения статьи. Но через год.
8. Узнал о CodeVision под AVR и языке C.
9. Очень сложно мне давалось пересесть с microPascal на C. Уж очень! Помогло лишь то, что в С есть функция обращения к пинам как, например A=PINB.3; Записать в 2-х режимную переменную значение ножки №3. Но усложняло жизнь то, что это фокус CV. AVR Studio этого не поддерживает вообще. Пришлось учиться пользоваться командами "И, ИЛИ, НЕ". Но со временем все получилось.
10. Были многократные попытки выучить ассемблер. Но безуспешно. После Pascal - это ужасно сложно! Так как он является языком высокого уровня и то, что в Pascal-е делается в 2 клика, в ассемблере нужно в ручную прописывать. Со временем хочу научиться все таки.
11. Собрал конструктор состоящий из: Пленочной клавиатуры (Самодельной), 7-seg-ментного индикатора + HC595, модуль под программатор с выводами.
Вот такая получилась игрушка (В прикрепленном файле код под CV и схема Proteus).
А теперь о книжке. Огромное спасибо за нее! Прочел. Это была 1-я книжка. В последствие прочел еще парочку, но они были меньше. И того теперь у меня есть опыт работы с МК во Flowcode, СV, Avr Studio и microPascal. И на компьютере Delphi и Pascal.
- Вложения
-
- Проект.rar
- CV и Proteus.
- (44.98 КБ) 233 скачивания
Все можно сделать, было бы желание!
- Реклама
-
Вадиматоричик
- Грызет канифоль
- Сообщения: 299
- Зарегистрирован: Пн май 16, 2011 10:54:32
- Откуда: Красноярск
Re: Самодельная графическая приставка
Смог таки уломать ассемблер, переписав игру на нем. Схема та же. Исходники под Avrstudio в архиве. Постарался все прокомментировать.
- Вложения
-
- Game 2.0 Assembler.rar
- (22.27 КБ) 203 скачивания
Все можно сделать, было бы желание!
-
Вадиматоричик
- Грызет канифоль
- Сообщения: 299
- Зарегистрирован: Пн май 16, 2011 10:54:32
- Откуда: Красноярск
Re: Самодельная графическая приставка
Сложно сразу сказать... С виду похоже на выдачу сообщений на LCD полученных через USART. Признаться честно - это лишь предположения. Не знаю точно. С LCD только учусь работать. А USART-а боюсь как огня... Спасибо, кстати, за идею выводить команды и данные используя массив.DX168B писал(а):Пусть читает.
Потом пусть объяснит, что делает этот код:Код: Выделить всё
;------------------------------------------------------------------- ...... ldi temp0, EV_ERROR_STOP_GEN ;(0x06) ldi temp1, NULL rcall DISPLAY ...... ..... ;************************************************************** USART TRANSMITTER USART_TX: sbis UCSR0A, UDRE0 rjmp USART_TX out UDR0, temp0 ret ;************************************************************** UART LOG OUT ENGINE (с) DX168B DISPLAY: ldi ZL, Low(SIZEOF*2) ldi ZH, High(SIZEOF*2) add ZL, temp0 adc ZH, temp1 lpm count0, Z ldi ZL, Low(INDEX*2) ldi ZH, High(INDEX*2) lsl temp0 clr temp1 add ZL, temp0 adc ZH, temp1 lpm temp2, Z+ lpm temp3, Z mov ZL, temp2 mov ZH, temp3 DISPLAY_LOOP: lpm temp0, Z+ rcall USART_TX dec count0 brne DISPLAY_LOOP ret ;---------------------------------------------------------------- INDEX: .dw ARRAY0*2, ARRAY1*2, ARRAY2*2, ARRAY3*2 .dw ARRAY4*2, ARRAY5*2, ARRAY6*2, ARRAY7*2 .dw ARRAY8*2, ARRAY9*2, ARRAY10*2 .dw ERROR_L1*2, ERROR_L2*2, ERROR_L3*2 SIZEOF: .db 19, 16, 7, 15, 18, 19, 14, 13, 19, 19 .db 15, 8, 8, 8 ARRAY0: .db "SYSTEM STARTING...", 13, 0 ; 0 EV_SYSTEM_STARTING ARRAY1: .db "SYSTEM RUNNING.", 13 ; 1 EV_SYSTEM_RUNNING ARRAY2: .db "TIME: ", 13, 0 ; 2 EV_TIME ARRAY3: .db "CURRENT TIME: ", 13, 0 ; 3 EV_CURRENT_TIME ARRAY4: .db "GENERATOR ENABLED", 13 ; 4 EV_GEN_ENABLED ARRAY5: .db "GENERATOR DISABLED", 13, 0 ; 5 EV_GEN_DISABLED ARRAY6: .db "ERROR STOP!", 13 ; 6 EV_ERROR_STOP_GEN ARRAY7: .db "ERROR START!", 13, 0 ; 7 EV_ERROR_START_GEN ARRAY8: .db "STARTING ENGINE...", 13, 0 ; 8 EV_STARTING_ENGINE ARRAY9: .db "STOPPING ENGINE...", 13, 0 ; 9 EV_STOPPING_ENGINE ARRAY10: .db "ENGINE RUNNING", 13, 0 ; 10 EV_ENGINE_RUNNING ERROR_L1: .db "L1 FAIL", 13 ; XX EV_L1_FAIL ERROR_L2: .db "L2 FAIL", 13 ; XX EV_L2_FAIL ERROR_L3: .db "L3 FAIL", 13 ; XX EV_L3_FAIL
Все можно сделать, было бы желание!
-
Вадиматоричик
- Грызет канифоль
- Сообщения: 299
- Зарегистрирован: Пн май 16, 2011 10:54:32
- Откуда: Красноярск
Re: Самодельная графическая приставка
Всем спасибо. Тема закрыта.
Все можно сделать, было бы желание!
- Реклама
Re: Самодельная графическая приставка
Ни хрена себе... Чувак, мегареспект тебе, за то, что ты умудрился выучить Pascal, C, и пусть ты боишься LCD, всё равно ты крут! 
Если я где-то ошибаюсь, прошу от меня этого не скрывать. Заранее очень признателен 
-
Вадиматоричик
- Грызет канифоль
- Сообщения: 299
- Зарегистрирован: Пн май 16, 2011 10:54:32
- Откуда: Красноярск
Re: Самодельная графическая приставка
Спасибо
. LCD уже не боюсь. Дальнейшим принципом моей "карьеры начинающего программиста" стало "Только ассемблер! Только хардкор!!!". Теперь под каждую задачу пишу свою библиотеку на ассемблере, пытаясь сократить либо объем, либо количество тактов на выполнения задачи до минимума, достигая "совершенства" в поставленной задачи.
Для тех, кто пойдет по моим стопам.
1. Захочется выводить данные на LCD (В Красноярске стоимость LCD на контроллере HD44780 на 24au.ru - 100 руб, с белыми пикселями и синей подсветкой) - вот мой вариант библиотеки, выложенный на форм http://radiokot.ru/forum/viewtopic.php? ... start=1360. Весь код максимально подробно прокомментирован. Так что иногда, читая его, будете называть меня кэпом... Зато вопросов не будет.
2. Дальше захочется мерить температуру, но в МК не останется таймеров для работы с датчиком по интерфейсу Wire1. Мне любезно подсказали, в чем был мой косяк, и все заработало. http://radiokot.ru/forum/viewtopic.php?f=61&t=98826. Снова Ассемблер и снова куча подробностей в комментариях.
3. Захочется работать с графикой. Наткнулся на дисплей с графически/текстовым режимом. Но статей о нем... Одна! И то без кода. Вот описание и код с примером в железе. http://radiokot.ru/forum/viewtopic.php?f=61&t=99043. Здесь все безумно сильно прокомментирована и несколько версий.
Советы для таких как я:
1. Купить готовый программатор (UsbAsp 140 рублей!)/
2. Не полагаться на протеус. Иногда врет как не знаю кто.
3. Как только доберетесь до дисплея или чего еще сложного, купите Jtag Mkii (Я смог найти за 400 руб) + Atmega16 (150 руб). Но вообще, если есть возможность, перейти на STM8/32. Сейчас я этим и пытаюсь заняться. Т.к. кроме Atmega8 AVR не может похвастаться ничем, что стоит дешевле 150 руб. А у STM за эти деньги можно купить камень на CortexM4! Сейчас учу ассемблер и определяюсь со средой программирования. Только ассемблер! Даже под Cortex!
Для тех, кто пойдет по моим стопам.
1. Захочется выводить данные на LCD (В Красноярске стоимость LCD на контроллере HD44780 на 24au.ru - 100 руб, с белыми пикселями и синей подсветкой) - вот мой вариант библиотеки, выложенный на форм http://radiokot.ru/forum/viewtopic.php? ... start=1360. Весь код максимально подробно прокомментирован. Так что иногда, читая его, будете называть меня кэпом... Зато вопросов не будет.
2. Дальше захочется мерить температуру, но в МК не останется таймеров для работы с датчиком по интерфейсу Wire1. Мне любезно подсказали, в чем был мой косяк, и все заработало. http://radiokot.ru/forum/viewtopic.php?f=61&t=98826. Снова Ассемблер и снова куча подробностей в комментариях.
3. Захочется работать с графикой. Наткнулся на дисплей с графически/текстовым режимом. Но статей о нем... Одна! И то без кода. Вот описание и код с примером в железе. http://radiokot.ru/forum/viewtopic.php?f=61&t=99043. Здесь все безумно сильно прокомментирована и несколько версий.
Советы для таких как я:
1. Купить готовый программатор (UsbAsp 140 рублей!)/
2. Не полагаться на протеус. Иногда врет как не знаю кто.
3. Как только доберетесь до дисплея или чего еще сложного, купите Jtag Mkii (Я смог найти за 400 руб) + Atmega16 (150 руб). Но вообще, если есть возможность, перейти на STM8/32. Сейчас я этим и пытаюсь заняться. Т.к. кроме Atmega8 AVR не может похвастаться ничем, что стоит дешевле 150 руб. А у STM за эти деньги можно купить камень на CortexM4! Сейчас учу ассемблер и определяюсь со средой программирования. Только ассемблер! Даже под Cortex!
Все можно сделать, было бы желание!
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: Самодельная графическая приставка
Ну что могу сказать... Вы молодец, раз всетаки поставили цель и добились результата.Вадиматоричик писал(а): Сложно сразу сказать... С виду похоже на выдачу сообщений на LCD полученных через USART. Признаться честно - это лишь предположения. Не знаю точно. С LCD только учусь работать. А USART-а боюсь как огня... Спасибо, кстати, за идею выводить команды и данные используя массив.
Тема эта интересная, так что дерзайте. Хорошо натренировавшись на AVRках, их интерфейсах и подтянувшись в схемотехнике, можно будет начинать изучать STM32.
А по поводу кода - да. Это вывод сообщений через UART на специальный LCD дисплей.
И по поводу ассемблера. Не упустите важную вещь при его изучении - это понимание работы процессорных систем в целом.
Достаточно освоить хотя-бы одну архитектуру на низком уровне, чтобы все остальные стали более-менее понятны.
Удачи Вам!
I am DX168B and this is my favourite forum on internet!
- B@R5uk
- Собутыльник Кота
- Сообщения: 2896
- Зарегистрирован: Сб ноя 13, 2010 12:53:25
- Откуда: приходит весна?
Re: Самодельная графическая приставка
Чтобы заняться STM32 не обязательно тренироваться на AVR. Вполне можно и сразу.DX168B писал(а):Хорошо натренировавшись на AVRках, их интерфейсах и подтянувшись в схемотехнике, можно будет начинать изучать STM32.
Так чем дело кончилось? Автор игру спаял или забросил на пол пути?
Re: Самодельная графическая приставка
Не ради спора, но вспомнил своё впечатление об STM32, когда впервые столкнулся.. Вот знал я архитектуру AVR, хуже знал архитектуру PIC (за ненадобностью), но в мире STM32 я ни хрена не понимал.. Куда бросаться, чем пользоваться, что читать.. Одна система тактирования вызывала боль в жопеDX168B писал(а):Достаточно освоить хотя-бы одну архитектуру на низком уровне, чтобы все остальные стали более-менее понятны.
Вот что мне сразу понравилось - это человеческая отладка. Но до main() я добирался долго..
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: Самодельная графическая приставка
hybroid
Ну, мне двух дней хватило, чтобы освоить STM32 и помигать светодиодом.
Один день я разбирал минимальную обвязку для запуска камня и создания проекта в IAR EWARM (без SPL и прочих библиотек).
Второй день я потратил на то, чтобы разобраться в том, что в STM32F1xx и STM32F4xx по разному устроены
узлы GPIO и немного отличается группа регистров RCC. (Это не считая ядра, конечно)
Я начинал с STM32F407 (он тогда только вышел), в то время, как все примеры в сети были под STM32F103 и прочие.
Я клоню к тому, что зная хотя бы одну архитектуру, освоить любую другую будет проще.
Ведь самые базовые принципы работы одинаковы для всех архитектур.
Ну, мне двух дней хватило, чтобы освоить STM32 и помигать светодиодом.
Один день я разбирал минимальную обвязку для запуска камня и создания проекта в IAR EWARM (без SPL и прочих библиотек).
Второй день я потратил на то, чтобы разобраться в том, что в STM32F1xx и STM32F4xx по разному устроены
узлы GPIO и немного отличается группа регистров RCC. (Это не считая ядра, конечно)
Я начинал с STM32F407 (он тогда только вышел), в то время, как все примеры в сети были под STM32F103 и прочие.
Я клоню к тому, что зная хотя бы одну архитектуру, освоить любую другую будет проще.
Ведь самые базовые принципы работы одинаковы для всех архитектур.
I am DX168B and this is my favourite forum on internet!
- Ariadna-on-Line
- Это не хвост, это антенна
- Сообщения: 1482
- Зарегистрирован: Вс май 13, 2012 00:01:54
Re: Самодельная графическая приставка
///... 10. Были многократные попытки выучить ассемблер. Но безуспешно. После Pascal - это ужасно сложно! Так как он является ЯЗЫКОМ ВЫСОКОГО УРОВНЯ и то, что в Pascal-е делается...///
Спасибо добрый человек за Ассемблер. Но - Ниже Ассемблера - только плинтус и машинные коды. Асм - как алфавит для текста. Текстов миллионы, а букв - КОТ наплакал.
Развлекался программированием на Асме во времена ДОСа и 8086 процессора. Когда сам наработаешь себе программных модулей на все случаи жизни (вывод на экран, динамик, в порт, в область памяти и тд.), потом составлять из них программы как из кубиков - одно наслаждение. Ну а язык ВЫСОКОГО УРОВНЯ - это по сути - предоставленный тебе комплект чужих КУБИКОВ.
Спасибо добрый человек за Ассемблер. Но - Ниже Ассемблера - только плинтус и машинные коды. Асм - как алфавит для текста. Текстов миллионы, а букв - КОТ наплакал.
Развлекался программированием на Асме во времена ДОСа и 8086 процессора. Когда сам наработаешь себе программных модулей на все случаи жизни (вывод на экран, динамик, в порт, в область памяти и тд.), потом составлять из них программы как из кубиков - одно наслаждение. Ну а язык ВЫСОКОГО УРОВНЯ - это по сути - предоставленный тебе комплект чужих КУБИКОВ.


