Полная версия этой страницы:
Массив из 40 переменных
Всем привет! помогите пожалуйста!
я TSOP1738 подключил к вывду INT0 ATmega88, и мне надо запомнить в EEPROM
значение TCNT0,то есть когда я любой пульт направляю на TSOP1738 и нажимаю на кнопку,
тагда надо мерить импулси, тоесть значение TCNT0 писать в EEPROM, но мы знаем что запись или чтение
EEPROM а 1,8мс а длниа одного импулса пульта примерна 889мкс или может еще менше,
по моему надо сначала значение TCNT0 писать в SRAM или в массив а потом в EEPROM,
количество элементы массива может менятся, это зависить от фирми пульта, махимум 40 элементов,
компилятор CVAVR,
как это сделать?
заранее сасибо!
Stanislav_S
May 2 2008, 19:26
Цитата(VAHOO @ May 2 2008, 23:52)

..
Гм.. ну так и написать unsigned int MASS[40] если у вас один тик таймера равен 1 мкс, потом преобразовать допустим в пятибайтное типа unsigned char IMPULS[5]; и это уже писать в ЕЕПРОМ.
Moderator:
Крайне не желательно бездумно пользоваться цитированием.
1. как преобразовать в пятибайтное число?
2. а если количество элементов в массиве будеть не 40 а скажем 20?
вот кусок кода
.....
Moderator:
Обширные куски кодов оформляются ввиде приложения в архиве.
В теле сообщений для исходных текстов необходимо пользоватся форматированием.
посоветуйте пожалуйста!
в теле кода использую while(!PIND.2); но прерывание по таймеру 0 не происходит
VAHOO,
зачем из-под CodeVision городить свои подпрограммы доступа к EEPROM?
а while вы используете в теле не просто кода, а другого прерывания.
и другое прерывание не наступит, пока не выйдете из текущего.
это раз.
два - таймер 0 вообще не запущен, и никаких прерываний, соответственно, генерить не будет.
читаем в даташите про регистры TCCR0A, TCCR0B.
три - чтобы прерывания от таймера происходили, их тоже надо явно разрешать, как и любые другие.
читаем про TIMSK0.
впрочем, в вашем случае достаточно просто внимательно отнестись к заполнению полей мастера CodeWizard.
Цитата(vet @ May 5 2008, 08:47)

VAHOO,
зачем из-под CodeVision городить свои подпрограммы доступа к EEPROM?
а while вы используете в теле не просто кода, а другого прерывания.
и другое прерывание не наступит, пока не выйдете из текущего.
это раз.
два - таймер 0 вообще не запущен, и никаких прерываний, соответственно, генерить не будет.
читаем в даташите про регистры TCCR0A, TCCR0B.
три - чтобы прерывания от таймера происходили, их тоже надо явно разрешать, как и любые другие.
читаем про TIMSK0.
впрочем, в вашем случае достаточно просто внимательно отнестись к заполнению полей мастера CodeWizard.
Спасибо за советы!
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.