Jump to content

Recommended Posts

/*****************************************************

Chip type : ATtiny13

Clock frequency : 9,600000 MHz

*****************************************************/

#include <tiny13.h>

#include <delay.h>

// I2C Bus functions

#asm

.equ __i2c_port=0x18 ;PORTB

.equ __sda_bit=0

.equ __scl_bit=1

#endasm

#include <i2c.h>

#define EEPROM_BUS_ADDRESS 0xa0

/***************************************************************************************

+ Читаем ячейку из 24с02.

+ В параметрах указывается адрес читаемой ячейки.

+ Функция возвращает прочитаное из ячейки.

****************************************************************************************/

unsigned char eep_read(unsigned char address) {

unsigned char data; //переменная для прочитаных данных

i2c_start(); //посылаем команду "старт" в шину i2c

i2c_write(EEPROM_BUS_ADDRESS); //посылаем в шину адрес устройства

i2c_write(address); //посылаем в шину адрес читаемой ячейки

i2c_start(); //снова посылаем "старт" в шину

i2c_write(EEPROM_BUS_ADDRESS | 1); //незнаю зачем но без этого не работает

data=i2c_read(0); //принимаем данные с лини и сохраняем в переменную

i2c_stop(); //посылаем команду "стоп"

return data; //возврощаем значение прочитаного

}

/***************************************************************************************

+ Запись данных в ячейку 24с02.

+ В параметрах указывается адрес записываемой ячейки (adress).

+ Также указуем в параметрах данные которые надо записать в ячейку.

****************************************************************************************/

void eep_write(unsigned char address, unsigned char data) {

i2c_start(); //посылаем команду "старт" в шину i2c

i2c_write(EEPROM_BUS_ADDRESS); //посылаем в шину адрес устройства

i2c_write(address); //посылаем в шину адрес записываемой ячейки

i2c_write(data); //посылаем данные для записи

i2c_stop(); //посылаем команду "стоп"

}

void main(void)

{

unsigned char led; // объявляем переменную led

unsigned char led_1;// объявляем переменную led_1

unsigned char led_2;// объявляем переменную led_2

// Port B initialization

PORTB=0x00;

DDRB=0x10;

eep_write(0x01,0x8F); //записуем в ячейку 0х01 eeprom данные 0х8F

//после для експеремента, можно за коментировать команду записи

//чтобы просто читать записанное рание этой строкой

while (1)

{

delay_ms(300);

led=eep_read(0x01); //читаем ячейку 0х01 и записываем значение в переменную led

led_1=eep_read(0x02); //читаем ячейку 0х02 и аписываем значение в переменную led_1

led_2=eep_read(0x02); //читаем ячейку 0х03 и аписываем значение в переменную led_2

if(led+led_1+led_2==0x89){ //складываем переменные led+led_1+led_2если их сумма равна 0x89

PORTB.4=0; //зажигаем светодиод

delay_ms(500); //ждём чтобы увидели что светодиод вкл.

}else{ //если сумма не равна 0х89

PORTB.4=1; //выкл. светодиод

}

};

}

передал прошивку чтобы она записывала и читала значения из 3х ячеек и сравнивала их. до этого она работала только с 1 ячейкой. компилятор ошибок не выдает но и ничего не работает. полужирным шрифтом отметил что я добавил

Edited by Кинг

Share this post


Link to post
Share on other sites

Извините за дурацкий вопрос:А что записано во второй и третьей ячейке?

Share this post


Link to post
Share on other sites

Вебинар STM32G0 – новый лидер бюджетных 32-битных микроконтроллеров от STMicroelectronics

Компания Компэл приглашает вас 25 сентября принять участие в вебинаре, который посвящен новому семейству микроконтроллеров STM32G0. Вебинар рассчитан на технических специалистов и тех, кто хорошо знаком с семейством STM32. На вебинаре будут освоены современные методы тестирования производительности микроконтроллеров на примере самых бюджетных 32-битных семейств общего назначения STM32G0 и STM32F0 и проведено их подробное сравнение.

Подробнее

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • Капрон суперклей не берёт! Надо попробовать.
    • Отличная идея - всех профи в закрытый клуб. Но идею , для справедливости, нужно дополнить -  пусть флудеры и дилетанты создадут свой закрытый клуб, куда для профи вход  будет также закрыт. Вот только тогда на форуме и воцариться равноправие. А иначе... профи,  окуевшие в своём высоколобом клубе от междусобных заумных  дебатов с себе подобными, будут постоянно залазить в темы к начинающим и дилетантам, чтобы  почитать им нотации, пофлудить, расслабиться,  оттянуться и повы_бываться от души.  Да ладно... Это смотря о чём у них спор. Если о работе симисторов в разных квадрантах, то  они вполне могут обложить друг друга куями в вашей закрытой теме для профессионалов. Но это и хорошо... т.к. никто из флудеров и дилетантов этого не прочитает. Им до этого ещё  расти и расти...
    • На днях попробовал приклеить петлю крышки ноута  суперклеем с содой. К моему удивлению, очень хорошо получилось и держит отлично. Способ не новый, но подробнее можно ознакомиться вот здесь - https://gidpokraske.ru/rabota-s-kleem/super-klej-i-soda.html    
    • Подобные конденсаторы встречаются в блоках питания ПК, но не во всех ...
    • научился делать снимки триггером. еще бы научиться сохранять снимки а не телефоном фоткать кз кнопкой, выходное 5в, ток 2А макс.   Пульсации, 5в, ограничение 1А, и без ограничения так же.  
    • Такие да не такие.   Фильтр спаять мало.Его нужно настроить.Есть прибор называется АЧХ метр Х1-48 или "СВИСТОК"-худший вариант. Вод делал когда то,так в фильтре конденсаторы на 2квольта взрывались пока не поставил трубчатые.Мощьность была ват40-50 в этом пределе.
    • На ремонт как-то попал "Technics SA-GX 130". Так там было всё продумано. На радиаторе с микросхемой стоял транзистор в качестве термо-датчика. При положении регулятора громкости до 12 часов вентилятор не включался, так как нагрев радиатора был ничтожный. А вот, когда за 2-3 часа, радиатор становился ощутимо тёплым, вентилятор стартовал и эффективно охлаждал радиатор с микросхемой. Никакой дискомфорт не ощущался. Видно обороты были подобраны грамотно. Да и степень износа вентилятора не велика. В компьютерах, и в некоторых БП включение охлаждающего вентилятора организовано от термо-датчика на радиаторе. Возросла нагрузка, разогрев радиатора увеличился и включился обдув. В компьютерах этот режим можно установить в BIOS.Такое управление вентилятором обдува, наверное, будет самое грамотное, в зависимости от температуры радиатора. При ничтожных нагрузках вентилятор вообще включаться не будет.  
×
×
  • Create New...