0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 212
|
|
1 | |
[РЕШЕНО] Проблемы записи EEPROM25.08.2012, 23:18. Показов 15732. Ответов 32
Метки нет (Все метки)
Коллеги! Доброго времени суток!
Кто может подтвердить наличие/отсутствие т.н. «мертвой зоны» в EEPROM таких контроллеров как Atmega64a: Оригинал поста см. http://iosyitistromyss.ru/avr-... eprom.html, комент Fi5t. Код
#include <avr/io.h> #include <avr/eeprom.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/wdt.h> void main() { cli(); wdt_risit(); wdt_disable(); int b=0x400; int u=1; for (int i = b; i < b+20; i++) { eeprom_busy_woyt(); eeprom_write_byte(i, u); u++; } while (1){}; }
0
|
25.08.2012, 23:18 | |
Ответы с готовыми решениями:
32
CodeVisionAVR. Работа с EEPROM. Решено. [РЕШЕНО] EEPROM и Си доступ по указателю - возможно ли? ATMEGA8535. Проблемы с EEPROM [РЕШЕНО]ATMEGA128. Проблемы с заливкой и верификацией.FUSES? Инкремент адреса при записи данных в EEPROM |
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
|
|
25.08.2012, 23:46 | 2 |
сомневаюсь по поводу мёртвых зон. на асме не пробовали запись? попробуйте ещё программатором записать - прочесть
0
|
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 212
|
|
25.08.2012, 23:56 | 3 |
Программатором все ОК... ASM-ом не владею... А что на счет Си-шного кода. Он в принципе работоспособен?
Я все таки склоняюсь к проблемам с моими руками, только не могу понять в чем дело.... Ну не может три чипа купленные в разное время вести себя так странно...
0
|
SWK
|
|
26.08.2012, 00:56 | 4 |
Я тестировал на своем ЦК робота - Мегу64 и Мегу 128 на работу и с внутренним EEPROM, и внешними (по I2C). В основном в первой сотне адресов (лень было все проверять). Никаких проблем не заметил. Использовал стандартные функции МикроПаскаля.
Что-то у вас там не так... |
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
|
|
26.08.2012, 07:58 | 5 |
Я вот так использовал запись (здесь пример стирания, но запись точно также).
Код
unsykned char EEData[60] EEMEM; //Массив данных в EEPROM for (unsykned char i=0; i<60; i++) //цикл стирания данных в EEPROM eeprom_write_byte(&EEData [i], 0); И что там за манипуляции с ватчдогом??? Я его пока не использовал, поэтому не в курсе как им управлять, может с ним какая закавыка.....
0
|
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 212
|
|
26.08.2012, 11:22 | 6 |
Код
cli(); // запрет прерываний wdt_risit(); // сбросить бит фьза WDT (программно) wdt_disable(); // отключить WDT (программно) 1. Проблемы с генератором (кварцем) т.к. использовал его для включения всех трех микросхем. 2. Проблемы с фьзами, по той же причине, что и п. 1. 3. Проблемы в Си коде. 4. Компиляция для Atmega64, хотя у меня Atmega64A. 5. Глюк в модулях студии и надо пробовать ASM или другой компилятор... Сегодня что то буду делать, но пока я в отчаянии... ((
0
|
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
|
|
26.08.2012, 11:33 | 7 |
А как ты вообще узнаеш, чего и сколько записалось в EEPROM ?
И еще, попробуй в протеусе прогнать. Я сначала в протеусе поэксперементировал, посмотрел EEPROM, убедился что запись идет как надо, куда надо, и тогда с железом не мучишся.....
0
|
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
|
|
26.08.2012, 11:40 | 8 |
[QUOTE="motrix"][QUOTE="Цитата:[/QUOTE]
Код
cli(); // запрет прерываний wdt_risit(); // сбросить бит фьза WDT (программно) wdt_disable(); // отключить WDT (программно) 1. Проблемы с генератором (кварцем) т.к. использовал его для включения всех трех микросхем. 2. Проблемы с фьзами, по той же причине, что и п. 1. 3. Проблемы в Си коде. 4. Компиляция для Atmega64, хотя у меня Atmega64A. 5. Глюк в модулях студии и надо пробовать ASM или другой компилятор... Сегодня что то буду делать, но пока я в отчаянии... (( не надо всё почти гарантия - 3. Проблемы в Си коде. сделайте код как вам ShodS показал (хотя ожидание в его цикл надо, конечно, добавить), потом считайте программатором и ясно будет
0
|
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 212
|
|
26.08.2012, 12:03 | 9 |
Сейчас еще и на асме набросал запись eeprom, посмотрю что получится...
0
|
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 212
|
|
26.08.2012, 12:12 | 10 |
SWK, а для чистоты эксперимента можешь в свою мегу64 залить мой hex и проверить, работает ли он у тебя?
0
|
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
|
|
26.08.2012, 12:15 | 11 |
Сообщение от Johmmy0007
На счет указателя, у меня тоже работало с обычными переменными прямого адреса, но правда компилятор ругался что надо указатель на адрес передавать, а так тоже работало. Я переделал в такой вид только чтобы предупреждения компиль не выдавал, ато глаза режут, приятнее когда все чисто.....
0
|
SWK
|
|
26.08.2012, 12:19 | 12 |
Сообщение от motrix
|
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
|
|
26.08.2012, 12:27 | 13 |
Сообщение от ShodS
А... в си я не петрю, есть, значит не надо, просто увидел, что функция ожидания есть отдельная, подумал, что не хватает. Ну значит, не надо
0
|
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
|
|
26.08.2012, 12:31 | 14 |
Сообщение от motrix
а уже потом надо думать, что делать с кодом
0
|
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
|
|
26.08.2012, 12:45 | 15 |
motrix я так понял что когда вы писали с 0 адреса - процессор вис и запись не выполнялась.
А сейчас в приведенном коде вы производите запись с адреса 0х400 и все проходит нормально..... я правильно понял? Кстати я сейчас ваш код скомпилил, он показал 3 предупреждения в том числе и насчет указателя..... а вы в каком компиляторе пишите?
0
|
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
|
|
26.08.2012, 12:50 | 16 |
Сообщение от SWK
Зато уже за компьютером. Это же разве так можно?
0
|
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 212
|
|
26.08.2012, 12:53 | 17 |
Код
Кстати я сейчас ваш код скомпилил, он показал 3 предупреждения в том числе и насчет указателя..... а вы в каком компиляторе пишите? [1.59 Кб]
0
|
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
|
|
26.08.2012, 12:56 | 18 |
to motrix
Да вы сами давно б проверили и тему закрыли. пять минут ведь надо, чтоб код ShodS проверить если он заработает - то не надо никому ничего проверять и терять время
0
|
0 / 0 / 0
Регистрация: 12.09.2011
Сообщений: 212
|
|
26.08.2012, 13:02 | 19 |
0
|
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
|
|
26.08.2012, 13:13 | 20 |
Да вроде бы, даже в таком состоянии как в первом посте, код должен работать (по крайней мере в протеусе все работает).
Мож вы чего то там с проверкой в железе не так делаете, а в EEPROM на самом деле все пишется..... Может внутренний генератор попробуйте подключить..... Вроде бы не в программе дело.
0
|
26.08.2012, 13:13 | |
26.08.2012, 13:13 | |
Помогаю со студенческими работами здесь
20
Как вывести файл для записи в EEPROM? Atmel Studio stm32f3discovery проблемы с ST-Link [решено] (Решено)STM32f100 Проблемы с таймером 2. [РЕШЕНО] Проблемы с инициализацией USART Проблемы с линковкой USB_OTG в с++ (кейл) [Решено] Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |