Перейти к содержанию
    

777777

Участник
  • Постов

    1 085
  • Зарегистрирован

  • Посещение

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


  1. AVR Studio 4.19 Beta

    Как интересно. А она продолжает развиваться? Разве ее не заменили пятеркой?
  2. Этот прием используеся для других целей, например чтобы не выполнять последующие условия при выполнении первых: do { if(А) { /* действие для А */ break; } if(Б) { /* действие для Б */ break; } if(В) { /* действие для В */ break; } } while (0); Это придумали goto-ненавистники, они считают что это уродство лучше чем goto. А чтобы ограничить видимость переменной достаточно просто ограничить ее фигурными скобками. Никто не запрещает ставить их в любом месте программы.
  3. Задолбал volatile!

    Ничего невероятного. Я находил баг даже в Visual Studio 7.1, правда не критичный - переменная const не воспринималась компилятором как const. А уж Кейл - не самая передовая фирма. µVision V4.00u Toolchain: RealView MDK-ARM Version: 4.03a Toolchain Path: BIN40\ C Compiler: Armcc.Exe V4.0.0.524 Assembler: Armasm.Exe V4.0.0.524 Linker/Locator: ArmLink.Exe V4.0.0.524 Librarian: ArmAr.Exe V4.0.0.524 Hex Converter: FromElf.Exe V4.0.0.524 CPU DLL: SARMCM3.DLL V4.03a Dialog DLL: DARMSTM.DLL V1.45b Target DLL: BIN\UL2CM3.DLL V1.62 Dialog DLL: TARMSTM.DLL V1.43 А вы не любите пролетариат! Именно так и пришлось поступить - все члены сделал volatile
  4. Задолбал volatile!

    volatile применяется к переменным, а не к объявлениям. Но я пробовал писать typedef volatile struct _CCommand { ... u8 Data[15]; } CCommand; - не помогает, хотя компилятор и не ругается.
  5. Задолбал volatile!

    Я тоже в шоке. typedef struct _CCommand { u8 Length; u8 Cmd : 4; u8 Addr : 4; vu8 Data[15]; } CCommand; volatile CCommand Command; Если Data[15] объявлено как u8, то не работает. Если Command без volatile, то тоже.
  6. Задолбал volatile!

    Для этого надо как минимум иметь легальный Кейл. И вообще, если вам нечего ответить - стоит ли засирать форум?
  7. Задолбал volatile!

    Имеется структура, которая используется в прерывании, поэтому объявляю ее volatile. Однако компилятор выкидывает обращение к полям этой структуры. То есть, к примеру, пишу if(Command.Data[0] == 1) { ... } а компилятор считает, что Data[0] всегда не равно 1 и поэтому выкидывает содержимое скобок. Оказывается, нужно еще и каждое поле структуры объявлять volatile! Это что, нормально? Я же саму переменную Command объявил volatile, этого мало? По стандарту так положено? Или глюк в Кейле?
  8. С таким же успехом любой операционник можно назвать Variable Gain Amplifiers - ведь его усиление можно "легко" поменять, изменив резисторы. Нужен усилитель, усиление которого меняется подачей на него сигнала.
  9. Не хочу ограничивать вашу фантазию :) Частота передаваемого сигнала - до 25...30 кГц, с гармониками наверное до 300...500.
  10. А таким способом пользоваться не следует. Потому что если придется сравтивать не с 2, а например с 8, то результат будет неправвильным.
  11. Есть подозрение, что стек налазит на данные. Как это определить? Есть ли какие-то отладочные средства или вручную изгаляться?
  12. Только если у него есть доступ к некой эталонной частоте. Иначе никак.
  13. fmul, fmuls...

    Да, точняк! По аппнотам лазил, а эта как-то прошла мимо :(
  14. fmul, fmuls...

    В мегах есть команды, которые после умножения сдвигают результат влево. Фича полезная для дробных вычислений с фиксированной точкой, но обычно прихрдится иметь дело с как минимум двухбайтовыми данными. Можно ли эти команды приспособить для умножения двухбайтовых чисел?
  15. Это не совсем смена, это просто модифицированный кристалл. У Atmega168 есть другие фичи - ее температурный диапазон 125 градусов, а у Atmega168-15AD - 150. Поскольку альтернативы им нет, вряд ли их снимут с производства.
  16. Нет, напряжение на диоде точно не упадет. :) Ток, правда, может.
  17. The FOC1A/FOC1B bits are only active when the WGM13:0 bits specifies a non-PWM mode. А вообще код странный. Что вы хотите от него добиться? На выходе OC1B ШИМ есть?
  18. Скорее всего макрос случайно оказался рекурсивным.
  19. EEPROM ATtiny2313

    Наверно удивительно?? Конечно удивительно! А сброс как вы на него подаете? Он-то нужен независимо от того, работаете вы с EEPROM или нет.
  20. Запись идет действительно долго, поэтому глупо сидеть в цикле и ждать готовности, для этого у самого еепрома есть свои прерывания, посредством которых он сообщает об окончании записи. Если программу написать столь же грамотно, как этот текст, то непременно заглючит. Но в AVR никаких предпосылок к этому нет. Если у вас запись в еепром выполняется в "приреванни", то это архитектурная ошибка. Если же при этом программа висит там ожидая окончания записи, то за такое нужно отрывать руки. В таких случаях делают кольцевой буфер, программа записывает туда информацию, необходимую для записи, а подпрограмма обработки прерываний в фоновом режиме, не торопясь, их записывает.
  21. Это что же, у трансформатора киловольтная вторичная обмотка? ИМХО лучше обмотку для надежности сделать поменьше, но увеличить число ступеней умножителя.
  22. ИНтересно, а какие контакты у него "соответствующие"? Для программирования нужен программатор. Проще всего купить AVRISP mkII, он стоит совсем недорого, зато стопроцентно работает.
×
×
  • Создать...