0
Лучше для Ардуино такую фиговину напишите. :D
  • avatar
  • _YS_
  • 01 августа 2013, 19:28
0
Да, и еще я бы таки поставил «лишние» скобки.

GPIOA->CRH = (GPIOA->CRH & (~(GPIO_CRH_MODE11|GPIO_CRH_CNF11))) | (GPIO_CRH_MODE11_0 | GPIO_CRH_CNF11_0);


Запись получается эквивалентной

GPIOA->CRH&=~(GPIO_CRH_MODE11|GPIO_CRH_CNF11);
GPIOA->CRH|=(GPIO_CRH_MODE11_0 | GPIO_CRH_CNF11_0);
  • avatar
  • _YS_
  • 01 августа 2013, 19:23
0
Напишите GPIO_INIT_PIN несколько раз.

Узнаю Ардуино-стайл.

Намек, что здесь Выход OPEN-DRAIN 10МГц — ну точно не просматривается.

Для этого есть комментарии.

Немного отвлекшись от темы, скажу, что многие «ушлые» любители быдлокодить найдут у меня много «лишнего», например, операция «GPIOA->CRH & (~(GPIO_CRH_MODE11|GPIO_CRH_CNF11))», которая позволяет полностью очистить «место» для будущих установок "| (GPIO_CRH_MODE11_0 | GPIO_CRH_CNF11_0)". Куда проще пихать инструкции рода "|=","&=~" по месту и без места, не вдаваясь в саму суть этой операции.

Чего там позволяет? Операция

x&=y;


расширяется ровно в

x=x & y;

Это принципиально одно и то же. Так что да, у Вас есть лишние буквы. «Очистить место» позволяет простое присвоение:

GPIOA->CRH = (~(GPIO_CRH_MODE11|GPIO_CRH_CNF11)) | (GPIO_CRH_MODE11_0 | GPIO_CRH_CNF11_0);


Тогда все биты, кроме указанных, примут значение «1». Но надо подумать, нужно ли оно.
  • avatar
  • _YS_
  • 01 августа 2013, 19:19
0
Дело в моей вселенской лени. :)
  • avatar
  • _YS_
  • 27 июля 2013, 14:48
0
«Это не баг, это фича.» :)

Я писал об этом.

Реализация работоспособна в интервале тактовых частот от 5 до 12МГц.
  • avatar
  • _YS_
  • 26 июля 2013, 20:29
0
ЫЫЫ :)
  • avatar
  • _YS_
  • 19 мая 2013, 19:45
0
Лол, топик-то на радиокоте тоже за моим авторством. Вообще, я сначала описал это там, и только потом здесь. :)

DLL мне не помогает, вроде я там уже отписывался.
  • avatar
  • _YS_
  • 04 мая 2013, 14:06
0
Это интересная штука, да.
  • avatar
  • _YS_
  • 01 мая 2013, 16:57
0
Красивые картинки. :)
  • avatar
  • _YS_
  • 01 мая 2013, 16:53
0
Использовал пару раз. Кривенько. Но если нет под рукой Маткада, сойдет.
  • avatar
  • _YS_
  • 01 мая 2013, 16:46
0
Эм, а поговорить с интересными людьми, которые могут много рассказать — не считается? Там же выступают представители компаний.

Я сам хожу на такие семинары (не в Калифорнии, правда, поближе), чтобы поговорить с представителями дистрибьюторов, представителями самих фирм, etc. А платка — прятный бонус. Но то, что я черпаю из разговоров интересно только мне, а вот платке порадоваться можно со всеми. :)

Помимо ознакомления с новыми продуктами и технологиями ...
  • avatar
  • _YS_
  • 01 мая 2013, 15:45
+4
Человека можно вывезти из рашки, но вывести рашку из человека — это проблема.

По себе знаете? :D Цивилизованный европеец просто порадуется, что его собрату вот так вот повезло. И только обитатель рашки (не России, а именно рашки) будет исходить желчью по поводу того, что кому-то удалось урвать «халяву» (относительную, надо же было и что-то отдать), а ему нет. Слава Богу, я живу именно в России, где поделиться радостью с товарищами не опасно.

По теме — в собирании отладочных плат нет ничего плохого, если собирает их электронщик. Для этого они, в общем, и сделаны — пощупать новое железо, помигать светодиодиком, после чего начать разрабатывать железку на целевом чипе, периодически проверяя неясные моменты на отладке. Делать рабочий проект целиком на отладочной плате — подход не особо квалифицированного любителя (ардуинщика?) или спешащего/поленившегося профессионала.
  • avatar
  • _YS_
  • 01 мая 2013, 15:01
0
Да не за что. :) Можете посмотреть мой новый блог, я теперь живу там. :) Может еще что-то интересное для себя найдете. :)
  • avatar
  • _YS_
  • 08 апреля 2013, 22:59
0
Не за что. Если чего, комментируйте в моем блоге в соотв. статье, а то тут уже слишком затянулась ветка. Там регистрации не надо.
  • avatar
  • _YS_
  • 02 апреля 2013, 22:04
0
Раздельные заголовочники с определениями для асма и С. Сейчас определения с разным синтаксисои разделяются проверкой макроса __ASSEMBLER__. За счет этого ассемблер не видит кода на Си, и не ругается на него. А в шестой студии, видимо, что-то с этим сломано. Так что можно просто разделить файлы. В один сложить определения для асма и включить в .s, в другой — определения для C с extern, и включать по необходимости.

Я гляжу, Вы плохо представляете, как это все работает вместе. Почитайте про базовые принципы сборки программы GNU Toolchain'ом — что в какой последовательности компилируется и линкуется.
  • avatar
  • _YS_
  • 02 апреля 2013, 19:20
0
Сделать раздельные файлы пробовали? Это скорее всего решит проблему…
  • avatar
  • _YS_
  • 01 апреля 2013, 22:50
0
Смысла вставлять его руками нет. Идея в том, что по этому дефайну компиляторы при парсинге узнают, что для кого, ибо при парсинге файла компилятором Си либо ассемблером он определяется автоматически в зависимости от того, какая тулза читает файл. Скорее всего, там есть какой-то аналогичный дефайн, поищите документацию.

Или просто сделайте два заголовочника, один чисто для асма, другой чисто для Си и продублируйте общие определения.
  • avatar
  • _YS_
  • 01 апреля 2013, 21:48
0
Это надо читать в документации.
  • avatar
  • _YS_
  • 01 апреля 2013, 20:59
0
Точнее, __ASSEMBLER__ это не директива, а дефайн.
  • avatar
  • _YS_
  • 01 апреля 2013, 20:18
0
Вы удивитесь, но в мануале.: ) В AVR Studio используется компилятор AVR GCC, точнее целиком AVR GCC Toolchain. В моей стаье есть ссылка на мануал, на сайте Atmel тоже 100% доки есть.

.global — директива линкеру, что это определение надо сделать видимым извне.

extern — директива линкеру, что символ надо искать где-то во внешних модулях.

Лучше почитайте про то, определена ли директива __ASSEMBLER__.
  • avatar
  • _YS_
  • 01 апреля 2013, 20:17