Страница 37 из 421
Добавлено: Вт мар 31, 2009 22:59:48
DataLife
Yellow Tiger писал(а):- Во-первых - раньше речь шла не о "выключить прерывания", а о выключении собаки - что-таки нужно?
Ну, я особо не разбераюсь, как это называется... Ну мне нужно было, чтобы после некоторого времени работы не было сбоя в работе, в данном случаем, бегающих диодов.
Yellow Tiger писал(а):- во вторых, код в приложенном проекте и код приведенный выше - разные,
- в третьих, приложенный проект у меня скомпилировался без ошибок - о какой ошибке ты говорил?
Да, разные. Ошибка у меня была в строчке
void WDT_off(void) . Просто я экспериментировал с разными кодами.
Yellow Tiger писал(а):- в четвертых, покажи-ка ту часть asm-листинга, что между "#asm("cli");" и "ACSR=0x80;"...
Код: Выделить всё
void WDT_off(void)
{
#asm("cli");
#asm("wdr");
MCUSR &= ~(1<<WDRF);
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x00;
#asm("sei");
}
Yellow Tiger писал(а):Удачно выбрал, что удалить...

А что те строчки "значат"?
Добавлено: Вт мар 31, 2009 23:53:41
Yellow Tiger
Ты же сказал, что твоя проблема разрешилась - что теперь суетиться-то?
P.S. Удаленные тобой строчки соответствовали включению делителя тактовой. Без них делитель выключен - м/к работает на максимальной тактовой.
Конкретно в твоем случае это не страшно, но, если бы в процессе изучения ты пробовал разные, критичные по таймингам, режимы, было бы сложно найти такую причину сбоев.

Добавлено: Ср апр 01, 2009 15:22:47
DataLife
Такс... Давайте я объясню ситуацию, а то я вообще запутался...
Есть программка для МК, ну и отладочная плата, конечно...
Прошиваю МК данной программкой и сматрю на результат на плате - программа "бегущие огни" работает нормально, но вот программа, когда все светики просто горят (при подаче лог.0 на пинД.0) работает всего около минуты-пол. Зачем или начинает мигать дружно всеми светикими или же просто тухнет и с концами...
Я не знаю, как это правильно называется: толи прерывания, толи собака, мать её, включается... Но этот эффект мне ну никак не нужен ...
Весь проект в атаче...
Добавлено: Ср апр 01, 2009 18:12:01
Барсик
А что в Вас там за порнография с Watchdog таймером? Зачем она Вам ?
Код: Выделить всё
#asm
LDI R31,0x18
OUT WDTCR,R31
LDI R31,0x10
OUT WDTCR,R31
#endasm
Добавлено: Ср апр 01, 2009 18:47:35
DataLife
Что мне советуют - то и пишу. Я пробую любые варианты - лижбы работало!!!
Может я что-то не понял, но этот вариант делал по
этому совету.
Добавлено: Ср апр 01, 2009 19:11:55
ikarab
DataLife писал(а): этот вариант делал по
этому совету.
В том
совете обсуждался код для выключения вочдога который вставляет в прогу сам CVAVR.
Добавлено: Ср апр 01, 2009 19:19:56
DataLife
Вот оно что... Понятно.
Не, ну а всё же -
кто-нибудь знает как помочь моей проблеме???
Честное слово - пусть я ламер в этом деле, но все тут только и делают, что находят ошибки в моём коде, а как правильно - а?

Добавлено: Ср апр 01, 2009 20:08:17
ikarab
Судя по тому как вы описываете проблему у вас дело в "железе" - сторожевой таймер врдли так долго бы ждал.
Добавлено: Ср апр 01, 2009 20:24:23
DataLife
Железо - МК + резистор + светодиод. Проще только адронный коллайдер ...
Добавлено: Ср апр 01, 2009 21:26:56
Барсик
DataLife писал(а):...кто-нибудь знает как помочь моей проблеме???...
Конечно. Для начала, выкиньте из программы нафиг ту порнографию, про которую я писал выше. Тем более, в этой порнографии имеется ошибка. И вообще, забудьте пока, что существует какой-то там Watchdog таймер... И ни в коем случае не устанавливайте фьюз, который этот самый Watchdog таймер включает. И будет Вам счастье...
ikarab писал(а):В том совете обсуждался код для выключения вочдога оторый вставляет в прогу сам CVAVR.
Во-первых нафига выключать тот самый Watchdod таймер, если он вообще не был включён? Нафига такие советы давать?!
Во-вторых, не знаю, кто чего куда вставляет, только в том коде ошибка. В первой команде, которая пишет что-то в регистр WDTCR, надо установить бит WDCE, а во втрой команде его сбросить. Это бит номер 4 (четыре) А в той порнографии он устанавливается там и там. Вы пишете сначала 0x18, а потом 0x10.
Добавлено: Ср апр 01, 2009 22:57:19
Sounds
Народ кто нибудь запускал CodeVisionAVR по Vista?
Добавлено: Сб апр 04, 2009 02:41:48
tuuzdu
я столкнулся с такой проблемой...
когда ввожишь некоторые числа в переменную float или double, например 6,2, то в отладчике при просмотре значения переменной отображается 6,199999. в чем может быть дело???
Добавлено: Сб апр 04, 2009 03:17:24
ikarab
В конечной точности.
Добавлено: Сб апр 04, 2009 10:29:06
tuuzdu
а как сделать чтобы все нормально было?
некоторые чила он не гавнякает.. например 6,02 так и записывает
Добавлено: Сб апр 04, 2009 14:06:55
sachok
Воросик есть.
Есть у меня переменная
в неё записиваются данные
Код: Выделить всё
sprintf(lcd_buffer1,"t%u=%i\xdfC",i+1,temp1);
как мне прочитать или преобразовать из неё значения температуры что бы можно было виполнить такую операцию
Добавлено: Сб апр 04, 2009 14:24:13
Yellow Tiger
Что-то я не пойму вопрос - неужто нужно число умножать на строку? :
(
Интересно, кстати, какого типа ожидается результат 
) Если же имеется ввиду не сама строка, а число в неё записанное, то почему не взять само число из той переменной, которую вот только-что скормили
sprintf'у?
Добавлено: Сб апр 04, 2009 15:15:57
sachok
Та что тут не понятно я так например указал я знаю что так нельзя
Мне нужно значение которое в той строке было до следующей записи тоесть до вот этого:
Код: Выделить всё
sprintf(lcd_buffer1,"t%u=%i\xdfC",i+1,temp1);
Добавлено: Сб апр 04, 2009 15:29:43
Yellow Tiger
Узнать что было написано в строке, до того, как в неё записали новое значение? Это для другого форума вопрос, определенно.

Добавлено: Вт апр 07, 2009 19:40:52
sachok
Есть вопрос не большой. не компилирует простейшую программку. прилагается проект и исходник(если это можно назвать исходником)

Посмотрите что оно от меня хочет.

Добавлено: Вт апр 07, 2009 20:27:55
ikarab
sachok писал(а):Посмотрите что оно от меня хочет.

вы min 2 раза объявили похоже.
вот все заработало.