Александр, спасибо за труды! Скачиваю на диск Ваши уроки, опасаясь, что отключат интернет:) Просьба: Если возможно, выкладывайте, пожалуйста примеры (исходники) к Вашим видео (в т.ч. и к этому видео).
В видео ошибочка присутствует uint32 занимает не 3 байта, а 4 байта. В watch мы видим адрес х0003, потому как первая переменная была 1 байт начинается с адреса 0х0000, в 2-я 0х0001:0х0002, а третяя переменная в адресе 0х0003:0х0006.
Спасибо за ваш труд, один из немногих каналов, если не единственный, где по мк всё понятно разъясняется. И разрешите придраться, английская "w" в слове word это не перевернутая русская "м"
Александр, здравствуйте ! Если не затруднит : Кто будет быстрее вычислять простые функции(if ,for, switch и т.д) AtMega 8A (ну или AtMega 16A, я понял, что по процессору примерно то же) на 16МГц или "старичок" At89S52 на частоте 24МГц. И если можно из практики пару слов о At89S52 (то что "на поверхности не лежит") Спасибо.
Подскажите, а есть специальная команда размещения данных в оперативке (data)? Не могу понять с какого то момента по умолчанию студия размещает данные во флеш памяти если нету обращения к переменой в программе. Это очередной глуюк студии? Тогда почему открываю старые проекты и там все правильно размещается. Мало того при объявлении глобальной переменой или массива вообще левые данные подставляются.
Лучше не пользоваться функцией eeprom_write_byte(); лучше пользоваться eeprom_update_byte(); Вторая функция в отличие от первой проверяет текущее значение в ячейке и если данные для записи в ячейке такие же которые надо записать, то запись в ячейку вообще не производится. Это экономит реcурс жизни ЕЕПРОМ.
Эта функция есть в этой библиотеке? И могу ли я через неё записывать при самой первой записи? Или сначала надо выполнить eeprom_write_byte( ), а потом уже использовать eeprom_update_byte( )?
Подскажите, а можно ли в качестве аргумента в функцию записи передать адрес не в виде числа 300 или любого другого, а в шестнадцатеричном виде, скажем 0x00FD? С целью хранения больших чисел.
Здравствуйте, Александр! Я с начала не знал про эту библиотеку тупо с даташита сделал функции чтения записи и почемуто они не работают. хотя затем узнал про библиотеку она работает. Вот мне интересно почему через мои функции не работает. И за чего может не работать
Александр возникла проблемка почему ot=eeprom_read_byte(0x30+k); ошибка eeprom_write_byte((0x40+k), po); ошибка переношу с WINAVR -> AtmelSdudio ot, k, po, - unsigned char
Здравствуйте. При работе в Atmel studio 6 в процессе отладки значения не заносятся в eeprom на стадии инициализации переменных, т.е. при объявлении переменной.В чем может таится причина?
Сергей Доннер Если Вы проводите отладку в режиме "Simulator", то уберите галочку с "Preserve EEPROM" (Project->Properties, или Alt+F7). Но файл .eep и так сгенерируется, его можно открыть и посмотреть, что записалось.Если вы отлаживаете в железе, с помощью JTAGICE mkII, к примеру, и у Вас портятся данные, то тут иное решение.
имеется прошивка для паяльника на атмега8 в хекс формате. Как её открыть чтобы иметь возможность отредактировать некоторые параметры (а именно задать нужный интервал времени ухода в сон и некоторые другие настройки)? Загружаю хекс файл через open file в атмел студио, оно, естественно, выглядит как хекс файл, а не так как у вас на видео. Подскажите что я делаю не так, я совсем нуб в этом, а откорректировать прошивочку очень надо!
misha grigorovi4 Самый простой способ использовать ST232CN и USART. Там особо и рассказывать нечего. А вот как программно реализовать USB на микроконтроллере, мне сложно будет объяснить. Тема сложная, много времени потребует. Врятли я сейчас за такое возмуся.
Александр Писанец Для подключения USB лучше использовать Atmega c аппаратным USB. Типа как 90USB162-16AU. Загрузку программы можно сразу через USB делать ну или через программатор, но тогда сразу загрузчик затрется.
Александр, может Вы мне поможите?const unsigned int UPTEN_TEMP_MAX_EE EEMEM = 400; // 2 байта в EEEPROM volatile unsigned int UPTEN_TEMP_MAX; // 2 байта в RAM .... eeprom_write_word(&UPTEN_TEMP_MAX_EE, UPTEN_TEMP_MAX);Предупреждение: "passing argument 1 of '__eewr_word_m16' discards 'const' qualifier from pointer target type [enabled by default]"Как убрать?
можна волрс watch не сохраняет значение в программе а переходит на максимальное значение битов это же значение в memori EEPROM в чём проблема почему не получается?
Здравствуйте Александр, помогите пожалуйста. Почему у меня в студии 6,2 когда происходит инициализация uint_8t save8 EEMEM = 5; uint_16t save8 EEMEM =234; uint_32 save32 EEMEM = 10000; в окне memory1 значение по адресу 0х0000= 0 и остальные 0х0001 = 0xFF, 0х0002 =0xFF, 0х0003 =0xFF, 0х0004 =0xFF, 0х0005 =0xFF и т.д. не как у вас в видео.
Александр подскажите, как сохранить в EEPROM массив? Есть два массива например data_x [5] и data_y[5]. Нужно чтобы в массив data_x по нажатию кнопки сохранялось значение АЦП в нуевую ячейку, в data_y произвольное число также в нулевую ячейку, в следующем шаге по нажатию кнопки в первую ячейку и т.д. В общем нужно в микроконтроллер по нажатию определенных клавиш в EEPROM сохранить 2 массива со значениями X,Y. По нажатию кнопки снова сохранить значения но уже в следующую ячейку массивов, это так сказать калибровка устройства, перед использованием. А затем нужно уже при работе устройства с этими значениями работать. Не могу понять алгоритм действий. Помогите пожалуйста.
+shizlgizI Это не тяжело, вам нужно работать с адресами памяти eeproma. При каждом входе в функцию по сохранению данных нужно инкрементировать адрес. eeprom_sav () { eeprom_write_bute(адрес, данные Х) адрес++; //глобальная переменная eeprom_write_bute(адрес, данные Y) адрес++; // } Это если по простому обяснить.
Благодарю. Продолжаем. Правильно ли я понял, что адреса первых ячеек массивов вычисляются и устанавливаются вручную? Или есть способ получить адрес первой ячейки массива программно?
Ну т.е. для записи допустим нулевой ячейки массива в EEPROM, я объявляю массив в EEPROM, далее в Atmel Studio в окне watch смотрю первый адрес объявленного ранее массива, и далее этот адрес (например 20я ячейка) пишу уже в программный код, чтобы от этого адреса равному 20 заполнять массив данными функцией eeprom_write_word(20,X) далее 20+=2, и так далее. На случай если я изменю, или отменю некоторые переменные в EEPROM, то адреса массивов в памяти EEPROM изменяться, и в строке eeprom_write_word(20,X) нужно будет исправлять адрес вручную. Есть ли какие либо функции для получения адресов объявленных переменных, массивов в EEPROM, чтобы не исправлять адреса во всём коде на случай изменения адреса?
компилятор на эту запись eeprom_write_byte(adres, masiv [i]); сообщает следующий Warning passing argument 1 of '__eewr_byte_m64' from incompatible pointer type. Что нужно в коде поправить?
Возможно, я слегка опоздал с ответом. Но может кому пригодиться. У меня возникла та же проблема с предупреждениями. Немного подумав, я понял, что у меня не сходится размерность переменной, которой я читаю, и в которую записываю результат. То же предупреждение появляется, если я записываю при помощи eeprom_write_byte двубайтное число.
я извеняюсь у меня просто с еепромом проблема я сделал меню или я неправильно прошиваю или я ни чего не понимаю.скорее всего второе.как прошивать еепром?отдельно? или вместе с hex.? вы профи я люитель только 2 года с нуля начал.Методом исключения я учусь.Хотите ответте хотите нет. /* * AVR_MENU.c * * Created: 18.03.2017 5:30:25 * Author : User */ #define F_CPU 8000000UL #include #include #include #include "lcd.h" #include #include #include //#include #define btn_minus (PINC&1
Работая с Atmel Studio и используя программатор отладчик все прошивается сразу. При использовании готового проекта, в котором применяется eeprom. Нужно прошивать отдельно. ua-cam.com/video/eHXXNkWcXBk/v-deo.html
Спасибо за видео. Объяснение доступно для понимания. Хотелось бы еще узнать об организации доступа к EEPROM извне контроллера (приложение для Windows/Linux/Android) через USB. Например для обмена данными приложения Windows и отладочной платы "ATMEGA32 ATMEL AVR + USB бутлоадер". Возможно есть какие-то готовые библиотеки?
Александр Писанец Спасибо за видео, но пока что как-то уж слишком замудрено все. Буду потихоньку разбираться, если интересна тема - могу сюда отписываться со временем.
Спасибо понял, и eeprom_write_byte((0x40, po) тоже не работает eeprom_write_byte((0x40, 27) работает надо только числа писать! у меня с EEPROM достает 16 значений на LCD - строка, теперь думаю как это сделать - СМОТРЮ ваши др. уроки. 27 менюшек все надо переписать...
я извеняюсь учител у меня не получается вывести на LCD16x02 * * EEPROM_atmega 16.c * * Created: 10.04.2016 6:06:21 * Author : User */ #define F_CPU 8000000UL #include //#define save_16 EEMEM #include #include #include "lcd.h" #include #include unsigned int data,i,adres; unsigned char masiv[4]={100,150,200,250}; char buf1[10];
//uint8_t save8 EEMEM = 29;//размер в 1 байт uint16_t save16 EEMEM = 2600;// размер в 2 байта // uint32_t save32 EEMEM= 10000;//размер в 3 байта int main(void) { //buf1=eeprom_read_byte(& save8);//чтение 1 байта data=eeprom_read_word(& save16);// чтение 2 байт //data=eeprom_read_dword(& save32);//чтение 3 байт //data++; //eeprom_write_byte(& save8, data);//запись в память 1 байта //eeprom_write_byte(300,5 );//запись в память 1 байта eeprom_write_word(& save16,data);//запись в память2 байт //eeprom_write_dword(& save32, data);//запись в память 3 байт //char buf1[16]; DDRB=0xFF; PORTB=0x00; lcd_init(LCD_DISP_ON); //lcd_clrscr(); while (1) { lcd_clrscr(); itoa(save16,buf1,10); //sprintf(buf1) //sprintf(buf1,"a=%4d",save16); lcd_puts(buf1); _delay_ms(50); //eeprom_write_word(& save16, data);//запись в память2 байт } } как записать 2600 с еер на лсд? дайте хоть куда идти? пожалуста вы же фахівець допоможіть будь ласка аматору. Я не прошу код может литературу ?
Я сразу дико извиняюсь - за уроки большое спасибо, объяснения доходчивые и ясные, мне очень помогают освоить программирование, разобраться во внутренней архитектуре AVR, но! Ухо режет - "оттУдова", "Ихние", "хОчете"...
@@АлександрПисанец потому, что вы все выбираете, что попроще. И таких, как говна за баней. На каждом углу одно и тоже, причем не изящно, а тупо и прямо. Так может тупо и прямо, но хотя бы на аасемблере, а на ++ коротко, изящно, талантливо?! Как вы считаете?
@@ПавелГеворков-п2л Все очень быстро развивается, нужно быстро решать поставленные задачи и в этом помогает языки высокого уровня. На асемблере безусловно будет как вы говорите красиво, но затраты по времени написания кода требуется затратить много
Александр, спасибо за труды! Скачиваю на диск Ваши уроки, опасаясь, что отключат интернет:) Просьба: Если возможно, выкладывайте, пожалуйста примеры (исходники) к Вашим видео (в т.ч. и к этому видео).
Как всегда: просто, легко и понятно. Большое спасибо Александр.
В видео ошибочка присутствует uint32 занимает не 3 байта, а 4 байта. В watch мы видим адрес х0003, потому как первая переменная была 1 байт начинается с адреса 0х0000, в 2-я 0х0001:0х0002, а третяя переменная в адресе 0х0003:0х0006.
Точьно) спасибо.
Я извиняюсь, но uint32_t - это точно 3 байта?
4 byte
;)))))
Приблизительно :)))))))
Спасибо за ваш труд, один из немногих каналов, если не единственный, где по мк всё понятно разъясняется. И разрешите придраться, английская "w" в слове word это не перевернутая русская "м"
Увы, английский с трудом дается в отличии от программирования.
Скажите пожалуйста 🙏 чем отличается язык gcc c executable от других ??? Или одинаковый
Александр, здравствуйте !
Если не затруднит :
Кто будет быстрее вычислять простые функции(if ,for, switch и т.д) AtMega 8A (ну или AtMega 16A, я понял, что по процессору примерно то же) на 16МГц
или "старичок" At89S52 на частоте 24МГц.
И если можно из практики пару слов о At89S52 (то что "на поверхности не лежит")
Спасибо.
одинаково, между ними отличия только в количестве периферии. Так сказать в atmega16 больше примочек.
Понял . Спасибо
не верь автору. Больше частота - быстрее вычисления. Подумай, зачем ты хочешь ПК с большим количеством ядер и тактовой частотой?
И в чем у них разница? какая частота больше? прежде чем написать хоть даташит изучите.
Подскажите, а есть специальная команда размещения данных в оперативке (data)?
Не могу понять с какого то момента по умолчанию студия размещает данные во флеш памяти если нету обращения к переменой в программе. Это очередной глуюк студии? Тогда почему открываю старые проекты и там все правильно размещается. Мало того при объявлении глобальной переменой или массива вообще левые данные подставляются.
Лучше не пользоваться функцией eeprom_write_byte(); лучше пользоваться eeprom_update_byte(); Вторая функция в отличие от первой проверяет текущее значение в ячейке и если данные для записи в ячейке такие же которые надо записать, то запись в ячейку вообще не производится. Это экономит реcурс жизни ЕЕПРОМ.
Эта функция есть в этой библиотеке? И могу ли я через неё записывать при самой первой записи? Или сначала надо выполнить eeprom_write_byte( ), а потом уже использовать eeprom_update_byte( )?
Подскажите, а можно ли в качестве аргумента в функцию записи передать адрес не в виде числа 300 или любого другого, а в шестнадцатеричном виде, скажем 0x00FD? С целью хранения больших чисел.
Да можно.
Здравствуйте, Александр! Я с начала не знал про эту библиотеку тупо с даташита сделал функции чтения записи и почемуто они не работают. хотя затем узнал про библиотеку она работает. Вот мне интересно почему через мои функции не работает. И за чего может не работать
Доброго дня можна ка та изминить язик на приборке через EEPROM
Александр возникла проблемка почему ot=eeprom_read_byte(0x30+k); ошибка
eeprom_write_byte((0x40+k), po); ошибка
переношу с WINAVR -> AtmelSdudio ot, k, po, - unsigned char
Никола Пшоня А зачем вы указываете +K, там такое не прокатит.ua-cam.com/video/gh-LguCG1iY/v-deo.html
Большое спасибо
Здравствуйте. При работе в Atmel studio 6 в процессе отладки значения не заносятся в eeprom на стадии инициализации переменных, т.е. при объявлении переменной.В чем может таится причина?
+дмитрий кислов Даже не знаю чем вам помочь. Тяжело так подсказать, не видя происходящего
+дмитрий кислов столкнулся с такой же проблемой. Решение найдено? если да, то как исправить?
Сергей Доннер Если Вы проводите отладку в режиме "Simulator", то уберите галочку с "Preserve EEPROM" (Project->Properties, или Alt+F7). Но файл .eep и так сгенерируется, его можно открыть и посмотреть, что записалось.Если вы отлаживаете в железе, с помощью JTAGICE mkII, к примеру, и у Вас портятся данные, то тут иное решение.
@@IvanIvanov-z9f4i огромное вам спасибо! я тоже над этим голову ломал
Спасибо я уже осилил EEPROM и для сохранения нужна кнопка иначе всегда будет писать я не программист я эксперементатор электрик
Здравствуйте! Подскажите пожалуйста бюджетную вариант для чтения и записи 93c76wp
Подскажите пожалуйста, почему у меня нет вкладки Watch ?
имеется прошивка для паяльника на атмега8 в хекс формате. Как её открыть чтобы иметь возможность отредактировать некоторые параметры (а именно задать нужный интервал времени ухода в сон и некоторые другие настройки)?
Загружаю хекс файл через open file в атмел студио, оно, естественно, выглядит как хекс файл, а не так как у вас на видео. Подскажите что я делаю не так, я совсем нуб в этом, а откорректировать прошивочку очень надо!
НEX файл не получится отредактировать, это уже код для прошивки
а как-то конвертировать его для удобной работы нельзя?
а в формате .bin можно отредактировать? Есть ещё и в этом формате прошивка.
не встречал таких программ
Александр, сделайте пожалуйста урок по подключению МК к USB. Будем очень признательны) Данная тема многих мучает.
misha grigorovi4 Самый простой способ использовать ST232CN и USART. Там особо
и рассказывать нечего. А вот как программно реализовать USB на
микроконтроллере, мне сложно будет объяснить. Тема сложная, много времени
потребует. Врятли я сейчас за такое возмуся.
Александр Писанец
Для подключения USB лучше использовать Atmega c аппаратным USB. Типа как 90USB162-16AU. Загрузку программы можно сразу через USB делать ну или через программатор, но тогда сразу загрузчик затрется.
Вы учите как работать с готовой библиотекой?)
Александр, может Вы мне поможите?const unsigned int UPTEN_TEMP_MAX_EE EEMEM = 400; // 2 байта в EEEPROM
volatile unsigned int UPTEN_TEMP_MAX; // 2 байта в RAM
....
eeprom_write_word(&UPTEN_TEMP_MAX_EE, UPTEN_TEMP_MAX);Предупреждение: "passing argument 1 of '__eewr_word_m16' discards 'const' qualifier from pointer target type [enabled by default]"Как убрать?
можна волрс watch не сохраняет значение в программе а переходит на максимальное значение битов это же значение в memori EEPROM в чём проблема почему не получается?
У меня данные не инициируются при создании
uint8_t a EEMEM = 0b00000000; или так 0xCC;
в ячейке пишет ff
Подскажите, почему так ?
Здравствуйте Александр, помогите пожалуйста. Почему у меня в студии 6,2 когда происходит инициализация uint_8t save8 EEMEM = 5; uint_16t save8 EEMEM =234; uint_32 save32 EEMEM = 10000; в окне memory1 значение по адресу 0х0000= 0 и остальные 0х0001 = 0xFF, 0х0002 =0xFF, 0х0003 =0xFF, 0х0004 =0xFF, 0х0005 =0xFF и т.д. не как у вас в видео.
уберите галочку с "Preserve EEPROM"
Александр подскажите, как сохранить в EEPROM массив? Есть два массива например data_x [5] и data_y[5].
Нужно чтобы в массив data_x по нажатию кнопки сохранялось значение АЦП в нуевую ячейку, в data_y произвольное число также в нулевую ячейку, в следующем шаге по нажатию кнопки в первую ячейку и т.д. В общем нужно в микроконтроллер по нажатию определенных клавиш в EEPROM сохранить 2 массива со значениями X,Y. По нажатию кнопки снова сохранить значения но уже в следующую ячейку массивов, это так сказать калибровка устройства, перед использованием. А затем нужно уже при работе устройства с этими значениями работать. Не могу понять алгоритм действий. Помогите пожалуйста.
+shizlgizI Это не тяжело, вам нужно работать с адресами памяти eeproma. При каждом входе в функцию по сохранению данных нужно инкрементировать адрес.
eeprom_sav ()
{
eeprom_write_bute(адрес, данные Х)
адрес++; //глобальная переменная
eeprom_write_bute(адрес, данные Y)
адрес++; //
}
Это если по простому обяснить.
Благодарю. Продолжаем. Правильно ли я понял, что адреса первых ячеек массивов вычисляются и устанавливаются вручную? Или есть способ получить адрес первой ячейки массива программно?
Не понял вопроса?
Ну т.е. для записи допустим нулевой ячейки массива в EEPROM, я объявляю массив в EEPROM, далее в Atmel Studio в окне watch смотрю первый адрес объявленного ранее массива, и далее этот адрес (например 20я ячейка) пишу уже в программный код, чтобы от этого адреса равному 20 заполнять массив данными функцией eeprom_write_word(20,X) далее 20+=2, и так далее. На случай если я изменю, или отменю некоторые переменные в EEPROM, то адреса массивов в памяти EEPROM изменяться, и в строке eeprom_write_word(20,X) нужно будет исправлять адрес вручную. Есть ли какие либо функции для получения адресов объявленных переменных, массивов в EEPROM, чтобы не исправлять адреса во всём коде на случай изменения адреса?
Чет как то за мудрено. Зачем вам отсчитывать 20 ячеек. Язык си тем и хорош что за вас все распределит в памяти. Или я чего то просто не понял ?
Спасибо!
компилятор на эту запись eeprom_write_byte(adres, masiv [i]); сообщает следующий Warning passing argument 1 of '__eewr_byte_m64' from incompatible pointer type.
Что нужно в коде поправить?
Все должно работать.
Александр Писанец
Все работает. Хотелось узнать природу возникновения варнинга.
Я настоко не разбирался, разгребуся с делами, постораюся разобраться.
Возможно, я слегка опоздал с ответом. Но может кому пригодиться. У меня возникла та же проблема с предупреждениями. Немного подумав, я понял, что у меня не сходится размерность переменной, которой я читаю, и в которую записываю результат. То же предупреждение появляется, если я записываю при помощи eeprom_write_byte двубайтное число.
можна вопрос как с памяти еепрома записать в на лсд 16х02 через буфер?
И как вы себе представляете ответ )
я извеняюсь у меня просто с еепромом проблема я сделал меню или я неправильно прошиваю или я ни чего не понимаю.скорее всего второе.как прошивать еепром?отдельно? или вместе с hex.?
вы профи я люитель только 2 года с нуля начал.Методом исключения я учусь.Хотите ответте хотите нет.
/*
* AVR_MENU.c
*
* Created: 18.03.2017 5:30:25
* Author : User
*/
#define F_CPU 8000000UL
#include
#include
#include
#include "lcd.h"
#include
#include
#include
//#include
#define btn_minus (PINC&1
Епром отдельно прошивается. В Atmel Studio во вкладке где неx файл указывается, там же и епром есть.
понял спасибо за подсказку я благодарен вам вы для меня учител.Хоть мне 42 я учусь
Мне не намного меньше ) постоянно сам учусь.
a kak vsio eto proshit v kontroler atmega ne ponial flash otdelno proshivat s hex. a tam gde u nas biblioteka eeprom.h s failom eep. ??????
Работая с Atmel Studio и используя программатор отладчик все прошивается сразу. При использовании готового проекта, в котором применяется eeprom. Нужно прошивать отдельно. ua-cam.com/video/eHXXNkWcXBk/v-deo.html
Спасибо за видео. Объяснение доступно для понимания. Хотелось бы еще узнать об организации доступа к EEPROM извне контроллера (приложение для Windows/Linux/Android) через USB. Например для обмена данными приложения Windows и отладочной платы "ATMEGA32 ATMEL AVR + USB бутлоадер". Возможно есть какие-то готовые библиотеки?
есть, V-USB, но как с ней работать разобраться не могу.
К сожилению тут врятли чем помогу. Я не работал с таким небыло надобности.
Александр Писанец Возможно это видео поможит, неплохо обясняет работу USB ua-cam.com/video/M4tFkxPhxcc/v-deo.html
Александр Писанец Спасибо за видео, но пока что как-то уж слишком замудрено все. Буду потихоньку разбираться, если интересна тема - могу сюда отписываться со временем.
За мудрено это слабо сказано :)
Спасибо понял, и eeprom_write_byte((0x40, po) тоже не работает
eeprom_write_byte((0x40, 27) работает
надо только числа писать! у меня с EEPROM достает 16 значений на LCD - строка, теперь думаю как это сделать - СМОТРЮ ваши др. уроки. 27 менюшек все надо переписать...
Никола Пшоня Удачи :)
spasibo bolshoe za otvet
я извеняюсь учител у меня не получается вывести на LCD16x02
*
* EEPROM_atmega 16.c
*
* Created: 10.04.2016 6:06:21
* Author : User
*/
#define F_CPU 8000000UL
#include
//#define save_16 EEMEM
#include
#include
#include "lcd.h"
#include
#include
unsigned int data,i,adres;
unsigned char masiv[4]={100,150,200,250};
char buf1[10];
//uint8_t save8 EEMEM = 29;//размер в 1 байт
uint16_t save16 EEMEM = 2600;// размер в 2 байта
// uint32_t save32 EEMEM= 10000;//размер в 3 байта
int main(void)
{
//buf1=eeprom_read_byte(& save8);//чтение 1 байта
data=eeprom_read_word(& save16);// чтение 2 байт
//data=eeprom_read_dword(& save32);//чтение 3 байт
//data++;
//eeprom_write_byte(& save8, data);//запись в память 1 байта
//eeprom_write_byte(300,5 );//запись в память 1 байта
eeprom_write_word(& save16,data);//запись в память2 байт
//eeprom_write_dword(& save32, data);//запись в память 3 байт
//char buf1[16];
DDRB=0xFF;
PORTB=0x00;
lcd_init(LCD_DISP_ON);
//lcd_clrscr();
while (1)
{
lcd_clrscr();
itoa(save16,buf1,10);
//sprintf(buf1)
//sprintf(buf1,"a=%4d",save16);
lcd_puts(buf1);
_delay_ms(50);
//eeprom_write_word(& save16, data);//запись в память2 байт
}
}
как записать 2600 с еер на лсд? дайте хоть куда идти? пожалуста вы же фахівець допоможіть будь ласка аматору. Я не прошу код может литературу ?
C библиотекой "lcd.h" не знаком, увы , но не чем не помогу.
Я сразу дико извиняюсь - за уроки большое спасибо, объяснения доходчивые и ясные, мне очень помогают освоить программирование, разобраться во внутренней архитектуре AVR, но!
Ухо режет - "оттУдова", "Ихние", "хОчете"...
Учту, исправлюсь :)
+Евгений Инкогнито меня позабавило "саве8". А если по сути - урок отличный !
вот эти LCD.C LCD.H помогите учител
4:34 написана функция)
да 4 байта :)
Глаза так медленно 0_0
Как вы задолбали со своим ++
А чем не устраивает такая запись?
@@АлександрПисанец потому, что вы все выбираете, что попроще. И таких, как говна за баней. На каждом углу одно и тоже, причем не изящно, а тупо и прямо. Так может тупо и прямо, но хотя бы на аасемблере, а на ++ коротко, изящно, талантливо?! Как вы считаете?
@@ПавелГеворков-п2л Все очень быстро развивается, нужно быстро решать поставленные задачи и в этом помогает языки высокого уровня. На асемблере безусловно будет как вы говорите красиво, но затраты по времени написания кода требуется затратить много