Внутренний EEPROM tiny2313. hello, world ???!!???

Обсуждаем контроллеры компании Atmel.
Ответить
ArtemKolesnikov
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Вс фев 26, 2012 10:53:30

Внутренний EEPROM tiny2313. hello, world ???!!???

Сообщение ArtemKolesnikov »

Всем привет.
Я новичок в МК и пытаюсь изучить работу с внутренней EEPROM. Начитавшись инета, написал нечто типа Hello World и пытаюсь заставить работать. Не комилится оно в AVR Studio 5.1. Хочу при запуске записать в память некое значение по некоему адресу,( а потом програматором посмотреть, записалось оно или нет. Тупо может быть, но мне так приятней.) Компилятор не понимает, что такое EEWE.

Код: Выделить всё

 #define F_CPU 1000000UL  // 1 MHz
#include <avr/io.h>
#include <avr/eeprom.h>
#include <util/delay.h>


   
   int main(void)              // начало основой программы
   {
   
    while(EECR & (1<<EEWE));//ждем установки бита EEWE
   EEAR = 0x10;//устанавливаем адрес
   EEDR = 0x10;//записываем байт данных
   EECR |= (1<<EEMWE);//устанавливаем EEMWE
   EECR |= (1<<EEWE);//устанавливаем EEWE   
      
   }      // закрывающая скобка основной программы

Пытаюсь включить io2313.h, в котором описаны EEWE, компилятор ругается на двойное включение файла.
В чем проблема?
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: Внутренний EEPROM tiny2313. hello, world ???!!???

Сообщение blackx »

Попробуйте EEPE.
Изображение only pure true norwegian blackx Изображение
ArtemKolesnikov
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Вс фев 26, 2012 10:53:30

Re: Внутренний EEPROM tiny2313. hello, world ???!!???

Сообщение ArtemKolesnikov »

blackx писал(а):Попробуйте EEPE.

Блин. Скомпилилось!
НО ПОЧЕМУ? Ведь везде, в т.ч в даташите везде описано EEMWE, EEWE????????????????
П.СЫЫЫЫ! Косяк я слепой невнимательный! В Даташите как раз описано EEPE! Вот зараза какая.
Тема закрыта, СПАСИБО blackx!!!
Последний раз редактировалось ArtemKolesnikov Вс янв 06, 2013 23:46:27, всего редактировалось 1 раз.
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: Внутренний EEPROM tiny2313. hello, world ???!!???

Сообщение blackx »

Погуглил "AVR EEWE". Открыл первую же PDF-ку. На первой же странице прочитал

Note: In the latest devices the EEWE bit in EECR is called EEPE, and the EEMWE is
called EEMPE. Also in the latest devices the EECR consist of two extra bits to set the
Programming Mode, EEPM0 and EEPM1. These two bits needs to be initialized
before EEPE is set.


:)) :))

А ваш файлик, io2313.h, если в нем действительно определен EEWE - видимо просто устаревший, компилятор то может и другой юзать.
Последний раз редактировалось blackx Пн янв 07, 2013 00:35:19, всего редактировалось 1 раз.
Изображение only pure true norwegian blackx Изображение
ArtemKolesnikov
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Вс фев 26, 2012 10:53:30

Re: Внутренний EEPROM tiny2313. hello, world ???!!???

Сообщение ArtemKolesnikov »

blackx писал(а):Погуглил "AVR EEPE". Открыл первую же PDF-ку. На первой же странице прочитал

Note: In the latest devices the EEWE bit in EECR is called EEPE, and the EEMWE is
called EEMPE. Also in the latest devices the EECR consist of two extra bits to set the
Programming Mode, EEPM0 and EEPM1. These two bits needs to be initialized
before EEPE is set.


:)) :))

А ваш файлик, io2313.h, если в нем действительно определен EEWE - видимо просто устаревший, компилятор то может и другой юзать.

Спасибо за ответ!. Да, точно, устаревший файл, я почему то склонен больше верить статьям и форумам, чем даташиту... Вот и напоролся...
p.s. Все получилось! В ячейку 0х10 записалось число 0х10 . изучаем чтение теперь.
Аватара пользователя
ILYAUL
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Re: Внутренний EEPROM tiny2313. hello, world ???!!???

Сообщение ILYAUL »

Что самое интересное в обоих DS и 2313 и 2313A указан бит EEPE. Может сначала научится читать?
ArtemKolesnikov
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Вс фев 26, 2012 10:53:30

Re: Внутренний EEPROM tiny2313. hello, world ???!!???

Сообщение ArtemKolesnikov »

ILYAUL писал(а):Что самое интересное в обоих DS и 2313 и 2313A указан бит EEPE. Может сначала научится читать?

Скорее всего, вы правы. Просто пробежавшись по даташиту, осмотрев регистры (в частности EECR) и их описание, я не заметил того, что в даташите биты обозваны именно через букву P, в то время как в одной статье, которая вылазиет по гуглу при поиске AVR EEPROM (третья по счету) так красиво и привлекательно описывает эти же регистры - у автора этой статьи биты обозваны через букву W.
Привлек исходный код функций с комментариями, честно...
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Внутренний EEPROM tiny2313. hello, world ???!!???

Сообщение YS »

я почему то склонен больше верить статьям и форумам, чем даташиту...


Очень зря. Даташит, если нет совсем уж объективных фактов, надо считать последней инстанцией истины. Ошибки там, бывает, встречаются. Но бывает это очень редко.

Код: Выделить всё

#define F_CPU 1000000UL  // 1 MHz
#include <avr/io.h>
#include <avr/eeprom.h>
#include <util/delay.h>


   
   int main(void)              // начало основой программы
   {
   
    while(EECR & (1<<EEWE));//ждем установки бита EEWE
   EEAR = 0x10;//устанавливаем адрес
   EEDR = 0x10;//записываем байт данных
   EECR |= (1<<EEMWE);//устанавливаем EEMWE
   EECR |= (1<<EEWE);//устанавливаем EEWE   
     
   }      // закрывающая скобка основной программы


F_CPU надо указывать в настройках IDE, а не явным дефайном.

В avr/eeprom.h есть функции eeprom_write_xxx() / eeprom_read_xxx().

У main в эмбеде не должно быть возвращаемого значения - это не имеет смысла.

Программа для МК должна кончаться бесконечным циклом.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
ArtemKolesnikov
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Вс фев 26, 2012 10:53:30

Re: Внутренний EEPROM tiny2313. hello, world ???!!???

Сообщение ArtemKolesnikov »

YS писал(а):.

Спасибо.
Ответить

Вернуться в «AVR»