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

 
 
3 страниц V  < 1 2 3 >  
Closed TopicStart new topic
> не пишится в EEPROM данные, Реально не пишится в EEPROM данные
Sholkin
сообщение Apr 20 2007, 15:26
Сообщение #16


Участник
*

Группа: Новичок
Сообщений: 41
Регистрация: 2-04-07
Пользователь №: 26 711



Парни что реально не кто не сможет помочь ?
Обидно
Go to the top of the page
 
+Quote Post
Wild007
сообщение Apr 20 2007, 15:41
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 226
Регистрация: 25-03-05
Из: Беларусь
Пользователь №: 3 672



Полностью согласен с:
Цитата(bodja74 @ Apr 10 2007, 18:52) *
1 Есть такая волшебная строчка
.include "C:\...\m8def.inc"
она позволит заместь адрессов регистров и битов писать их имена,и никто не будет высматривать названия регистров по вашим адрессам в коде.
..............................................
Возможно я еще что нибудь подсказал если приведете код в читабельный вид (п 1) ,......

А так разбирать wink.gif
Цитата
Это просто дурной тон написания программ. В такой каше найти почему что-то не работает не тривиальная задача


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Sholkin
сообщение Apr 27 2007, 14:46
Сообщение #18


Участник
*

Группа: Новичок
Сообщений: 41
Регистрация: 2-04-07
Пользователь №: 26 711



А если так уже программа написана вся . Ведь это только один блок её. Блок то прост запись в одну ячейку потом во вторую и так 7 раз потом считываем что не понятного в моём коде ? для профи по моему тут с первого взгляда видно.

Подумал попробую его упростить написать подпрограммой запись в ячейку не влоб как я написал может что и получиться попробую всётаки разобраться хотя ни чего не понятно. Почему по разному записываються данные
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Apr 27 2007, 20:58
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Я вот смотрю, что здесь все по своей культурности человеческой, не могут вам напрямую сказать. Попробую я.

Вы для чего решили программированием занятся? Мне можете не отвечать, - себе ответьте.

Если вы хотите, хоть чего-то достичь и хоть в чём то разобраться, то не ленитесь. Я бы на вашем месте закатал бы рукава и переписал всё с нуля. Используя те советы, что Вам дали.

1) Оформить процедуру записи и процедуру чтения в подпрограммы.
2) Объявить мнемонические имена и использовать их
3) Максимально прокомментировать программу.


Боятся тут нечего. В результате текст вашей программы уменьшится примерно в пять раз!

И вам в ней будет удобно разбираться и нам.
Удачи.
Go to the top of the page
 
+Quote Post
Sholkin
сообщение May 2 2007, 10:17
Сообщение #20


Участник
*

Группа: Новичок
Сообщений: 41
Регистрация: 2-04-07
Пользователь №: 26 711



Спасибо за оптвет Александр
Уже начал оформлять и запись и чтение процедурой думаю всё получиться . Напишу проверю результат на праздниках небыло времени.
Go to the top of the page
 
+Quote Post
ae_
сообщение May 2 2007, 11:29
Сообщение #21


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(Sholkin @ May 2 2007, 16:17) *
Спасибо за оптвет Александр
Уже начал оформлять и запись и чтение процедурой думаю всё получиться . Напишу проверю результат на праздниках небыло времени.

Уважаемый Sholkin !
Начало обсуждения вашей программы в другой конференции: http://www.fulcrum.ru/cgi-bin/bbs/mess_sel...4592&page=1 датировано 21.06.2006, т.е. почти год назад. Ваш "проект" обсуждался под разными темами, но ответы на все ваши вопросы всегда сводились к просьбе привести программу в читабельный вид, используя мнемонические имена. Ваши ответы тоже всегда в стиле: "мне бы только ночь простоять, да день продержаться" - "вот допишу, отлажу, а потом всё переделаю, как вы советуете".
Если за прошедшие 10 месяцев вы так и не воспользовались советом десятков участников конференции, стоит ли удивляться, что по прежнему не находится желающих вам помогать?
Go to the top of the page
 
+Quote Post
KamikFROMrussia
сообщение May 6 2007, 21:07
Сообщение #22





Группа: Новичок
Сообщений: 1
Регистрация: 6-05-07
Пользователь №: 27 552



Здорова всем!

Проблема с EEPROM:
Программирую для ATMEGA128 на С в AVRstudio 4.

#include <avr/io.h>

#define __nop __asm__ __volatile__ ("nop":smile.gif;

void eddyEEPROMwrite ( uint8_t ADDR, uint8_t DAT )
{
while(EECR & (1<<EEWE)) ;

EEAR = ADDR;//location
EEDR = DAT;//byte
/* Write logical one to EEMWE */
EECR |= (1<<EEMWE);
/* Start eeprom write by setting EEWE */
EECR |= (1<<EEWE);
__nop;
__nop;

}

uint8_t eddyEEPROMread ( uint8_t ADDR )
{

uint8_t getDAT;
while(EECR & 0x02);

EEAR = ADDR;//location;
EECR |= (1<<EERE);
while ( EECR & 0x01 );
getDAT=EEDR;
return getDAT;
}

int main(void)
{
uint8_t ad, da, res;
ad=0;
da=1;
eddyEEPROMwrite( ad, da );
res=eddyEEPROMread( ad );
while(1);
}

Кто-ниб может подсказать почему условие

while(EECR & 0x02);

не выполняется при том, что бит EEWE(0x02) в регистре EECR в нуле. Это первое.

Второй вопрос:

Кто-нибудь использовал стандартную библиотеку eeprom.h?
Зачем там нужен дефайн:
#define EEMEM __attribute__((section(".eeprom")))
и как его правильно использовать?

Приведите, пожалуйста, проверенные примеры на С записи данных в ЕЕПРОМ для атмеге128 или других схожих МК.

Заранее всем спасибо!
Go to the top of the page
 
+Quote Post
singlskv
сообщение May 6 2007, 21:25
Сообщение #23


дятел
*****

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



Цитата(KamikFROMrussia @ May 7 2007, 01:07) *
int main(void)
{
uint8_t ad, da, res;
ad=0;
da=1;
eddyEEPROMwrite( ad, da );
res=eddyEEPROMread( ad );
while(1);
}

Во-первых, никогда не пишите в ячейку 0 EEPROM на AVR !!!
Код
Чтение:
      while(EECR & (1<<EEWE));  // запись закончена ?
      EEAR=EEAddr;                    // Адрес
      EECR |= (1<<EERE);          // читаем
      tmp=EEDR;                        // данные

Запись:
      while(EECR & (1<<EEWE));  // запись закончена ?
      EEAR=EEAddr;                    // Адрес
      EEDR=tmp;                        // данные
      EECR |= (1<<EEMWE);       // пишем
      EECR |= (1<<EEWE);
Go to the top of the page
 
+Quote Post
aesok
сообщение May 6 2007, 22:31
Сообщение #24


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(KamikFROMrussia @ May 7 2007, 01:07) *
Кто-нибудь использовал стандартную библиотеку eeprom.h?
Зачем там нужен дефайн:
#define EEMEM __attribute__((section(".eeprom")))
и как его правильно использовать?


Так eeprom.h и нужно использовать, а не изобретать велосипед.

Проблема в этом коде:

EECR |= (1<<EEMWE);
/* Start eeprom write by setting EEWE */
EECR |= (1<<EEWE);

Бит EEWE должен быть установлен в единицу не позже чем через 4 цикла после установки в единицу бита EEMWE.

Во первых вы не отключаете прерывания, а оно спокойно может произойти между записью EEMWE и EEWE!

Во вторых язык С не дает ни каких гарантий о времени исполнения операций!!!! Да, на уровне оптимизации -Os этот код исполниться меньше чем за 4 цикла. Но без оптимизации (-O0) может быть больше 4 циклов.

Посмотрите ответ #5:
http://electronix.ru/forum/index.php?showtopic=29366

Там пример использования EEMEM и функций eeprom_write_block/eeprom_read_block. Также вы можете найти на своем диске файл 'avr-libc-user-manual.pdf' и посмотеть там описание функций eeprom_read_byte, eeprom_read_word, eeprom_write_byte и eeprom_write_word.

Анатолий.

PS: А вы знаете про вошебное слово: M103C?

Сообщение отредактировал aesok - May 6 2007, 22:45
Go to the top of the page
 
+Quote Post
defunct
сообщение May 7 2007, 11:24
Сообщение #25


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(singlskv @ May 6 2007, 23:25) *
Во-первых, никогда не пишите в ячейку 0 EEPROM на AVR !!!

