Перейти к содержанию

Помогите пожалуйста в написании исходного текста...


Гость химик

Рекомендуемые сообщения

В том то и дело что переключался, только кварц

не выпаивал. И устройство вело себя во всех случаях одинаково.

Что само интересно, до того как первый раз переключал на внутренний генератор, при замыкании кварца вся схема тухла, а при размыкании цикл начинался с начала. Теперь же когда замыкаю кварц, цикл просто затормаживается, но идет дальше.

Такое чувство как будто фьюзы перестали влиять на переключение (то что они не изменяются исключено, перед каждым программированием и после я их считую).

Ненормально все это, если есть ошибки монтажа или неисправные детали, то рассуждать о правильности работы программы пустая трата времени.

 

Именно так и сделал, но при

компилировании вылетает ошибка, чтото типа нелегальное использование переменной.

Писал так

 eeprom unsigned char input_ADDR=0xc7; 
eeprom bit standby_2=0;

сначала пишет, что ошибка в переменной input_ADDR, после

того, как я убираю слово eeprom, ошибка переходит на следующую переменную.

В твоем исходнике есть переменная

unsigned char input_ADDR;			 // хранение номера входа

добавил к ней eeprom

eeprom unsigned char input_ADDR;			 // хранение номера входа

все прекрасно компилится, а вот насчет "bit" назнач ей другой тип, поскольку нету этого в типах переменных _https://www.myrobot.ru/stepbystep/pr_variables.php

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 72
  • Создана
  • Последний ответ
Именно так и сделал, но при

компилировании вылетает ошибка, чтото типа нелегальное использование переменной.

Писал так

 eeprom unsigned char input_ADDR=0xc7; 
eeprom bit standby_2=0;

сначала пишет, что ошибка в переменной input_ADDR, после

того, как я убираю слово eeprom, ошибка переходит на следующую переменную.

 

Переменные типа bit могут располагаться ТОЛЬКО в регистрах общего назначения, даже не в RAM. Поэтому модификаторы места хранения типа eeprom с ними не применимы.

 

Добавлено после раздумий:

2. Температура отображается не правильно, показывает 3 градуса. Если замыкаю пинцетом кварц, то температура становится 23 градуса, как положено, а цикл значительно замедляется. Наверное частота большая для этого датчика. Попробую проверять температуру с помощью таймера.

 

Там есть засада... у тебя датчик температуры сидит на шине TWI (I2С)? В общем случае периферия на этой шине работает на ее максимальной тактовой частоте 100 кГц. Есть устройства, могущие работать и на бОльших частотах, но... надо смотреть даташиты. Так что косяки с обменом с датчиком и часами могут быть связаны с завышенной тактовой шины со стороны МК.

Изменено пользователем borman
Ссылка на комментарий
Поделиться на другие сайты

С еепромом разобрался. Внешнее прерывание тоже работает. Вот только как я понимаю не работает декодер. В начале цикла обработчика прерываний зажигается светодиод LED_int0, а в

конце он тухнет. Когда нажимаю кнопки на пульту, ничего не происходит. А должно хотябы Standby срабатывать, с кнопки на плате этот режим работает как положено.

А значит либо не определяется адрес и команда, либо что то не так с самим декодером. Его я нашел в гугле, пытался понять последовательность действий, но не смог. Пожалуйста, гляньте что там не так. Мне больше всего непонятны две строки, это где - формируем адрес ПДУ и формируем команду.

Home_Sinema.rar

pult.rar

Ссылка на комментарий
Поделиться на другие сайты

С еепромом разобрался. Внешнее прерывание тоже работает. Вот только как я понимаю не работает декодер. В начале цикла обработчика прерываний зажигается светодиод LED_int0, а в

конце он тухнет. Когда нажимаю кнопки на пульту, ничего не происходит. А должно хотябы Standby срабатывать, с кнопки на плате этот режим работает как положено.

А значит либо не определяется адрес и команда, либо что то не так с самим декодером. Его я нашел в гугле, пытался понять последовательность действий, но не смог. Пожалуйста, гляньте что там не так. Мне больше всего непонятны две строки, это где - формируем адрес ПДУ и формируем команду.

 

В принципе вроде правильно... Я думаю, дело в таймингах. Посмотри, откуда ты брал исходник для приемника RC5, и посмотри там тактовую частоту. И сравни со своей тактовой, со своей реальной частотой таймера, с прописанными временнЫми промежутками. Потому что если исходная схема сделана на 4 МГц, а у тебя 6, 8, 12, 16 - не заработает однозначно без пересчета значений, отвечающих за тайминги. Выложи заодно ссылку на тот декодер, что ты нашел в Гугле и использовал.

Ссылка на комментарий
Поделиться на другие сайты

В принципе вроде правильно... Я думаю, дело в таймингах. Посмотри, откуда ты брал исходник для приемника RC5, и посмотри там тактовую частоту. И сравни со своей тактовой, со своей реальной частотой таймера, с прописанными временнЫми промежутками. Потому что если исходная схема сделана на 4 МГц, а у тебя 6, 8, 12, 16 - не заработает однозначно без пересчета значений, отвечающих за тайминги. Выложи заодно ссылку на тот декодер, что ты нашел в Гугле и использовал.

