CodeVision AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

:facepalm: Вот сиди и догадывайся, что нужно человеку...

PS: А причём тут CV AVR ?
Контактная информация:
Реклама
Встал на лапы
Сообщения: 110
Зарегистрирован: Вс май 10, 2009 18:23:45

Сообщение Belerafon »

в codevision сделать пытаюсь, по этому тут и спросил, может функции какие для преобразования массива в число или как еще можно, я не силен программировании, просто увлечени
Реклама
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Дык, вы вопрос то задайте нормально. Не понятно, что вы хотите...
Контактная информация:
Встал на лапы
Сообщения: 110
Зарегистрирован: Вс май 10, 2009 18:23:45

Сообщение Belerafon »

Нужен способ преобразования массива unsigned char name[] = 1234.5678
в массив unsigned char name[] = 12,57613
посредством деления чисел 34,5678 на 60 и прибавление к получившейся сумме 12 ( 12+34,5678/60 )
не знаю как еще проще объяснить что мне нужно.
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

Belerafon , Алекс как всегда скуп на слова, но я думаю, что ему как и мне интересно узнать для чего это вам нужно, а если еще ближе к теме как вы будете использовать данный массив?
Тут есть несколько вариантов для вывода на дисплей ЖК, для вывода через терминал на экран компьютера, для иных случаев.

Опять же есть стандартные библиотеки с функциями наподобие sprintf(); Присмотритесь к поиску информации на данный тип функций.
Еще есть для преобразования строки в число atoi(); и наоборот itoa();

Ps Никому не интересно угадывать смысл непонятного, и возможно не нужного, выражения. Нужна конкретная постановка задачи :Создаю часы, нужна функция перевода чисел в массив для вывода на 7сегментный дисплей.

PsPsПравильно заданный вопрос уже содержит половину ответа.
Контактная информация:
Реклама
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

vitalik_1984 писал(а):Алекс как всегда скуп на слова
Дык какой вопрос такой и ответ :) Если честно, я не понимаю что нужно человеку. Он, похоже, и сам никак не поймёт что ему нужно, иначе вопросы были бы адекватные.
Контактная информация:
Реклама
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Ср янв 05, 2011 10:03:18

Сообщение ut1wpr »

Belerafon писал(а):Нужен способ преобразования массива unsigned char name[] = 1234.5678
в массив unsigned char name[] = 12,57613
посредством деления чисел 34,5678 на 60 и прибавление к получившейся сумме 12 ( 12+34,5678/60 )
не знаю как еще проще объяснить что мне нужно.
И точку заменить на запятую? :)
Из входной строки сделайте две "12" и "34.5678"
Преобразуйте в два числа int и float. Выполните арифметику с п.з.
Преобразуйте результат в строку.
Делайте с ней, что хотите.
Ответа КАК это сделать не дам. Помогаю только шевелить мозгами. Рытье по либам - ваше все.
С уважением,
Виктор.
Открыл глаза
Сообщения: 69
Зарегистрирован: Вт янв 13, 2009 16:27:43

Сообщение bimerman320 »

Помогите, пожалуйста, решить проблему. Суть проблемы в следующем: переделываю проект стабилитрон тестер с этого сайта, решил применить вместо дисплея 2x16, графический LPH9157-2 от сименса, управляющий контроллер Mega8L. Исходник переделал. В проекте используются 2 кнопки, обработка в прерываниях. Так вот, всё работает, но с закомментированной строкой #asm(sei). Как только раскомментирую #asm(sei), программа перестаёт работать как надо, а именно происходит ресет микроконтроллера, причём проверено как в железе, так и в симуляторе. Изначально у автора стоит оптимизация по скорости, а у меня по объёму. По скорости я поставить не могу, так как после компиляции размер прошивки превышает размер памяти atmega8.
Вложения
Stabilitron_tester.rar
(200.12 КБ) 150 скачиваний
Держит паяльник хвостом
Аватара пользователя
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

Сообщение Apparatchik »

