реклама на сайте
подробности

 
 
> Разница CodeVision и WinAVR
virtuality
сообщение Jul 22 2006, 10:15
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 83
Регистрация: 17-05-06
Пользователь №: 17 190



Гребаные идентификаторы....

Как просто было в CodeVision : PORTD.1=1; DDRD=1;
Пытаюсь в WinAVR сделать - достал примерно следующий код:

Код
  DDRD  &= ~(_BV(PD2));                            // Назначаем 2-ю линию порта D на вход
  PORTD |=  (_BV(PD2));                            // подключаем "подтягивающий" резистор


Нельзя ли попроще как-нибудь?


И еще вопрос - инициализирую АЦП - выдает беспорядочные хаотичные цифры. Понятно, что дело в том, что ловятся шумы. Вылечил резистором 4,7 кОм на питание. А как-нить программно нельзяли?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Laksus
сообщение Jul 22 2006, 16:39
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 146
Регистрация: 16-05-05
Пользователь №: 5 069



Цитата
xemul
#define bitset(var,bitno) ((var) |= 1 << (bitno))
#define bitclr(var,bitno) ((var) &= ~(1 << (bitno)))
bitclr(DDRD, PD2);
bitset(PORTD, PD2);

И еще можно добавить
#define CHECKBIT(ADDRESS,BIT) (ADDRESS & (1<<BIT))
(Application Note "AVR035: Efficient C Coding for AVR")
______________

Извиняюсь, что влезаю со своим вопросом, но по моему он по этой теме.
Вопрос по поводу дефайнов в файлах io*.h в WinAVR.

Понятно использование имен бит типа:
/* UCSRA */
#define RXC 7
#define TXC 6 ...и так далее.

Понятно применение имен для адресов PINx, DDRx, PORTx.

Но не может ли кто нибудь объяснить какой смысл в
именовании бит в портах:
/* PORTD */
#define PD7 7
...
/* DDRD */
#define DDD7 7
...
/* PIND */
#define PIND7 7
...
Чем это лучше чем указывать биты портов просто цифрами?
По моему писать больше, а от ошибок не помогает.
__________
Александр
2006 07 22

Сообщение отредактировал Laksus - Jul 22 2006, 16:42
Go to the top of the page
 
+Quote Post
xemul
сообщение Jul 22 2006, 17:38
Сообщение #3



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Laksus @ Jul 22 2006, 20:39) *
Понятно использование имен бит типа:
/* UCSRA */
#define RXC 7
#define TXC 6 ...и так далее.

Понятно применение имен для адресов PINx, DDRx, PORTx.

Но не может ли кто нибудь объяснить какой смысл в
именовании бит в портах:
/* PORTD */
#define PD7 7
...
/* DDRD */
#define DDD7 7
...
/* PIND */
#define PIND7 7
...
Чем это лучше чем указывать биты портов просто цифрами?
По моему писать больше, а от ошибок не помогает.
__________
Александр
2006 07 22


Никто же не мешает задать свои осмысленные имена
#define ORelay PD6
#define ISens PD7

Я стараюсь работать избегать битовых операций с портами ввода/вывода, где это возможно, и держу их копии вида
Код
union
{
   uchar i;
   struct
   {
      uchar Out0: 1;   // естественно, лучше дать осмысленное имя
      ...
   } b;
} PortAOut;

с которыми производятся все необходимые операции, и которые переписываются наружу (например, в PortA) с требуемой частотой.
С вводом поступаю примерно также - при этом проще фильтровать медленные сигналы (та же клавиатура, например).
Ну а с быстрыми сигналами приходится работать непосредственно на портах.
И при этом мне намного симпатичнее описание для PIC'ов вида
Код
/* GPIO Bits */
static volatile bit    GPIO0    @ (unsigned)&GPIO*8+0;

Под WinAVR у меня такое не прокатило, хотя я еще не слишком упирался.