Ссылку не помню, а файл есть. Частота

кварца такая же - 8МГц. Протокол распознается, так как светодиод мигает, если направляю другой пульт, то светодиод загорается и не тухнет, значит

процес закончился раньше. Но и на некоторые кнопки пульта схема реагирует как на чужой почемуто.

clock_term__mega8_ds1307_ds18b20_4led__adc_ir_rc5.zip

Ссылка на комментарий
Поделиться на другие сайты

Заменил декодер на другой - рабочий, убрал из функции void Set_Key(void) строку

 key=key_adc();

и заработало.

 

Как я писал ранее показание датчика температуры показывают температуру от -2 до +3. Товарищ Borman писал, что это из-за того, что периферия на шине i2c работает на максимальной частоте 100кГц.

Что то я запутался, ведь изменение температуры происходит как положено, только с отставанием где то в 20-22 градуса цельсия.

Была попытка исправить это так

 
temp=lm75_temperature_10(0);

на

 
temp=20+lm75_temperature_10(0);

наверно это не правильно, так как на показания это не влияет.

 

Ну и наконец то готова плата звуковых процессоров и часть программы для них. Теоретически должна полностью работать микросхема РТ2323 - селектор входов и Surround. Есть вопросы по микросхеме РТ2322, но это уже будет другая тема.

Ссылка на комментарий
Поделиться на другие сайты

...Как я писал ранее показание датчика температуры показывают температуру от -2 до +3...

Сам с ними не работал, но про похожую проблемму читал, попробуй сделать ему более качественное питание, например подключи через дроссель, поставь возле датчика электролит ~100 μF и керамику 0,1 μF и поближе.

Ссылка на комментарий
Поделиться на другие сайты

Впаял кондер на 100мФ, показания поднялись на 4 градуса. Нашел в интернете какойто форум,

там написано, что резисторы на подтяжке должны быть 30кОм. А не повлияет ли это на другие slave устройства?

 

Вчера подключил плату с РТ2323. При подсоединении шины i2c, контролер виснет. Если отдельно цепляю один из проводов SDA, CLK или GND то ничего, а как только два в любой комбинации сразу зависает.

 

Ещё вопрос к Сергею (xls), почему ты в своем устройстве использовал не i2c, a TWI? И в чем отличие, кроме того, что один программный, а другой нет?

Ссылка на комментарий
Поделиться на другие сайты

...Ещё вопрос к Сергею (xls), почему ты в своем устройстве использовал не i2c, a TWI? И в чем отличие, кроме того, что один программный, а другой нет?...

Тогда уж xsl, но если уж английскими то правильнее hsl, это типа инициалы) Но да ладно, не принципиально это)

Теперь по делу, i2c, TWI, названия разные, суть одна. Программный, аппаратный в итоге опять же одно и то же получится. Про аппаратный I2C говорят кривовато работает, у меня же вдобавок аппаратный не захотел в протеусе работать. Так что все это одно и тоже, можешь делать то что нравится.

Ссылка на комментарий
Поделиться на другие сайты

Тогда уж xsl, но если уж английскими то правильнее hsl, это типа инициалы) Но да ладно, не принципиально это)...

Сергей, прошу прощения за ошибку, это не специально.

 

С шиной разобрался. У меня контролер работает от дежурного ИП, основной блок питания включается при нажатии кнопки STANDBY. Получается что пока РТ2323 не запитана, контролер виснет, как только подаю напряжение схема работает как надо. Придется питать её от дежурки. Звук приятно удивил, заявленые 0,005% не обман. До этого делал TDA8425 - звук фуфло.

 

Также вылезло несколько косяков.

1. Время выставляется - часы до 68, минуты до 74.

2. После установки времени часы стоят на месте, не пойму как их запустить.

3. Батарейка не заряжается.

 

Также хотел сделать так, чтобы кнопки пульта, работали только после включения STANDBY.

В функции определения нажатых кнопок пульта сделал так

if(command_RC5==COMMAND_Standby)key=KEY_STANDBY;
if(standby_1==1){ 
определение нажатых кнопок; 
};
Set_Key();

После этого команда Standby стала срабатывать при нажатии любой кнопки.

Ссылка на комментарий
Поделиться на другие сайты

  • 6 месяцев спустя...

Здравствуйте.

 

Пока что Сергея нет на форуме я продолжу решения его проблем.

 

Собрал модель в протеусе и показались такие ошибки, перезагрузка контроллера.

 

вот файлы, там есть и фотки.

 

Подскажите в чем может быть причина?

постройка.rar

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте.

 

Пока что Сергея нет на форуме я продолжу решения его проблем.

 

Собрал модель в протеусе и показались такие ошибки, перезагрузка контроллера.

 

вот файлы, там есть и фотки.

 

Подскажите в чем может быть причина?

Немного внесу просвет на ситуацию. Почитав статьи на сайте _easyelectronics.ru/category/avr-uchebnyj-kurs могу назвать причину ИМХО - переполнение стека либо оперативки, при работе с дисплеем.

В листинге выплывают ошибки, но так как я ассемблер пока не изучал то на этом и стал.

Так что здесь нужна помощь знающих асму.

 

И еще, файл с расширением .map как я понимаю показывает размер памяти?

Изменено пользователем химик
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...