perezx писал(а): ак оно ж не даст ничем, кроме мигания, заниматься контроллеру! а на таймерах слишком просто, завел таймер тремя байтами и все тут. да и потому что таково было техзадание. ведь сошлись на том что мигалка должна быть софтовой. ну тупо интересно жеж. вон ардуинщики первый "хелоуворлд" делают софтовое мигание светика. это тоже типа хелоуворлда. Добавлено: Thu Mar 16, 2017 7:59 pm |
Николай писал(а): А вот собсно говоря и сам текст. Хитрая функция задержки Добавлено: Thu Mar 16, 2017 8:05 pm |
2.5 года назад делал. https://www.youtube.com/watch?v=9U9KI7_dFxE Добавлено: Thu Mar 16, 2017 8:26 pm |
На Си не писал очень давно, так что в порядке бреда -- что получится, если в функции main Николая попробовать такое извращение:
Добавлено: Thu Mar 16, 2017 8:39 pm |
Лол, у меня код Николая скомпилился в 78 байт SilverRay, твое не компилится, в строке p = ((++i) &= 1) ошибка ../blink.c:25:6: error: lvalue required as left operand of assignment Добавлено: Thu Mar 16, 2017 8:45 pm |
Вот, кстати, это то, что почему-то не обсудили -- одинаковость сред и настроек компилятора/линкера. Что там со всякими оптимизациями получается? Добавлено: Thu Mar 16, 2017 8:48 pm |
У меня WinAVR-20100110, добавил в настройки компилятора -fdata-sections и -ffunction-sections, в настройки линкера -Wl, -gc-sections, правда моему коду это не помогло Хм, убрал, все равно 78 байт. Добавлено: Thu Mar 16, 2017 8:56 pm |
ну я вообще ничего не трогал в настройках. тупо флаг оптимизации по объему -Os и все. стоковые настройки из протеуса. ну значит 78. ну чтож. это охуйетительно Добавлено: Thu Mar 16, 2017 9:09 pm |
2SilverRain привел твою конструкцию к минимализму, всеравно на 2 байта больше.
опциями компиляции можно конечно стопудово дофига из начальных 54 байт вырезать, но размер скомпилированной части врядли еще ужмется. ну и while(1) компилер нормально как jmp делает в одну комманду, так тчо goto ненужно, оно было нужно в задержке, там супротив циклов do while дает -2байта Добавлено: Thu Mar 16, 2017 10:29 pm |
А че я свой код не могу вставить? Просто кусок исчезает. Добавлено: Thu Mar 16, 2017 10:45 pm |
Николай писал(а): 2SilverRain Не думал, что мой ник так тяжело правильно написать. Что до кода -- он нехорош в том плане, что идет запись не конкретно заданного бита, а всего сразу. Добавлено: Thu Mar 16, 2017 10:49 pm |
не только инверсия байта тоже в три комманды компилится. 2behram а хрен его знает есличессно Добавлено: Thu Mar 16, 2017 11:07 pm |
Пароль stm32pas Код на 84:
Настройки компилятора стоковые (оптимизация -s) А что такого в АРМе в золоте, чтоб его фоткать? Миландровское поделие, можно на сайте посмотреть. В прозрачной пластиковой рамке-таре. Если интересно, конечно, могу сфоткать на матафун, через который я звоню P.S. А чо /io.h не хочет в код вставлять? Добавлено: Thu Mar 16, 2017 11:48 pm |
DDRB = 0x01; PORTB = 0x01; PORTB = 0x00; менять на DDR|=(1<<0) PORTB|=(1<<0) PORTB&=~(1<<0) которые компилируются в кошерные sbi 0x17,0 sbi 0x18,0 cbi 0x18,0 даст тебе уще минус байта 3 Добавлено: Fri Mar 17, 2017 12:05 am |
Если выходу в PINB писать единицу, то он будет инвертировать свое состояние. Работает только у сравнительно новых АВРок. TAN писал(а): А что такого в АРМе в золоте, чтоб его фоткать? А, я подумал что импорт Но все равно интересно. Добавлено: Fri Mar 17, 2017 12:09 am |
Удалено модератором. Добавлено: Fri Mar 17, 2017 2:19 am |
Я вот вроде со всем согласен, но уже заебла политота со всех щелей. Итак это говно везде, а тут я вчитывался в тему Си и МК , и тут ушат дерьма этого ... Добавлено: Fri Mar 17, 2017 4:35 am |
Ёбнуть чтоль на кнопочку бан для разнообразия!? ну так, чиста для борьбы с укрофашистами убивающими своих граждан. :D реальне зуебало уже, у меня на работе два хохла съебавших с донбаса, так один за рашку, другой хохляшку - они грызуться каждый день. Вы все мудаки, просто поддерживающие разные стороны одного говна. одни за яхту обрабовича, другие за виллу порошенки. грызитесь и воюйте далльше. но не сдесь. Хватит уже пытаться разжечь. тут еще не хватало этого дерьма Если выходу в PINB писать единицу, то он будет инвертировать свое состояние. Работает только у сравнительно новых АВРок. это интересно, а как это, ведь запись единицы это "sbi" т.е. установить бит. команды инверсии бита вроде как нету у них Добавлено: Fri Mar 17, 2017 9:35 am |
Это железная фича походу. Добавлено: Fri Mar 17, 2017 11:26 am |
Тогда это не фича а баг, достойный занесения в еррата. Хоть десять раз выполняй sbi все равно должна быть единица, ведь это блин set bit мать его, инверсии бита среди команд не видел чоото. Надо изучить на железе данный вопрос вечерком, потому как потенциальное место для пиздеца. У меня присвоения байта целиком нигде не используетая, везде работа с битами, но насколлко помню у тини 85 два раза portb|=1<<0 (компилится в sbi 0x17,0) как и положено дает два раза установку единички. Иначе мнеб от клиентов давно пиздец настал. Была бы инверсия яб еще пару байт сэкономил у светодиодной мигалки Добавлено: Fri Mar 17, 2017 12:00 pm |
Ну если и баг, то вроде не страшный, это же PINB. Делать туда SBI - обычно нет смысла. Добавлено: Fri Mar 17, 2017 12:08 pm |
Да не баг это, а фича Добавлено: Fri Mar 17, 2017 12:25 pm
|
Аааа. Pinb !????? А я то думал что portb. Тада прикольно. Можно юзать данную штуку. Надо внимательней читать Добавлено: Fri Mar 17, 2017 12:27 pm |
Спасиба Не знала. Значит, невнимательно читала даташиты Столько лет использую эти авки, а это как-то прошло мимо мозга. Или это появилось только в новых даташитах? Добавлено: Fri Mar 17, 2017 12:28 pm |
Это уже серия А вроде. Добавлено: Fri Mar 17, 2017 12:32 pm |
Лицензионное соглашение (c)Flyback.org.ru Российское общество любителей высоких напряжений. Использование материалов с данного сайта и форума возможно только с разрешения администрации. |