Перейти до змісту
  • Головна
  • avreal

    Користувач
    • Постів

      34
    • Зареєстровано

    • Відвідування

    Весь контент avreal

    1. Наприклад так.Беремо когось, хто підключений через бравопорт. І лізе кудись за його межі. Трафік між бравопортом і юзером йде? 1% ціни з бравопорта (а він перекине на юзера). Трафік між бравопортом і тим, у кого бравопорт купляє смугу в Києві йде? 1% з ціни того, "хто надає послугу" - з "того у Києві", а він накине на ціну для бравопорта. Якщо тепер ще той не напряму в світ, а через когось ще, якийсь більший вузол - ще накинеться. Вже втроє. А потім вони здогадаються кожен трафік порахувати двічі - вхідний бравопорта (обкладається) та вихідний його постачальника в Києві (обкладається). Було б бажання, а воно у них є. Цікаво - пенсіонерам полегшало після того, як ввели податок у пенсійний фонд 6% з мобільних "трафіків" та 1% з обміну валют?
    2. Завжди краще було взяти дешеве дзеркало ніж наворочене не-дзеркало. Ну крім одного випадку, про який я вже згадував вище - коли якість фото на третьому місці після реально потрібного гіперзуму та бажання прислухатися до тих, хто каже "дзеркалка - понти". Єдине виключення - Sony R1. Але там стояв той же сенсор, що в дзеркалках і ця камера була більша, важча і дорожча за дзеркалки нижнього рівня.
    3. Так то ж постійна проблема, треба постійно пахати і результат буде не скоро і досягти його непросто.А тут річ сезонна, з місяць пройде і само розсмокчеться, як розсмокталися пташині-курячі бульки на воді. Але можна буде собі записати "велику перемогу" А зараз так маємо як завжди дві групи - одна грає на пониження, інша на підвищення. Зараз обом вигідно розкуртити істерію, але одні сподіваються, що за пару-трійку тижнів до виборів вони зможуть записати собі в плюс "щасливий порятунок країни", а інша - що встигне за цей же час натриндіти "а от якби були ми - такого б точно не було, і якщо будемо ми - такого більше ніколи не буде" в такому об'ємі, що народ поведеться. І навіть розкручуючи "караул, епідемія, пандемія" - ніхто не насмілився порівняти числа з минулим/позаминулим/поза-..-поза-минулим роком. Це ж круто було б - "от як я був прем'єром, то в розгар грипу хворіло всього стільки-то, а померло так взагалі всього стільки-то і то вдавилися печивом, а не від грипу, а от ЗАРАЗ..." Але ніяка ні "зовнішня" (регіони) ні внутрішня (Єхануров) опазиція такого не каже - чого? Може того, що ну зовсім нагло не збрешеш, а так - не дуже і відрізняється ситуація від попередніх років.
    4. З тим самим успіхом я можу сказати "Помирає багато людей, влада на це плює, а Ви посилаєтеся на вікіпедію", власне, я на це і натякнув
    5. ОФФТОП :: Помечено автором как несоответствующее данной темеА такої проблеми, як "АБ0-конфлікт" на вікі взагалі немає, ну то й що? Ті, хто від цього постраждав - щось собі самі придумали?
    6. W2K, XP-SP2, XP-home, openSUSE/64 11.1, ubuntu/32 9.04 - це на різних компах (домашній/ноут/робочий) і в різний час, все під грубом до трьох ОС на машині.
    7. Безперечно. Але я стомився сперечатися.
    8. За FZ50 приблизно у 1.7 рази більша площа сенсора => менші шумиraw - іноді допомагає витягти кадр, який при зніманні відразу в jpeg вийшов би пропащий. Хоча не знаю, наскільки це корисно на 1/1.8". За P90 еквівалентний фокус на ближньому кінці 26мм проти 35 у FZ50 - ширший кут зору, 35 іноді таки не вистачає"оптика лейка" - не аргумент, на моделях такого рівня, на мою думку, це мало що означає. зум 24 у P90 не аргумент - раз взагалі виникло питання "порівняйте мені", значить спеціальної потреби по характеру запланованих робіт в такому зумі немає, а інакше - це "на погратися", а реально і на FZ50 буде використовуватися в основному діапазон екв. фокусних ну десь 35-150..200 з наявних 35-420
    9. Чистісінькою французькою мовою - "вженема, вженема, вженема". Роздано. Навіщо? Саме старі, більш за все вже нікуди не годні.
    10. До речі (ой це наче офтоп тут... хоча підходить під відповідь на "де взяти техніку") віддам просто так за щось таке смачненьке до чаю 1) Київ-19/Геліос-81 50/2.0 різкість лише по мату та мікрорастру, експонометр працює 2) Київ-19М/АРСАТ (той же "Геліос", тільки випуску після 1990 року) різкість - мат/мікрорастр/клин, але десь губиться контакт вмикання експонометра (Граніт-11 зум 80-200/4.5 та фікс Калейнар 100/2,8 вже подаровано ) (Київ-4А в неробочому стані ) На форум (і, відповідно, в цю тему та в приват) зазираю нерегулярно, тому може доведеться потерпіти.
    11. Береш хоч свою фотографію, хоч фотографію своєї киці (if any exist), закидаєш на цей сайт, задаєш розмір вишивки в штуках хрестиків та кількість кольорів, з якими є готовність працювати. Отримуєш файл pdf з порізаною на необхідну кількість сторінок схемою вишивки, друкуєш та зклеюєш у великий лист, йдеш купляєш потрібні нитки. p.s. Є й програми під віндовс, які можна скачати і генерувати схеми на місці. Гуглити "геренатор вышивок"
    12. А я калібрував колись собі ("ну ви курсі") і трубку, і MVA-LCD, а потім купив Apple cinema HD 23" і вирішив його не чіпати. Для мене досить його заводського стану.А на роботі самсунг 204B - його просто нема сенсу калібрувати.
    13. MIDI - це UART ("COM-порт"), але з фізичними рівнями не RS232, а CL (Curent Loop) і з "нестандартною" з точки зору "стандартних IBM-PC COM-портів" швидкістю 31250 На старих PC-шних портах виставити було неможливо, на нових, які тягнуть більше 115200, наприклад, на USB-COM конверторах це можна виставити. Пошук midi rs232 adapter першим лінком дає схему перехідника, який узгоджує фізичні рівні, але на COM-порту ще треба виставити потрібну швидкість і я просто не знаю, чи зуміє потрібна програма це зробити, адже система може не поставити "невідомо що на COM-порту" як міді-пристрій, а програма може не вміти брати не у системи, а напряму з COM-порта. Ось ще дещо нагуглилося, вже зразу з перехідником RS232-USB. "раз звёзды зажигают, значит это кому-нибудь нужно", тобто значить воно працює з потрібними програмами. Тобто взагалі є шанс на якийсь USB-перехідник до старої мобілки (у якої не було USB і просто в перехіднику стоїть конвертер USB-serial) почепити оптрон та може транзистор який і все буде нормально. Але ж це треба знати і вміти. Або розміняти це на гроші і купити готовий перехідник, який точно працюватиме :wink:
    14. Ну-у-у-у... я б посперечався.Не з приводу якості знімків, а з приводу класифікації "Смєни-8" як мильниці. У "Смєни-8" був далеко не найгірший об'єктив (у "етюда", здається, був такий дешевий апарат на широку плівку, щоб зовсім піонерам контактним друком без збільшувача друкувати - так точно гірший був :wink:, дорожчі "Вілії" могли похвалитися лише акспонометрами, але не об'єктивом). І "сенсор" (себто плівка) у нього фактично був як і у "федів" та "зенітів" з "києвами" чи у "практики" - принаймні доки власники останніх купляли ту ж ФОТО-65 чи вихоплювали слайдову "ORWO". Тому однозначно ставити знак рівності між "Смєнами" та нинішніми цифромильницями я не став би.
    15. І в плівковій фотографії і фон міняли, і врізали потрібне з іншого фото, і використовували "віражі" для зміни тональності ч/б фото ("сепія" і т.д.). Ну а щодо "если добавлять резкости нерезким фото", то "все придумано до нас" Наприклад, нерізке маскування (вся практично та ж сама "математика", просто зроблена "аналоговим" способом), і такий зовсім вже "ефект", як соляризація чудово використовувалися в плівковій фотографії сотню років. Зараз це все просто зроблено іншими технічними можливостями, а заразом ще купу різного навчилися робити. Перед тим, як сперечатися про "чистоту" плівкової фотографії та "ненатуральність" цифрової обробки спочатку почитайте в книжках 40..50-річної давності про те, що вміли робити в доцифрову епоху і наскільки це міняло "натуральний" знімок. Зараз це лише стало простіше і доступніше "народним масам". Ну так і на автомобілі перше міг їздити лише той, хто може сам його зібрати (а то й зконструювати), і домашні комп'ютери колись - люди самі собі плати травили, самі мікросхеми паяли, настроювали...
    16. Хм... Ви багато працювали з плівкою? "давайте обсуждать вкус устриц с теми, кто их ел" Я досить багато фотографував на чорно-білу плівку. Ну просто на кольорову в ті часи було складно та дорого. Фотографував не професійно, так, любительске фото. Але досить довго. Профі набагато більше могли б розказати. Але і я дещо можу про те, як * брав для друку папір №2, бо негатив був занадто контрастним, треба бул зменшити контраст (чому тепер я не можу у софті посунути повзунок контрасту в бік зменшення?) * брав для друку папір №5, бо негатив був занадто млявим (чому тепер я не можу у софті сунути повзунок контрасту в інший бік?) * спеціально всю плівку недоекспоновував (щоб мати коротші витримки в темнуватих умовах, а чутливішої плівки під рукою не було), а потім перепроявлював (чому я тепер не можу поставити експокорекцію на -1 а потім в raw-конвреторі поставити +1 і зімітувати ISO3200?) * листочком паперу, іноді обрізаним до потрібної форми, прикривав під час друку частину кадру на частину часу експонування фотопаперу, наприклад, щоб нормально продрукувалися верхівки дерев та хмари, але при цьому те, що нижче, не забило зовсім в чорне, тобто фактично "витягував з тіней". (чому я тепер не можу зробити це або кривими, або вибірковим регулюванням яскравості/контрасту в частині кадру?) * акварельним пензликом під час проявки фотопаперу "поглажував" обличчя на кадрі - не торкаючись власне фотопаперу, просто створюючи додаткову циркуляцію проявника в цій зоні і пришвидшуючи проявку, завдяки чому витягував "зі світла" обличчя, "перебите" спалахом. (чому тепер я не можу таке робити в софті?) Ну а світлофільтри? Кольоровий друк без них ніколи не обходився і використовувалися не лише для корекції характеристик конкретної плівки чи партії паперу... Та й в чорно-білому фото вони використовувалися. Яка різниця де вони були - на шляху світла до сенсора плівки, чи на шляху від плівки сенсора до монітора? p.s. уявіть собі схожу розмову кілька десятирічч тому: - ні, всі ці автофокуси, експонометри - це все технічні штучки, я особисто більше поважаю натуральні фото, можливо навіть не з фокусуванням по матовому склу, а з виставлянням метражу на око по шкалі об'єктива а ще раніше: Та ну, яке скло? Натуральне фото може дати лише обскура, промені світла не повинні оброблятися ніякими лінзами! :biggrin:
    17. Переклади російських (навіть "радянських") пісень латиною. http://binetti.ru/artes/poesia/carmina_russica.shtml Ну а "Прекрасное далёко" у виконанні хору - взагалі класно http://binetti.ru/artes/poesia/mirabile_futurum.mp3
    18. Дивно. Якщо рівні напруг не ті, то зовсім не доходитиме або то так, то ні. "з 4-го разу" - це після ввімкнення, а далі все нормально? Та знаю, сам колись давно таке робив, причому на мікросхемах логіки (серія K561, аналог CD4000B), а не на мікроконтроллері :biggrin: Тільки у мене 3 біти були під номер і 5 даних, 8 байтів по кругу.Але тут теж уважно треба. У мене "пропорційні" сигнали були 5-бітові і кожен передавався в окремому байті. Якщо 8-бітовий аналоговий сигнал передавати двома напівбайтами, то можлива така штука. Хай був код 0x1F, передавався, наприклад, як 4-й та 5-ий байти у вигляді 0x4F, 0x51 Тепер одночасно виникла перешкода для сигналу і на пульті посунули трохи джойстик і код став 0x20, повинно передаватися як 0x40, 0x52. Але через перешкоди прорвався лише байт 0x52, а 0x40 пропав, а потім ще на декілька секунд пропало все. Якщо на прийомі просто в змінну записувати старший або молодший напівбайт залежно від його номеру, то ці декілька секунд буде код 0x2F, складений з молодшого напівбайта попереднього коду та старшого від нового коду. Тобто дещо в півтора рази більше, ніж треба. Тому я й кажу, що при передачі без CRC на пакет потрібна хоча б фільтрація - цей код 0x2F утвориться один раз, а коли перешкода зніметься, то складатимуться нормальні байти 0x20, навіть проста фільтрація 0x2F викине зовсім або сильно зменшить його вплив.
    19. У мене давно не горіли мікросхеми :smile: , тому важко сказати.Можливі варіанти - не подано живлення AVCC (навряд, зазвичай забувають його підключити ті, хто не збирався працювати з АЦП) - живлення всього контроллера менше 5В - той вхід випадково зконфігурували як вихід і вивлеи низький рівень. Можна подати напругу на вхід АЦП через резистор в декілька кілоом - оцифровці він не заважатиме, а якщо щось не те з живленнями, конфігурацією портів - простим тестером буде видно що на нозі контроллера і чи рівне воно тому, що подали на резистор. Зазвичай мікросхеми починають грітися у двох випадках - на якомусь вході напруга перевищує живлення і вганяє кристал в дурний режим і коли вихід підключено на інший вихід або на землю/живлення.
    20. Та так... Малося на увазі - паяю макетки. Але і нормальні плати вже не дуже хочеться паяти.Набридло :smile: Паяв колись макетки і разів у десять більші площею за твою (200*200мм, 250*130мм), скільки ж можна? :wink: Зараз стараюся поменше паяти (самостійно :wink:) А що йому посилається?До швидкості 115200 на кабелях до двох метрів довжиною, "на столі" (тобто не в цеху) і при роботі зі звичайним "десктопом" (тобто не з ноутбуком - з ними іноді фокуси бувають) - замість приймача та передавача RS232 нормально працюють інвертори 74hc14, тобто MAX232 і подібні мікросхеми не обов'язкові. Перевірено неодноразово. Ну, якщо так, то хай. Але я б і тоді для кожної команди зробив якийсь "антидребезг", як для кнопок роблять. Тобто якщо одна й та ж дискретна команда приходить декілька разів підряд однакова або якщо "пропорційна" команда приходить з малою різницею від попередньої - використовувати, інакше зберігати минуле значення. Для пропорційних команд кращеспробувати просту фільтрацію робити на прийомі - видавати на рульові машинки якесь середнє по декільком прийнятим кодам. Це зробить керування трохи "пригальмованим", але спотворений перешкодами байт точно не зробить протилежне тому, що хотілося. Хоча мені все ж здається, що варто серйозніше поставитися до радіоканалу, щоб його будь-який чих не збивав. Може, не напряму з UART (занадто широка смуга частот у цього "сигналу" з прямокутних імпульсів і занадто чутливий до спотворень), а якесь кодування зробити, тим же процесором щось згенерувати (грубо кажучи, "напівпрограмний модем" - у AVR ресурсів досить). Але це десь у спеціалізовані форуми терба полізти, уточнити що і як, бо я радіоканалом ніколи не займався. p.s[0] де беруть кварци вище 24мегагерц і генератори вище 90мегагерц - не знаю, не цікавився p.s[1] а я на експериментальних платах просто чотири кутових "позолочених" штирі з кроком 2,54мм паяю і "флопарний" конектор живлення беру, а не "вінчестерський".
    21. Та вже років... хтозна... ну десять, як вони молодці. Імрад завжди був фірмою, в якій можна швиденько купити дуже багато всього і по одній штучці. Воно трохи дороржче, ніж в інших місцях, але в цих "інших" або треба замовити і довго чекати, або ще й замовляти треба коробку, і навіть те, що на складі - менше 10 штук не підходь. От чого не знаю, того не знаю. У мене і зі старих запасів трохи є з металізацією (хоч і не всі гарні), і на односторонніх макетках без металізації можу паяти, а головне - я вже зовсім мало паяю, тим більше на макетках :biggrin: Так вже й цей файл винний? Що ж він таке зробив? :wink:
    22. http://www.remexpert.com/kardachi.htmАле там трохи неправильно намальовано і розписано. Резистори, конденсатори, дроселі, діоди-світлодіоди-транзистори, кнопки я здебільшого беру в павільйоні 9В (частина на 1 поверсі, частина - на другому, сходи всередині павільйону). Мікросхем там вибір невеликий, здається, лише трохи стабілізаторів. Мікросхеми - Імрад, на малюнку по лінку це наче мало б бути об'єднані місця 27 та 58 або просто на тому малюнку пропущено ряд. Коли ввійти з бічного входу - відразу упираєшся в їх палатку, там як правило декілька чоловік покупців в черзі, у продавців ноутбуки з базою. Панельки у них теж бувають. Різноманітні роз'єми - це в павільйоні 18В в лівій частині. Нещодавно там брав гарні (з розрізним центральним штирем) круглі на живлення. Ще великий вибір роз'ємів - Нью-Паріс біля (М) КПІ http://www.paris.kiev.ua/kontakt.htm В П-подібний будинок входити в арку від проспекту і вліво там десь висить переговорка, вони відкривають електрозамок, в під'їзді двері наліво. Але там не дуже люблять, якщо брати пару позицій по одній штучці , хоча б по 5-10 штук. 10 або 6 штирів на плату (дворядні - 2*5 або 2*3) і від адаптера STK300 або AlteraByteBlaster шлейф сантиметрів 20-30 з колодкою IDC-10 або BLD2-6 відповідно.
    23. Так я ж і кажу за різні підходи. Я і без симулятора не перешиваю по 10 разів після дрібних правок, якщо на прогоні в залізі помітив "дрібне щось не те" - підправив та й усе, в наступний раз буде видно. Можу декілька днів писати не зашиваючи програму і бути відносно впевненим у результаті "Если долго мучиться, что-нибудь получится". Просто давно цим займаюся.О, аналогію знайшов! Швея-початківець після кожних двох стьожків вішатиме роботу на манекен і дивитиметься - чи не накосячила. І радітиме манекену, у якого форми-розміри можна настроїти, руки згинаються і піднімаються і т.п. А досвідчена обійдеться замірами і однією приміркою на клієнті. Не тому, що симулятори манекени погані, а тому, що вони їй непотрібні. Ну, для дуже вередливого клієнта - декількома примірками, але манекен тут точно не допоможе. Ти краще глянь на цей клас: http://portveshok123.nm.ru/ Якщо хто не зрозумів - це пародія на http://avr123.nm.ru/
    24. :smile: Ну, у нас трохи різні підходи і "трохи" різний досвід. Я просто продивився твій код і побачив невідповідність імені вектора конкретному контроллеру і помилку в ініціалізації UART, на це пішло навряд чи набагато більше часу, ніж треба, щоб запустити симулятор і завантиажити в нього проект. Тобто для простих речей мені симулятор непотрібен. А складні в них не так і просто просимулювати. Щоб це було ефективно з точки зору саме перевірки роботи програми (а не перевірки правильності розуміння документації автором програми) - треба, щоб симулятор підтримував якиусь скриптову мову і на ній написати купу тестів, що імітують поведінку "реального світу". А де гарантія, що ці тести самі будуть написані правильно, що зімітують якісь критичні для програми ситуації? Тобто ці тести однак треба уважно писати і "симулювати" головою, виправляти в них помилки під час одночасного тестування програми тестами і тестів - програмою. Тобто це добрячий шмат роботи, який економічно вигідний лише на досить великих програмах або в ситуації, коли помилка при налагоджуванні програми "в залізі" дуже дорого коштує (довго потім уламки будинку розрібати :wink:). От для навчання новачків - інша справа До речі, про критичні для програми ситуації. Уявімо собі, що десь на межі приймач "не почув" один байт (або не один, а будь-яка кількість, некратна трьом). У тебе просто змістяться по кругу всі наступні байти, кнопки підуть у приймачі замість якогось каналу пропорційного регулювання, інший пропорційний сигнал піде замість кнопок... Або прийшла якась перешкода і зіпсувала байт - приймач отримає і виконає неправильну команду. Я повторюся, але щоб побачити це в симуляторі, треба знати, що таке можливо. А якщо знати - то і без симулятора зрозуміла реакція програми - я б відразу присав якийсь "пакетний" протокол з визначеними межами пакетів і з контрольною сумою. Чи ти розраховуєш на радіоканал, який бере на себе всі ці проблеми, тобто на радіомодем? Ще приклад - от у ATtiny13 її watchdog timer вміє працювати в режимі, коли він спочатку видає преривання, а в наступний період, якщо він не був знову в цей режим переведений - робить reset. Ну так от можна в симуляторі прогнати програму і все працюватиме, але потім взяти і прошити fuse WDTON - "постійно ввімкнений watchdog", тоді режим преривання не вмикається, зафіксовано режим system reset незалежно від того, що записано у WDTCR. І якщо симулятор не вміє симулювати програму з урахуванням fuses - можна отримати масу задоволення в дусі "ну так у симуляторі працює, а в залізі - ні, мабуть, мікросхема бракована" І таких ситуацій - "в симуляторі працює, в залізі ні" або навіть "в симуляторі ніяк не працювало, плюнув, зашив - в залізі працює" (тобто просто помилка в симуляторі) - валом, час від часу на різних форумах виникають подібні запитання від людей, які занадто довіряють симуляторам. p.s. якшо шо - питай, я тобі і без симулятора відповім єдине, що не гарантую, то це відповідь в той же день, бо я сюди не кожен день заглядатиму. Про модулі не скажу, а панельки, мікросхеми і різну дрібноту беру на кардачах - палатка Imrad на вході, пав.№9В, пав.18 (там десь лівіше пластикові корпуси, а правіше - панельки/штекери/гнізда/...).Хоча у мене якийсь запас панельок звичайно валяється, бо я по одній не беру, хай краще лежить, ніж бігти треба. Та й не соромлюся зробити панельку на 28, поставивши поруч на 20 та на 8 або 14 + 14.
    25. Експериментальним шляхом встановлено, що ти, імовірніше за все, користувався WinAVR-20060421 з оптимізацією на розмір, але без ключа -mcall-prologues (ще дужча оптимізація на розмір, але реальний ефект дає на великих програмах). Можливо, якимось іншим, але 99% що цим :smile: Порадив би перейти на WinAVR-20070525, він в більшості випадків генерує трохи кращий код, але для нього треба трохи уважніше писати (трохи краще знаючи мову С :wink: ). Якщо неохота тягти з інтернету - викласти можу, але лише в скайнетівському sDC (якщо це маэ сенс). Всі коментарі стосується другого архіву, з восьмого посту цієї теми. #include <avr/interrupt.h> #include <avr/signal.h>Зараз з цих двох файлів треба використовувати один - avr/interrupt.hsignal.h давно застарілий і насправді перенаправляє компілятор на avr/interrupt.h, тобто реально ти включив цей файл двічі. Це не страшно, але навіщо? SIGNAL(SIG_UART0_TRANS)Аналогічно - рекомендується перейти з SIGNAL на ISR, те ж саме, і SIGNAL ще є в файлі interrupt.h новіших версій avr-gcc, але його позначено як застарілий і в якийсь момент він може пропасти.Але важливо не це, а те, що у atmega8 немає вектора SIG_UART0_TRANS, є вектор SIG_UART_TRANS (у меги8 лише один USART). WinAVR при компіляції має видати попередження "misspelled signal handler". Функція обробки преривання скомпілюється, але не буде прив'язана до потрібного вектора, а на тому векторі, як і на всіх незадіяних, буде встановлено ловушку - перехід на __bad_interrupt. От тут і біда - перший байт ти передаєш в main() записом в UDR і він передається. А преривання не відпрацьовує, бо реально вектор кінця передачі направлено в ловушку _bad_interrupt, яка робить перехід на нульову адресу і програма починає виконуватися спочатку, знову, зрештою, передаючи лише один байт з трьох потрібних. В ініціалізації USART теж помилка є, але вона не головна. Ще одне "до речі" - вже досить давно разом зі "старими" іменами векторів вигляду SIG_... існують нові, такі ж, як у компілятора IAR, для даного вектора - USART_TXC_vect. void pause(unsigned long p) { unsigned long i; for (i=p; i > 0; i--); }А ось тут може чекати великий облом. Справа в тому, що змінна i ніяк не використовується, в циклі нічого не робиться - "на виході" у цієї функції нічого немає. Так, вона "виробляє" затримку, але з точки зору стандарту С вона таки нічого не робить. По стандарту оптимізатор компілятора має повне право викинути цей цикл, зробивши фактично void pause(unsigned long p) { }І якщо WinAVR-20060421 ще таку оптимізацію не робить, то всі новіші версії - роблять і затримка реально буде дуже мала - лише на виклик порожньої функції, або її зовсім не буде (зоптимізується навіть виклик функції, бо вона однак "нічого не робить"). Аналогічно з int foo() { int i, j; for( i=0, j = 1; i < 5; ++i) j *= 2; return i; } він має право зробити int foo() { return 32; }Це можна "вилікувати" словом volatile, яке забороняє "занадто оптимізовувати" роботу зі зімінною. void pause(unsigned long p) { volatile unsigned long i; for (i=p; i > 0; i--); }Але краще використовувати готові функції#define F_CPU 4000000UL #include <util/delay.h> void pause() { _delay_ms(1.5); } // затримка півтори мілісекундиЧас затримки має бути константою, може бути з плаваючою точкою, бо всі обчислення робляться на етапі компіляції.Обмеження на максимальний час залежить від тактової частоти контроллера, це описано в документації. Для 4МГц максимальна затримка буде 262144/4000 = 65,536 мілісекунди. void USART_Init(unsigned int baud) { UCSRC = 0; UBRRH = (unsigned char)(baud>>8); UBRRL = (unsigned char)baud; UCSRB = (1<<TXEN)|(1<<TXCIE); UCSRC = (1<<URSEL)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0); }Тут не використана формула UBRR = Fosc / 16 / BAUD - 1. В документації не так "неправильно", як "необережно" - спочатку правильно написано, як розраховувати значення для UBRR, а потім через пару сторінок в прикладах аргумент функції USART_Init названо baud, а треба було б baud_divider, щоб не плутати народ.Я так зрозумів, ти це й сам помітив :smile: Але це лише дало якусь "дурнувату" швидкість передачі і все, на непередачу другого та третього байту це не могло вплинути. Є ще деякі дрібні зауваження на тему "як краще відразу звикнути робити" або "як зробити програму трохи меншою в пам'яті" (ця програма легко скорочується з більше 700 до менше 600 байтів і її текст теж стає коротший і зрозуміліший), але це якщо продовження розмови когось зацікавить. А хіба ImageCraft вже підтримує С++? Наче ж він лише C, та й то не впевнений, що він навіть стандарт C99 мови C підтримує повністю. Таке зкомпілює? int sum( int sy, int sx, int a[sy][sx]) { int temp = 0; for( int y = 0; y < sy; ++y ) for( int x = 0; x < sx; ++x) temp += a[y][x]; return temp; }Хоча стандарт 99-го року саме на мову C може і мікрософтівський повністю не підтримувати, вони могли давно плюнути на чистий C, зосередившись на C++ та C#
    ×
    ×
    • Створити...

    Важлива інформація

    Використовуючи цей сайт, Ви погоджуєтеся з нашими Умови використання, Політика конфіденційності, Правила, Ми розмістили cookie-файлы на ваш пристрій, щоб допомогти зробити цей сайт кращим. Ви можете змінити налаштування cookie-файлів, або продовжити без зміни налаштувань..