Radiohobby Forum

Интернет конференция журнала "Радиохобби"

Вы не вошли.

Объявление

Подписка на новые материалы от Николая Сухова - ролики, схемы, модели, онлайн конференции, консультации, чат.

Внимание! Почта в доменах Яндекс и Mail.ru не будет работать в профилях форумчан, из-за введённых правительством Украины санкций против этих компаний. Всем, кто ранее использовал подобную почту, для сохранения прежней функциональности форума, рекомендуется её поменять.

Огромная просьба, заливать тематические картинки и файлы в личные файловые каталоги на форуме, чтобы они не потерялись, со временем!

Ссылка "Загрузки" находится справа внизу формы набора сообщения.

Подписка на журнал "Радиохобби" прекращена. Подробности. Форум же - продолжает свою работу.

#361 29.03.2007 22:56:42

ASni
Участник
Откуда: Николаев / Украина
Здесь с 18.11.2004
Сообщений: 34

Re: AVR для "чайников"

Есть вопрос по сабжу

ATmega8, WinAVR
в коде есть такие строки:

.....
#include <avr/eeprom.h>
.....
#define EEPROM_ADR 0x00
.....
unsigned char temp;
.....
temp = eeprom_read_word(EEPROM_ADR);
.....
eeprom_write_word(EEPROM_ADR,temp);
.....

Если EEPROM_ADR  = 0x00 , то чтение/запись не срабатывают как будто этих строк и нет, но все остальное нормально работает
Если EEPROM_ADR  > 0x00 , то МК просто вешается и ни на что не реагирует  :shock:

Причем в VMLab все работает как надо, а в железе- нет

В чем может быть проблема, подскажите плиз...

Вне форума

#362 29.03.2007 23:27:12

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: AVR для "чайников"

Так показали бы, что в этом eeprom.h написано. Я в WinAVR не работаю, а это явно его штучки. Дебагать надо, в AVRStudio, например. Кстати, а почему word из eeprom Вы читаете в unsigned char?

Вне форума

#363 30.03.2007 00:17:21

ASni
Участник
Откуда: Николаев / Украина
Здесь с 18.11.2004
Сообщений: 34

Re: AVR для "чайников"

Возможно с типами переменных я запутался, мне надо сохранять 8bit (char), надо попробовать eeprom_read_byte / eeprom_write_byte
Хотя ничего фатального мне кажется быть не должно, во всяком компилятор не ругается на несоответствие типов

вот фрагмент из eeprom.h, целиком (12кб) сюда выкладывать наверное не стоит...

uint16_t eeprom_read_word (const uint16_t *addr)
{
  uint16_t result;

  asm ( 
        XCALL " __eeprom_read_word_" _REG_LOCATION_SUFFIX CR_TAB
       : "+x" (addr),
         "=z" (result)
       : );
  return result;
}


void eeprom_write_word (uint16_t *addr,uint16_t value)
{
  asm volatile (
#if __AVR_HAVE_MOVW__
         "movw __tmp_reg__,%A1" CR_TAB
#else
         "mov __tmp_reg__,%A1"      CR_TAB
         "mov __zero_reg__,%B1"     CR_TAB
#endif
          XCALL " __eeprom_write_word_" _REG_LOCATION_SUFFIX CR_TAB
       : "+x" (addr)
       : "r"  (value)
       : "memory"
      );
}

Вне форума

#364 30.03.2007 00:25:22

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: AVR для "чайников"

Нифига не понятно. Остаётся дебагать.

P.S. Я сижу на IAR C, никаких проблем не встречал. Украсть IAR пока можно.

Вне форума

#365 31.03.2007 00:00:59

ASni
Участник
Откуда: Николаев / Украина
Здесь с 18.11.2004
Сообщений: 34

Re: AVR для "чайников"

Я ориентировался на статью в РХ "микроконтроллерное управление звуком" ... вроде все правильно... и не работает sad
Может кто-то юзал WinAVR ?

Вне форума

#366 19.04.2007 00:16:12

dm571
Новичок
Здесь с 19.04.2007
Сообщений: 2

Re: AVR для "чайников"

Здравствуйте. Я микроконтроллеры начал изучать только 3 дня назад и пока что умею заставлять проц светодиодиками мигать максимум. Но, есть задача учебного характера, которая, к сожалению, мне пока не под силу...  Не могла бы уважаемая аудитория хотя бы помоч разобраться.
Задание:
Организовать ввод данных (диапазон изменения кода 0 - 1Fh) и записать полученную инфу в память контроллера по адресу 5Fh. Сумму полученного числа и числа 06h так же сохранить в памяти по адресу 83. Передать код, сохранённый по адресу 83 через выходной порт. С периодичностью 30сек. инвертировать код и передать его в выходной порт.

Задание под асму, но можно и с помощью CodeVisionAVR писать. Трудности вызыват моё незнание организации подобного ввода и вывода. И что значит инвертирование в данном случае? Что откуда должно браться и КАК деваться?

Вне форума

#367 19.04.2007 10:10:16

Alexei
Участник
Здесь с 30.06.2004
Сообщений: 125

Re: AVR для "чайников"

dm571 пишет:

И что значит инвертирование в данном случае? Что откуда должно браться и КАК деваться?

LDS Rd,$83 ;Загружаете в регистр из памяти
COM Rd    ; Инвертируете
OUT Port   ; Выводите
Типа того

Вне форума

#368 20.04.2007 00:32:18

dm571
Новичок
Здесь с 19.04.2007
Сообщений: 2

Re: AVR для "чайников"

Спасибо! Прогу все-таки осилил на С smile

Вне форума

#369 02.05.2007 09:48:57

pantelei4
албанец
Откуда: Мелитополь
Здесь с 09.12.2005
Сообщений: 4,895

Re: AVR для "чайников"

.... - вот случайно надыбал, может и мелькала уже.
Удалил, раз такой нехороший энтот avr123.
Самому чтоль заняться...

Отредактировано pantelei4 (02.05.2007 17:19:04)

Вне форума

#370 02.05.2007 14:44:29

SMD
Участник
Здесь с 27.04.2007
Сообщений: 35

Re: AVR для "чайников"

Ну, блин, эти чертовы курсы я и сам когда то читал - написано в таком стиле что фиг разберешься. Этого товарища avr123 уже вроде разок забанили на нашем форуме, за навязчивую рекламу и не зря.
Есть хорошая книга Евстифеева - Микроконтроллеры AVR семейств Tiny и Mega - с нее я начинал.
По сути это просто переводы даташитов с комментариями, но написана хорошо, читать и разбираться можно.

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.048 сек, 10 запросов выполнено - Использовано памяти: 592.66 Кбайт (Пик: 643.02 Кбайт) ]