роботы робототехника микроконтроллеры


 Страниц (2): [1] 2 »   

> Описание: Наверное я отсталый какой то...
cut Post Id



Генерал


Сообщений всего: 93
Дата рег-ции: Янв. 2011  



Программа для мигания светодиодом.


#define F_CPU 1000000UL // Задаем тактовую частоту.
#include <avr/io.h> //Что это? Подключение библиотеки ввода вывода?
#include <util/delay.h> // Что это такое?
int main(void)
{
DDRD = 0xff //Устанавливаем 0 на всех выводах порта д. А как мне назначить этот порт на вывод ?
while (1)
{
_delay_ms(5000);
PORTD |= _BV(PD0);
_delay_ms(1000);
PORTD = 0x00;
_delay_ms(1000);
};
}

В чем отличия DDRD = 0xff от PORTD = 0x00; ?

Что будет если частоту не задать?
 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



cut пишет:
В чем отличия DDRD = 0xff от PORTD = 0x00; ?
читайте в даташите Улыбка
или тут, табл. 25
cut пишет:
Что будет если частоту не задать?
это нужно для компилятора при расчёте разных "_delay_ms(1000);"
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



http://myrobot.ru/forum/topic.ph...84526#1295684526
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



не нужно превращаться в робофорум, плиз.

DDRD отвечает за что отвечают ножки порта.
DDRD=0xf0
старшие четыре бита порта D отвечаю за выход, младшие четыре бита порта D - за вход
PORTD=0x44 - установит старшие четыре бита порта D в 4
char aux= PIND - запишет в младшие четыре бита переменной aux значения младших четырех бит порта D

Шесть строчек- и вроде все понятно, в даташите нужно прочесть несколько страниц чтобы это уловить (при знании языка).

А частоту надо задавать ту которая у вас на самом деле стоит, вот это нужно смотреть по даташиту.
то есть заодно марку МК тоже нужно продефайнить
(Добавление)
кстати сайт www.atmel.com дизайн изменил, так что даташит у них еще поискать надо.
 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



cjA пишет:
А частоту надо задавать ту которая у вас на самом деле стоит, вот это нужно смотреть по даташиту.
только в том случае, если МК работает от внутреннего RC.

cjA пишет:
DDRD отвечает за что отвечают ножки порта.
DDRD=0xf0
старшие четыре бита порта D отвечаю за выход, младшие четыре бита порта D - за вход
PORTD=0x44 - установит старшие четыре бита порта D в 4
char aux= PIND - запишет в младшие четыре бита переменной aux значения младших четырех бит порта D


Шесть строчек- и вроде все понятно
сомневаюсь....
cut, вам эти шесть строчек понятны ? Улыбка
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



nest пишет:
только в том случае, если МК работает от внутреннего RC

вовсе нет
я тоже думал что 2313 работает на 8Мгц без кварца как написано на первой странице даташита, а оказалось (на майроботе и узнал) что там предделитель и работает она по дифалту с завода на 1Мгц. Как-то мне сложно читать все 232 страниц на английском, а тут (на майроботе)- несколько строк и понятно.
 
 Top
ОЛЕГ Супермодератор Post Id



Супермодератор


Сообщений всего: 1732
Дата рег-ции: Нояб. 2008  



cut пишет:
#include <avr/io.h> //Что это? Подключение библиотеки ввода вывода?
#include <util/delay.h> // Что это такое?


1. Да.
2. Библиотека обработки задержек delay.

Попробуйте вот эти:
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/iom8.h>
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



nest пишет:
сомневаюсь....

Ну просто Вы еще не привыкли к мнемонике комманд языка ассемблера микропроцессоров, со временем увидете что это не сложнее чем Сишные R>>T<<G
 
 Top
cut Post Id



Генерал


Сообщений всего: 93
Дата рег-ции: Янв. 2011  



cjA, спасибо, теперь понял что DDRD этго конфигурация порта на ввод или на вывод, а portd это конфигурация сигнала на порте. Правельно?
 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



Правильно.
 
 Top
-dead- Post Id


Президент


Сообщений всего: 966
Дата рег-ции: Февр. 2009  



Причем PORTD в случае работы порта как "выход" это уровень сигнала, а в случае как "вход" - включение у порта встроенного подтягивающего к VCC резистора номиналом 10-30 кОм

А читать порт надо в режиме "входа" черезе PIND
 
 Top
nest Администратор Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  



-dead- пишет:
А читать порт надо в режиме "входа" черезе PIND
через PIND можно читать не только в режиме "входа", но и в режиме "выхода".
 
 Top
cut Post Id



Генерал


Сообщений всего: 93
Дата рег-ции: Янв. 2011  



#include <avr/iom8.h> - а вот это что за библиотека?
А где можно ознакомится с библиотеками конкретно, что бы понять все?
(Добавление)
cjA пишет:
Ну просто Вы еще не привыкли к мнемонике комманд языка ассемблера

Погодите, это же вроде про си разговор?
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



если winavr- полазить по ее папкам, почитать хелпы или даже скачать исходники попробовать.
 
 Top
cut Post Id



Генерал


Сообщений всего: 93
Дата рег-ции: Янв. 2011  



К сожалению у меня есть только CVAVR, a winavr я не знаю где достать.
 
 Top
Страниц (2): [1] 2 »
« Программирование микроконтроллеров »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru