Работа с внутренней памятью EEPROM

Модератор: boogyman

Ответить
Аватара пользователя
uuu000
Любитель
Сообщения: 12
Зарегистрирован: 08 апр 2019, 00:15

Работа с внутренней памятью EEPROM

#1

Сообщение uuu000 » 02 апр 2020, 21:49

Привет всем.
Пытаюсь изучить и применить EEPROM.
С помощью настройки регистров и функций записи и чтения получилось нормально.
Но с помощью библиотеки не выходит,не записывается.
Посмотрите на код,где ошибка?
Спасибо.

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

#define F_CPU 8000000
#include <avr/io.h>
#include <avr/eeprom.h>
#include <util/delay.h>

unsigned char eeprom_var EEMEM; 

int main(void)
{
	DDRB=0b00000111;
	PORTB=0b11111000;
	DDRA=0b010;
	PORTA=0b111;
    unsigned char z=0;
	z = eeprom_read_byte(&eeprom_var);

	while (1)
	{
		if (~PINA&(1<<PA0))
		{
			if (z<7)
			{
				z++;
				PORTB =z;
   eeprom_write_byte(&eeprom_var, z);
     _delay_ms(200);
		
			}
			else
			{
				z=0;
				PORTB = z;
   eeprom_write_byte(&eeprom_var, z);	
   _delay_ms(200);		
			}
			while (~PINA&(1<<PA0)){};
	_delay_ms(20);
		}
	}
}

Аватара пользователя
microsystems
Любитель
Сообщения: 12
Зарегистрирован: 11 дек 2019, 19:40

Re: Работа с внутренней памятью EEPROM

#2

Сообщение microsystems » 03 апр 2020, 09:45

На тини2313 работает:

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

#define F_CPU 8000000
#include <avr/io.h>
#include <avr/eeprom.h>
#include <util/delay.h>


unsigned char EEMEM eeprom_var;

int main(void)
{
	DDRB=0b00000111;
	PORTB=0b11111000;
	DDRA=0b010;
	PORTA=0b111;
	unsigned char z=0;
	z = eeprom_read_byte(&eeprom_var);
	PORTB =z;

	while (1)
	{
		if (~PINA&(1<<PA0))
		{
			if (z<7)
			{
				z++;
				PORTB =z;
				eeprom_write_byte(&eeprom_var, z);
				_delay_ms(200);

			}
			else
			{
				z=0;
				PORTB = z;
				eeprom_write_byte(&eeprom_var, z);
				_delay_ms(200);
			}
			while (~PINA&(1<<PA0)){};
			_delay_ms(20);
		}
	}
}

Аватара пользователя
uuu000
Любитель
Сообщения: 12
Зарегистрирован: 08 апр 2019, 00:15

Re: Работа с внутренней памятью EEPROM

#3

Сообщение uuu000 » 03 апр 2020, 12:19

Спасибо microsystems за поддержку.
Проблему нашел и устранил.

Ответить