| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > проблема с eeprom в atmega8535 |
| Автор: martyr 16.11.2005, 10:48 | ||
проблема такая, что при записи или при чтении в eeprom, он записывает или читает младшую часть.все переменные и функции объявлены в другом файле. Вот код программы:
|
| Автор: cardinal 16.11.2005, 10:51 |
| Используйте теги [c ode=vb][/code] для подсветки кода! |
| Автор: PILOT 16.11.2005, 15:22 |
| Вопроса не понял... СУВ. |
| Автор: martyr 16.11.2005, 16:17 |
| ну вообщем если я записываю значение 255, то eeprom мне выдаёт 255, а если я записываю 300, то eeprom выдаёт 44, т.е. считывает малдшую часть, а старшую нет. Вот : 1 я не знаю что он не правильно делает: записывает или читает 2. прога вроде нормально написано, не знаю где может быть косяк, я хотел, чтобы кто-нибудь взглянул на кусок проги свежим взглядом и посмотерл если бак в этом куске проги |
| Автор: cardinal 16.11.2005, 16:32 |
| martyr, извини я конечно протормозил. На форуме есть и c/c++ теги, так что можешь подредактировать... uint16_t read_byte_from_eeprom (uint16_t eeprom_address) |
| Автор: martyr 16.11.2005, 16:41 |
| cardinal не помогает и почему uint16_t, если мы возвращает byte_eeprom а он у нас 8 бит? |
| Автор: cardinal 16.11.2005, 16:59 |
| в коде должно стоять так: code=cpp А насчет byte ты прав. Ну так ты тогда тогда и будешь имеет максимальное значение в 255. Если хочешь больше, то и записывай на соседние адреса в eeprom несколько байт. Потом также несколько байт и читать надо будет... |
| Автор: martyr 16.11.2005, 17:06 |
| cardinal, почему максимум 255, пояни момент плиз подробнее как больше получить |
| Автор: cardinal 16.11.2005, 17:27 |
| что такое байт: http://www.google.ru/search?hl=de&lr=&oi=defmore&defl=ru&q=define:%D0%91%D0%B0%D0%B9%D1%82 |
| Автор: martyr 16.11.2005, 17:29 |
| я это понимаю, как мне сделать больше 255? я ведь как раз для этого при записи вызываю 2 раза функцию write_byte_to_eeprom (eeprom_address, byte_eeprom); |
| Автор: cardinal 16.11.2005, 19:39 | ||||
или наоборот
, смотря какой порядок в памяти хочешь иметь... В результате (когда прочитаешь и слепишь в одно) получишь число 0x2e3f, то есть 11839. |
| Автор: martyr 16.11.2005, 20:40 | ||
так я так и делаю
или так нельзя писать? |
| Автор: cardinal 17.11.2005, 00:15 | ||
Посмотри на содержание byte_eeprom на строке 3 и потом на строке 7 и поймешь можно или нет. printf у тебя работает вообще для отдладки? Если нет, то сделай, чтобы работало. |
| Автор: martyr 17.11.2005, 11:06 |
| printf не получится, я ведь не в консоле работаю, у меня есть окошко, кот-ой показывает обмен данными по инетерфейсу |
| Автор: martyr 17.11.2005, 11:51 |
| ошибка нашлась, мне на работе дали новый комп, винда сама ставилась, по дефолту поставился год 2014, а заметил что 2014 год вчера, поставил 2005, и сегодня заметил, что у меня файл прошивки старый, компилятор не мог его создать писал, что старый файл прошивки 2014 года, а новый типа 2005, и компилятор мне говорил, что такого не может быть. Вообщем как я это заметил долго матюгался,т.к. целый день искал ошибку :-(. Теперь всё ок. :-))))))))))) |