Сообщение отредактировал xemul - Jul 22 2006, 17:40
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- virtuality   Разница CodeVision и WinAVR   Jul 22 2006, 10:15
- - ksv198   Цитата(virtuality @ Jul 22 2006, 14:15) Г...   Jul 22 2006, 12:30
- - niccom   Цитата(virtuality @ Jul 22 2006, 14:15) Г...   Jul 22 2006, 12:34
- - xemul   Код#define bitset(var,bitno) ((var...   Jul 22 2006, 14:20
- - pitt   Разница CodeVision и WinAVR в том, что один пакет ...   Jul 22 2006, 16:13
|- - vesago   Цитата(pitt @ Jul 22 2006, 19:13) Разница...   Jul 23 2006, 06:41
|- - defunct   Цитата(vesago @ Jul 23 2006, 09:41) Недос...   Jul 23 2006, 20:15
|- - Serg79   Цитата(defunct @ Jul 24 2006, 00:15) Цита...   Jul 24 2006, 04:59
|- - defunct   Цитата(Serg79 @ Jul 24 2006, 07:59) Ну эт...   Jul 24 2006, 06:31
|- - vet   Цитата(Serg79 @ Jul 24 2006, 08:59) Писат...   Jul 24 2006, 07:52
|- - Serg79   Цитата(vet @ Jul 24 2006, 11:52) Цитата(S...   Jul 24 2006, 08:55
- - pitt   Во-первых, PORTD.1 = 1 эквивалентно PORTD |= ( 1 ...   Jul 23 2006, 21:32
|- - vesago   Цитата(pitt @ Jul 24 2006, 00:32) Во-перв...   Jul 24 2006, 07:14
|- - pokos   Цитата(vesago @ Jul 24 2006, 11:14) PORTD...   Jul 24 2006, 09:21
|- - vesago   Цитата(pokos @ Jul 24 2006, 12:21) Цитата...   Jul 24 2006, 09:53
|- - pokos   Цитата(vesago @ Jul 24 2006, 13:53) PORTD...   Jul 24 2006, 12:43
|- - _Bill   Цитата(pokos @ Jul 24 2006, 15:43) Цитата...   Jul 24 2006, 12:57
|- - Семён   Цитата(pokos @ Jul 24 2006, 16:43) Цитата...   Jul 24 2006, 13:07
|- - _Bill   Цитата(Семён @ Jul 24 2006, 16:07) Цитата...   Jul 24 2006, 13:14
|- - Семён   Цитата(_Bill @ Jul 24 2006, 17:14) Цитата...   Jul 24 2006, 13:28
||- - pokos   Цитата(Семён @ Jul 24 2006, 17:28) товари...   Jul 24 2006, 14:11
|- - Woodoo   Цитата(_Bill @ Jul 24 2006, 15:14) Цитата...   Jul 24 2006, 19:31
|- - pitt   Цитата(Woodoo @ Jul 24 2006, 15:31) Если ...   Jul 24 2006, 22:42
- - vet   Serg79 Ручками совершенно необязательно; лично я и...   Jul 24 2006, 09:05
|- - Семён   Цитата(vet @ Jul 24 2006, 13:05) Serg79 Р...   Jul 24 2006, 09:37
|- - Serg79   Цитата(vet @ Jul 24 2006, 13:05) Serg79 Р...   Jul 24 2006, 10:01
- - WHALE   дел на 5 минут,к тому-же я обычно свои библиотечны...   Jul 24 2006, 11:24
|- - Serg79   Цитата(WHALE @ Jul 24 2006, 15:24) дел на...   Jul 24 2006, 11:55
|- - Семён   Цитата(Serg79 @ Jul 24 2006, 15:55) Цитат...   Jul 24 2006, 12:23
|- - defunct   Цитата(Serg79 @ Jul 24 2006, 14:55) А Cod...   Jul 24 2006, 23:06
- - beer_warrior   ЦитатаИ правильно. Хотя: А IAR еще лучше, но по 5....   Jul 25 2006, 06:44
|- - osnwt   Цитата(beer_warrior @ Jul 25 2006, 09:44)...   Jul 25 2006, 10:59
- - Serg79   ЦитатаWinAVR не хуже, он просто сложнее в освоении...   Jul 25 2006, 09:04
- - beer_warrior   ЦитатаНасколько слышал, у него есть проблемы с адр...   Jul 25 2006, 11:09
|- - osnwt   Цитата(beer_warrior @ Jul 25 2006, 14:09)...   Jul 25 2006, 11:22
|- - pitt   Цитата(beer_warrior @ Jul 25 2006, 07:09)...   Jul 25 2006, 15:31
- - beer_warrior   ЦитатаЕсли писать со знанием особенностей конкретн...   Jul 25 2006, 11:31
|- - osnwt   Цитата(beer_warrior @ Jul 25 2006, 14:31)...   Jul 25 2006, 17:37
- - beer_warrior   Цитатаего стоит хотя бы отсутствие прагмы управлен...   Jul 25 2006, 17:35
|- - pitt   Цитата(beer_warrior @ Jul 25 2006, 13:35)...   Jul 25 2006, 18:50
- - tiasur   AVRGCC 4.1.1 При любой оптимизации: Код PORTD ...   Jul 25 2006, 22:16
|- - pitt   WinAVR size: Код PORTD = ( 1 << 0 ...   Jul 26 2006, 01:04
|- - tiasur   pitt, а какая у Вас версия?   Jul 26 2006, 01:43
|- - pitt   Цитата(tiasur @ Jul 25 2006, 21:43) pitt,...   Jul 26 2006, 14:04
|- - Сергей Борщ   О! Может тут кто-нибудь скажет: 1) как застави...   Jul 26 2006, 17:16
|- - aesok   Цитата(Сергей Борщ @ Jul 26 2006, 21:16) ...   Jul 26 2006, 21:03
- - beer_warrior   Цитата2) объявляю две функции (putstring, putstrin...   Jul 26 2006, 21:53
|- - pitt   Цитата(beer_warrior @ Jul 26 2006, 17:53)...   Jul 26 2006, 23:01
|- - pitt   Цитата(beer_warrior @ Jul 26 2006, 17:53)...   Jul 27 2006, 12:58
|- - pitt   Цитата(beer_warrior @ Jul 26 2006, 17:53)...   Jul 27 2006, 13:21
- - Seasonf   Прошу прощения за глупый вопрос, но как заставить ...   Aug 11 2006, 08:07
- - pitt   Код#include <avr/pgmspace.h> ... char cali...   Aug 11 2006, 11:15
- - Seasonf   Или так: #include <avr/pgmspace.h> ... pro_...   Aug 11 2006, 12:34


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 21:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.0145 секунд с 7
ELECTRONIX ©2004-2016