Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 12.10.2006, 22:41  
renatavr
Временная регистрация
 
Регистрация: 12.10.2006
Сообщений: 53
Сказал спасибо: 1
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
renatavr на пути к лучшему
По умолчанию IIC

Помогите, не пойму.
Купил ATmega16 и 24С16 собрал и начал, так сказать, общаться.
НО при работе
if address‹=255 { хорошо }
else {не хорошо}
Так примерно операций 10 попробовал (дабы закрепить материал) и всё.
Далее началось интересное:
написал цикл (for) address++, так контроллер в Resete зацикливается (судя по LCD 16252) индикатор будь-то бы вообще из LCD_init не вылазит дальше (засветка строки).

Вернул всё на место как и было:
одна запись --› одно чтение - стали выпадать какие-то не знакомые мне числа, будь-то бы всё умерло, но толька местами.
Вот!
КАК БЫТЬ дальше? почему так? с eeprom до этого не работал.

И почему когда сдвигаю строку
eeprom_write(100,77);
пробелом, она (eeprom), меняет цвет на Фиолетовый и обратно при последующем нажатии.

CVAVR 1.24.4 standard

/************************************************** ***
Chip type : ATmega16
Program type : Application
Clock frequency : 3,686400 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
************************************************** ***/

#include ‹mega16.h›
#include ‹stdio.h›
#include ‹delay.h›

#asm
.equ __i2c_port=0x15 ;PORTC
.equ __sda_bit=5
.equ __scl_bit=4
#endasm
#include ‹i2c.h›
#define EEPROM_BUS_ADDRESS 0xa0

#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
#include ‹lcd.h›

unsigned char eeprom_read(unsigned char address)
{
unsigned char data;
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
data=i2c_read(0);
i2c_stop();
return data;
}

void eeprom_write(unsigned char address, unsigned char data)
{
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_write(data);
i2c_stop();

delay_ms(10);
}

void lcd_print(int n)
{
char b[30];
sprintf(b,"%i",n);
lcd_puts(b);
}

void main(void)
{

unsigned char i;

PORTA=0x00;
DDRA=0x00;

PORTB=0x00;
DDRB=0x00;

PORTC=0x00;
DDRC=0x00;

PORTD=0x00;
DDRD=0x00;

lcd_init(16);

i2c_init();
eeprom_write(100,77);
eeprom_write(100,77);
while (1)
{
lcd_clear();
lcd_gotoxy(2,0);
i=eeprom_read(100);
lcd_print(i);
delay_ms(200);
};
}
Реклама:
__________________
Б.га нет, есть только двоичный код.
renatavr вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 03:36.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot