роботы
робототехника
микроконтроллеры
Главная
Как сделать робота
Новости
Спорт
Статьи
Wiki
Форум
Downloads
Ссылки
Контакты  


 Страниц (17): В начало « ... 8 9 10 11 [12] 13 14 15 16 ... » В конец    

> Без описания
1_ulyanovsk
Отправлено: 04 Ноября, 2009 - 23:23:06
Post Id



Маршал


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





С Барселоной ! Было действительно зрелищно.Казань то рядом (для меня по крайней мере Улыбка) нужно было подъсуетиться. Ну классно классно )
 
 Top
VCOM Супермодератор
Отправлено: 04 Ноября, 2009 - 23:27:04
Post Id



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


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





Ну от меня до Казани ночь на поезде... А чо где они играли то? В Казани чтоле? Зы сорри за офтоп Ж))))
 
 Top
1_ulyanovsk
Отправлено: 05 Ноября, 2009 - 19:33:11
Post Id



Маршал


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





VCOM пишет:
Ну от меня до Казани ночь на поезде... А чо где они играли то? В Казани чтоле? Зы сорри за офтоп Ж))))

Ага ! В Казани испанцев морозили ))
 
 Top
1_ulyanovsk
Отправлено: 06 Ноября, 2009 - 21:23:10
Post Id



Маршал


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





Вечер добрый. Уважаемые знатоки, слышал EEPROM тоже ограничено по числу перезаписи. Ни кто не скажет на сколько ?
 
 Top
nest Администратор
Отправлено: 06 Ноября, 2009 - 21:53:42
Post Id



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


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





100 000 Write/Erase Cycles.
при неаккуратном пользовании протирается до дыр, говорят.
 
 Top
1_ulyanovsk
Отправлено: 07 Ноября, 2009 - 14:47:13
Post Id



Маршал


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





Добрый день. Помогите разобраться с Датишем mega8?

void EEPROM_write(int adress, int data)
{
while(EECR & (1<<EEWE))
;
EEAR=adress;
EEDR=data;
EECR|=(1<<EEMWE);
EECR|=(1<<EEWE);
}

Пусть data - число от 1 (0b1) до 10 (0b1010) КАК эти чиса записать в EEPROM точнее не понятна переменная adress в датише там EЕARL EЕARH до 15 разряда показаны. Шок Как понимать EEAR ??
(Добавление)
Ааа ! То есть если мне надо записать десятку 0b1010 в EEPROM то мне надо через EEAR выделить четыре бимта памяти EEPROM ???? И установить в ЕЕАR 4 ????

(Отредактировано автором: 07 Ноября, 2009 - 14:48:05)

 
 Top
nest Администратор
Отправлено: 07 Ноября, 2009 - 19:33:19
Post Id



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


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





EEAR=adress; - адрес, куда пишите. выражается 16-тью битным числом. компилятор сам "разберётся" где и как EЕARH:EЕARL.
EEDR=data; - байт, который пишите.
 
 Top
1_ulyanovsk
Отправлено: 07 Ноября, 2009 - 21:29:37
Post Id



Маршал


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





nest пишет:
EEAR=adress; - адрес, куда пишите. выражается 16-тью битным числом. компилятор сам "разберётся" где и как EЕARH:EЕARL.
EEDR=data; - байт, который пишите.

Сорри, но не понимаю, что за адрес ? Как понять - адрес переменной в памяти EEPROM ? Адрес- подводный камень для меня.
 
 Top
nest Администратор
Отправлено: 07 Ноября, 2009 - 21:46:08
Post Id



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


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





1_ulyanovsk пишет:
не понимаю, что за адрес

адрес - это "номер" ячейки памяти. как, например, номер вашей квартиры в доме.
что бы доставить вам письмо (байт данных) нужно знать номер вашей квартиры в доме.

может быть вот это вам поможет: Запоминающие устройства
разницой ОЗУ(RAM) и ПЗУ (ROM) пока не интересуйтесь, это не важно.
 
 Top
1_ulyanovsk
Отправлено: 07 Ноября, 2009 - 22:06:50
Post Id



Маршал


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





nest пишет:
1_ulyanovsk пишет:
не понимаю, что за адрес

адрес - это "номер" ячейки памяти. как, например, номер вашей квартиры в доме.
что бы доставить вам письмо (байт данных) нужно знать номер вашей квартиры в доме.

может быть вот это вам поможет: Запоминающие устройства
разницой ОЗУ(RAM) и ПЗУ (ROM) пока не интересуйтесь, это не важно.

То есть я могу спокойно записать в адрес adress=1 ? (первая ячека) А внутренний дешифратор найдет эту ячейку и счиает значение data оттуда ?
 
 Top
nest Администратор
Отправлено: 07 Ноября, 2009 - 22:17:26
Post Id



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


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





лучше заглянуть в даташит и посмотреть, где начинается адрес EEPROM выбранного микроконтроллера. Это описанно где то в разделе "Memory Map".
 
 Top
1_ulyanovsk
Отправлено: 07 Ноября, 2009 - 23:06:08
Post Id



Маршал


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





??
Прикреплено изображение
1546.JPG

 
 Top
nest Администратор
Отправлено: 07 Ноября, 2009 - 23:15:47
Post Id



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


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





нет, это - адрес регистров.

а вот, что нам m8def.inc пишет:

.equ EEPROMEND = 0x01ff
#pragma AVRPART MEMORY EEPROM 512


0x01ff - это конец. т.е. места есть в ЕЕПРОМ отсюда и ещё 512 байт "в минус".
 
 Top
1_ulyanovsk
Отправлено: 07 Ноября, 2009 - 23:29:43
Post Id



Маршал


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





nest пишет:
нет, это - адрес регистров.

а вот, что нам m8def.inc пишет:

.equ EEPROMEND = 0x01ff
#pragma AVRPART MEMORY EEPROM 512


0x01ff - это конец. т.е. места есть в ЕЕПРОМ отсюда и ещё 512 байт "в минус".

Большое спасибо. С адресами надо как то налаживать отношения . .
 
 Top
1_ulyanovsk
Отправлено: 08 Ноября, 2009 - 14:49:47
Post Id



Маршал


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





Ребят. На симуляторе работает как надо. Цыфры бегут пока нажата кнопка.
На практике цыфры бегут всегда. Когда нажимаю кнопку останавливаюстя и причем всегда на дисплее 2 или 7 )) Тер.вер сдает позиции. Где может быть ошибка ? Кнопка идет на С0 с плюса питания.
#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#define F_CPU 8000000UL
#define a 1
#define b 8
#define c 128
#define d 16
#define e 4
#define f 2
#define g 32
#define h 64

int N;
unsigned char DigNumber = 0;
unsigned char Dig[10];
N=0;

int main(void)
{

DDRD = 0xff;
DDRC = 0x00;

Dig[0] = (a+b+c+d+e+f);
Dig[1] = (b+c);
Dig[2] = (a+b+g+e+d);
Dig[3] = (a+b+g+c+d);
Dig[4] = (f+g+b+c);
Dig[5] = (a+f+g+c+d);
Dig[6] = (a+f+g+c+d+e);
Dig[7] = (a+b+c);
Dig[8] = (a+b+c+d+e+f+g);
Dig[9] = (a+b+c+d+f+g);

while(1)
{
if (PINC==0b1) N=N+1;
PORTD=Dig[N];
if (N==10) N=0;
}
}
 
 Top
Страниц (17): В начало « ... 8 9 10 11 [12] 13 14 15 16 ... » В конец
« Программирование микроконтроллеров »


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





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown