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

gvg

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

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

  • Посещение

Репутация

0 Обычный

Информация о gvg

  • День рождения 15.01.1978

Контакты

  • Сайт
    Array

Информация

  • Город
    Array
  1. можно попробовать так: struct { unsigned char Bit1_ : 1; unsigned char Bit2_ : 1; } A1; #define Bit1 A1.Bit1_ #define Bit2 A1.Bit2_
  2. Avrstudio + Winavr

    Помоему, для того чтобы AvrStudio "заметил" WinAvr необходимо чтобы была задана переменная среды (системная переменная) с указанием пути к WinAvr, например: WINAVR = C:\WinAVR-20081205 Хотя WinAvr при установке предлагает это сделать.
  3. Необходимо исключить повторное включение *.h файлов, в начале файла xxx.h добавь например это: #ifndef XXX_H #define XXX_H в конце файла xxx.h добавь: #endif или можно в начале *.h файлов добавить строку: #pragma once но не уверен воспримет ли это codevision
  4. Можно попробовать сделать так: typedef union { DWORD val_dword; struct { BYTE code; WORD param; }; } MSG; DWORD GetMessage() { MSG msg; msg.code = ...; msg.param = ...; return msg.val_dword; } ... // один вариант MSG msg; msg.val_dword = GetMessage(); // другой вариант MSG msg = {GetMessage()}; ...
  5. Скорее всего по умолчанию UCSRB адресуется как память, т.е. к адресу регистра прибавляется 0x20. В avrgcc, например, есть макрос _SFR_IO_ADDR() определённый в файле <sfr_defs.h> для обращения к регистру командами in/out. Пишем out _SFR_IO_ADDR(UCSRB),r16.
  6. AVR Studio (WinAvr)

    Причина наверное в том, что в hex-файле данные представлены в текстовом формате, а не в бинарном, отсюда и разница в размерах.
  7. проблема с ATtiny2313

    для чтения значения TCNT1H надо сначала прочитать значение TCNT1L, т.к. доступ к TCNT1H осуществляется через временный регистр, и значение в этом регистре обновляется при доступе к TCNT1L. Для записи, сначала задаём TCNT1H, затем TCNT1L. Так со всеми 16-ти битными регистрами.
  8. Cторожевой таймер

    Все переменные (глобальные) после сброса инициализируются либо нулями либо указанными значениями. Чтобы их значения не изменялись после сброса по ВД надо объявить их как __noinit (в иаре) или поместить в секцию noinit (в gcc)
  9. Atmega640 Atmega128 SOS !

    по идее кварц и не должен запускаться, т.к. с завода они работают от внутреннего RC генератора
  10. самое простое что приходит в голову это sprintf(str,"%f",TEMP). а затем уже строку преобразовать в BCD если надо но флоат много памяти жрёт, поэтому я например по возможности использую числа с "фиксированной запятой" типа long, учитывая нужную точность
×
×
  • Создать...