Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
08.04.2009, 10:26
|
|
Частый гость
Регистрация: 29.07.2008
Сообщений: 29
Сказал спасибо: 24
Сказали Спасибо 7 раз(а) в 5 сообщении(ях)
|
Огромное спасибо avr123-nm-ru.
|
|
|
|
08.04.2009, 17:53
|
|
Прохожий
Регистрация: 24.09.2007
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от avr123-nm-ru
|
Сообщение от Too_much_FeaR
|
как насчет того, что 2.03.4, не делает "*__.С" файл, который, скажем, VMLAB пользует.
|
Просто в VMLAB укажите существующий .с
Я вам очень рекомендую использовать стабильный CVAVR 1.25.9 - код очень хороший делает - http://avr123.nm.ru
скачать CodeVisionAVR с лекарством - 2 Mb всего.
|
ок,
|
|
|
|
08.04.2009, 18:29
|
|
Временная регистрация
Регистрация: 13.02.2008
Сообщений: 60
Сказал спасибо: 10
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Добрый день.Подскажите пожалуйста как корректно организовать обращение к 16 разрядным регистрам в компиляторе CodeVisionAVR(ver.2.03.09.Standart).Думал сделать так: в заголовочном файле написал
Код:
|
#define TCNT1 (*(volatile unsigned int *)0x84)
(как например в ImageCraft) |
компилирует без проблем,но запись вначале производится в младший байт, а затем в старший.
Код:
|
; 0000 0013 TCNT1=0x0056;
LDI R30,LOW(86)
LDI R31,HIGH(86)
STS 132,R30
STS 132+1,R31 |
Как научить компилятор делать это наоборот?
|
|
|
|
08.04.2009, 18:36
|
|
Частый гость
Регистрация: 29.07.2008
Сообщений: 29
Сказал спасибо: 24
Сказали Спасибо 7 раз(а) в 5 сообщении(ях)
|
Самое простое решение сделайте в программе ассемблерную вставку.
|
|
|
|
08.04.2009, 19:05
|
|
Временная регистрация
Регистрация: 13.02.2008
Сообщений: 60
Сказал спасибо: 10
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Пока так и делаю,но неудобно очень.
|
|
|
|
09.04.2009, 09:41
|
|
Частый гость
Регистрация: 29.07.2008
Сообщений: 29
Сказал спасибо: 24
Сказали Спасибо 7 раз(а) в 5 сообщении(ях)
|
Если сделать объявление:
union
{
unsigned int ToByte;
struct
{
unsigned char LowByte;
unsigned char HigByte;
};
};
то можно работать по принципу:
{
ToByte = 0x1234;
Младший регистр = LowByte;
Старший регистр = HigByte;
}
В CV не проверял, в IAR работает.
|
|
|
|
09.04.2009, 23:38
|
|
Временная регистрация
Регистрация: 13.02.2008
Сообщений: 60
Сказал спасибо: 10
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Спасибо огромное, попробую.
|
|
|
|
10.04.2009, 00:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Код:
|
union
{
unsigned int ToByte;
struct
{
unsigned char LowByte;
unsigned char HigByte;
}byte;
}un;
un.ToByte = 0x1234;
un.byte.LowByte=0x56; |
Нет ?
ЗЫ. юнионы начали работать в кодевижин с версии 2.3.4, кажется
|
|
|
|
10.04.2009, 09:27
|
|
Частый гость
Регистрация: 29.07.2008
Сообщений: 29
Сказал спасибо: 24
Сказали Спасибо 7 раз(а) в 5 сообщении(ях)
|
Присваивать имена ни union, ни struct при единичном использовании не надо.
Таким образом, решаются проблемы разложения многобайтных переменных в однобайтные и т.д. включая битовые поля. Проверено в IAR.
|
|
|
|
10.04.2009, 10:54
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Error: C:cvavr2snd_m8snd_m8snd_m8.h(44), included from: snd_m8.c: identifier expected
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:14.
|
|