Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Считывание flash памяти
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
IVN2013
Доброго времени! Пытаюсь считать и вывести все содержимое flash m128 (на AVR GCC), использую функцию pgm_read_byte_near () ; - считываются первые 2 байта корректно, остальное неправильно.
Читаю и вывожу так:
Код
for (uint16_t  address_short = 0; address_short<0x01fc00; address_short++  )
            
            {    
                UDR1 = pgm_read_byte_near(address_short);
            }

Подскажите пожалуйста - что может быть не так. Сам подозреваю что ошибки возникают из-за того, что адрес 16-ти битный. Спасибо!

И еще не понял отличие pgm_read_byte от pgm_read_byte_near.
Сергей Борщ
Цитата(IVN2013 @ Feb 3 2014, 21:59) *
Подскажите пожалуйста - что может быть не так.
Вы заталкиваете данные в UART чаще, чем он успевает их отправить. Вам нужно дожидаться готовности UART принять данные (бит TXE) перед записью в UDR.
_Артём_
Цитата(IVN2013 @ Feb 3 2014, 21:59) *
Читаю и вывожу так:
Код
for (uint16_t  address_short = 0; address_short<0x01fc00; address_short++  )

Цитата(IVN2013 @ Feb 3 2014, 21:59) *
Подскажите пожалуйста - что может быть не так. Сам подозреваю что ошибки возникают из-за того, что адрес 16-ти битный.
Нет, пока не возникают. Но возникнут, как только ожидание готовности от UART-а вставите:
1) address_short имеет максимальное значение 0xFFFF и значит всегда меньше 0x01fc00. Цикл бесконечный (при включённой оптимизации).
2) в m128 число байтов равно 0x1FFFF - значит с помощью 16р. адреса считаете только первую половину памяти.

Цитата(IVN2013 @ Feb 3 2014, 21:59) *
И еще не понял отличие pgm_read_byte от pgm_read_byte_near.
В итоге одно и тоже - чтение flash с адресом до 0xFFFF. Нажмите Go to definition или Go to Implementation или как у вас в IDE называется.
Вам нужна функция pgm_read_byte_far. Или что-то своё аналогичное написать можно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.