Что за предрассудки?
Go to the top of the page
 
+Quote Post
Sholkin
сообщение May 7 2007, 12:35
Сообщение #26


Участник
*

Группа: Новичок
Сообщений: 41
Регистрация: 2-04-07
Пользователь №: 26 711



Здравствуйте.
ae_ вы немного не правы тогда у меня была в другом проблема и помощи я просил по USART.
Если прочитать у меня ни передовались данные в компр. Там мне отвичали не смотря на мой дурной тон написания . Проблема была в ни как написано а втом 1 была сосканирована документация с ошибко настройки USART были не правильно сделаны мне это указали сделал . Данные пошли но гонятся нули . Мне подсказали что нельзя сначала разряшить работу передатчика потом запретитьего разряшить работу приемника надо сразу разрешить и работу приёмника и передатчика я это сдела просто в силу своей неопытности не знал ни сталкивалься потом у меня не передовался данные первой ячейки с ошибками подсказали что нужно использовать внешний кварц а не внутрении так как у внутреннего частота ..... припоял внешний кварц всё стало работать идеально
Так что всё эти ошибки на тон написания не влияют даже если бы я написал как вы пишити (опыта у вас побольше намного) то толку бы не было . Этот блок программы я использовал чтобы смотреть что происходит с еепромом Я так написал чтобы разобраться с процом как что куда икак пишиться куда нолик куда единичка.
Это всё присказка к ae_ реально я от вас ни чего путного кроме ........
Может конечно я не прав новы профи вам видней а мы уш разьберёмся с USART. разобрался и ето добьём.


Теперь по делу с этим еепромом . Пошёл к человеку показал ему свой вот этот блок всё расписал. Вывод таков там всё правильно ошибок нет почему не пишиться пока трудно сказать. Он больше 2 ячеек еепрома не писал ку меня же надо записать 7 ячеек данных выше я уже описывал пишиться нулевая первая вторая на записи в третью встоёт прога колом.
Я написал в нормальном тоне как выше совет болт проблема скорей не в ентом ..... и мой тон написания опять не причём.
Попробую убрать USART из программы написать так если записалась зажечь стетодиот может в ентом проблема

для KamikFROMrussia сосвом уставом в чужой агород....... не похристиански создайте свою тему и тамм пи......
Извиняюсь за ранее
Go to the top of the page
 
+Quote Post
mdmitry
сообщение May 7 2007, 13:37
Сообщение #27


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



2KamikFROMrussia
В WINAVR есть библиотека для работы с eeprom, на форуме это уже обсуждалось.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение May 7 2007, 16:53
Сообщение #28


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(defunct @ May 7 2007, 14:24) *
Что за предрассудки?

Да был когда-то давно такой глюк. Но его вроде бы исправили в последующих релизах МК, но неприятный осадок и привычка остались.
Go to the top of the page
 
+Quote Post
ae_
сообщение May 8 2007, 03:45
Сообщение #29


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(Sholkin @ May 7 2007, 21:35) *
Теперь по делу с этим еепромом . Пошёл к человеку показал ему свой вот этот блок всё расписал. Вывод таков там всё правильно ошибок нет почему не пишиться пока трудно сказать.

Уважаемый Sholkin !
Потрудитесь заменить абсолютные адреса и номера битов на символьные имена регистров в/в и названий битов, прокомментировать каждую строчку, а также обяснить, что вы этими инструкциями пытаетесь сделать вот в этом крошечном фрагменте вашей программы:

ldi R20,0 ;чтение 1 цифры
OUT $1E,R20
SBI $1C,0
REP0:SBIC $1C,0
RJMP REP0
IN R21,$1D
sts $60,r21
Go to the top of the page
 
+Quote Post
Sholkin
сообщение May 10 2007, 06:09
Сообщение #30


Участник
*

Группа: Новичок
Сообщений: 41
Регистрация: 2-04-07
Пользователь №: 26 711



Здравствуйте .
Код не могу привести вставляю тут нет такого шрифта кракозябы. Предоставлю попозже.
Дело втом что читается с еепром у меня нормально у меня не пишиться убрал подпрограмму передачи через USART/. Борода тоже самое в первые 0 в 1 в 2 ячейку пишиться когда пытаюсь записать в 4 ячейку все привет в пкрвее 3 все нормально.
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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