bimerman320 писал(а):Так вот, всё работает, но с закомментированной строкой #asm(sei). Как только раскомментирую #asm(sei), программа перестаёт работать как надо, а именно происходит ресет микроконтроллера, причём проверено как в железе, так и в симуляторе.
Эта строка включает прерывания глабально, без неё прерывания срабатывать не будут. Как знаете что reset, может он просто виснет?
«И всё-таки она вертится!»
Открыл глаза
Сообщения: 69
Зарегистрирован: Вт янв 13, 2009 16:27:43

Сообщение bimerman320 »

Если раскомментировать #asm(sei) после инита дисплея и вывода какого-нибудь текста, то после появления этого текста через секунду текст пропадает, затем опять инит lcd, затем опять появляется текст, затем опять пропадает и так по кругу. WDT и BODEN отключены.
Держит паяльник хвостом
Аватара пользователя
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

Сообщение Apparatchik »

В код не вникал, но зачем там два "вечных цикла" while (1) ? :dont_know:
«И всё-таки она вертится!»
Встал на лапы
Аватара пользователя
Сообщения: 135
Зарегистрирован: Вт фев 21, 2012 20:42:26
Откуда: Санкт-Петербург, Россия, Земля

Сообщение U235 »

bimerman320, cкорее всего дело в функции получения значения АЦП. Попробуйте поменять строчки

Код: Выделить всё

// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
на

Код: Выделить всё

// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
//ADCSRA|=0x10;
А из наших труб идет необычный дым. Стой! Опасная зона! Работа мозга!...
Мучитель микросхем
Аватара пользователя
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

Сообщение unalex »

Apparatchik писал(а):но зачем там два "вечных цикла" while (1) ?
один из них не совсем вечный из него брики выпрыгивают :)
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Открыл глаза
Сообщения: 69
Зарегистрирован: Вт янв 13, 2009 16:27:43

Сообщение bimerman320 »

Я думаю дело не в функции ADC, так как она работает, если не разрешать прерывания, приборчик всё что надо меряет и отображает. К тому же эту функцию сформировал CodeWizard.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

unalex писал(а):из него брики выпрыгивают :)
Не брики, а брэйки. брик это кирпич. Выражаетесь правильно, а не то фейсом об тэйбл. :)))

А вообще если серьезно, то нужно внимательно посмотреть, чтобы все разрешенные прерывания имели свои обработчики, так как если в таблице прерывания отсутствует ссылка на нужный обработчик вполне возможно, что компилятор вставляет ссылку на первый попавшийся обработчик - ресет.
Как говорится защита от случайной ошибки, которая и проявляется в виде перезагрузки Мк.
Контактная информация:
Родился
Сообщения: 13
Зарегистрирован: Вс апр 01, 2012 02:14:55

Сообщение soznik »

Делаю первый шаг в написании программ на СИ в CVAVR (только второй день изучаю) весь вечер не могу добавить задержку. Помогите где проблема.
Вложения
Снимок1.png
(10.05 КБ) 364 скачивания
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Библиотеку (?) delay.h подключили?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Родился
Сообщения: 13
Зарегистрирован: Вс апр 01, 2012 02:14:55

Сообщение soznik »

всё спасибо разобрался.
Встал на лапы
Сообщения: 110
Зарегистрирован: Вс май 10, 2009 18:23:45

Сообщение Belerafon »

ut1wpr писал(а):Ответа КАК это сделать не дам. Помогаю только шевелить мозгами. Рытье по либам - ваше все.
Благодарю! В принципе правильно когда подталкивают и додумываешь сам, это помогает лучше понять и запомнить на будущее, мне и нужно было алгоритм что за чем делать, а далее разобрался. В принципе оказалось все не оч сложно!
Последний раз редактировалось Gudd-Head Ср апр 17, 2013 08:51:05, всего редактировалось 1 раз.
Причина: Нарушение п.2.7 Правил Форума
Встал на лапы
Аватара пользователя
Сообщения: 88
Зарегистрирован: Вс окт 30, 2011 22:52:51

Сообщение servo »

Подскажите как правильно настроить два uart приемо передатчика в ATMega128 на baudrate 230400, если МК работает от внешнего кварца 16мГц ?
Ответить

Вернуться в «AVR»