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

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

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

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

Можно молотком по нему стукнуть, вот и все разборки.
"Спасибо" за совет не нужно... :beer:
Реклама
Владимир29
Родился
Сообщения: 4
Зарегистрирован: Пн мар 28, 2016 17:31:56

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

Сообщение Владимир29 »

Аlex писал(а):Можно молотком по нему стукнуть, вот и все разборки.
"Спасибо" за совет не нужно... :beer:
Я что то не то спросил?
Реклама
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

Во-первых, код в виде этого холста просто нечитабелен. Я так понимаю, что вообще-то отступы расставлены, но хорошо бы это и нам увидеть.
Во-вторых, непонятно, в чём проблема.
В-третьих, лично я не вижу ни команд на запуск измерения температуры, ни задержек 750мс между ними и попытками чтения из датчика.
Владимир29
Родился
Сообщения: 4
Зарегистрирован: Пн мар 28, 2016 17:31:56

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

Сообщение Владимир29 »

WiseLord писал(а):Во-первых, код в виде этого холста просто нечитабелен. Я так понимаю, что вообще-то отступы расставлены, но хорошо бы это и нам увидеть.
Во-вторых, непонятно, в чём проблема.
В-третьих, лично я не вижу ни команд на запуск измерения температуры, ни задержек 750мс между ними и попытками чтения из датчика.
Проблема в том что на двух разрядах все работает нормально, но я решил добавить третий и тут проблема, первый разряд смещается на второй, а второй на третий и температура показывает на втором и третьем разряде, а на первом почем-то 0, а хотелось полноценный вывод примерно так 36,6. Ах, да совсем забыл, если int temper; прировнять к 123, то есть int temper=123; то на индикаторе высвечивается 123. Писал в CVAVR
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

В коде какие-то непонятки с развёрткой. Если по поводу PORTB.1 и PORTB.3можно худо-бедно догадаться, что это первая и третья цифры индикатора с ОА, то зачем на вторую цифру сразу и PORTD.7, и PORTB.0? Первое, похоже, точка, и зачем её дёргать в этом месте, непонятно.
Реклама
Владимир29
Родился
Сообщения: 4
Зарегистрирован: Пн мар 28, 2016 17:31:56

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

Сообщение Владимир29 »

WiseLord писал(а):В коде какие-то непонятки с развёрткой. Если по поводу PORTB.1 и PORTB.3можно худо-бедно догадаться, что это первая и третья цифры индикатора с ОА, то зачем на вторую цифру сразу и PORTD.7, и PORTB.0? Первое, похоже, точка, и зачем её дёргать в этом месте, непонятно.
А где её дёргать? да и проблема не в точке, а в выводе температуры
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

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

Владимир29 писал(а):Я что то не то спросил?
А вот об этом :
Владимир29 писал(а):Проблема в том что на двух разрядах все работает нормально, но я решил добавить третий и тут проблема, первый разряд смещается на второй, а второй на третий и температура показывает на втором и третьем разряде, а на первом почем-то 0, а хотелось полноценный вывод примерно так 36,6. Ах, да совсем забыл, если int temper; прировнять к 123, то есть int temper=123; то на индикаторе высвечивается 123. Писал в CVAVR
мы должны были сами догадаться ? :facepalm:

Необходимо :
1. Выложить код.
2. Дать схему.
3. Детально рассказать о проблеме, включая всё, что пытались сделать, устраняя её.

А просто выложить кусок простыни и панически крикнуть "ничего не работает, что делать, помогите, ..." - мало для получения вменяемого ответа.
У Вас вообще может быть с питанием проблема, или какая-нибудь ДС-ка дохлая, или проводок забыли припаять, ... Варинтов мульйон. Решить проблему по одному коду - это как поставить диагноз по фотографии.

Что касается Вашего кода. У Вас там вообще бардак. Первые советы - выучите массивы и типы переменных.
L.O.D
Встал на лапы
Сообщения: 139
Зарегистрирован: Чт фев 11, 2016 18:35:37

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

Сообщение L.O.D »

Аlex писал(а):Решить проблему по одному коду - это как поставить диагноз по фотографии.
Скорее по фотобумаге.
Владимир29 писал(а):да и проблема не в точке, а в выводе температуры ... Проблема в том что на двух разрядах все работает нормально, но я решил добавить третий и тут проблема
Вам уже писали, в чем проблема, но Вы, повидимому, не читатель, так?
WiseLord писал(а):лично я не вижу ни команд на запуск измерения температуры, ни задержек 750мс между ними и попытками чтения из датчика.
Это особенно странная слепота, если учесть, что:
Владимир29 писал(а):если int temper; прировнять к 123, ... то на индикаторе высвечивается 123.
то есть, со всей очевидностью дело не в точке и не в разрядах.
В конце концов, если ответ WiseLord'а вам не интересен, прошейте в программу ту температуру, которая вам нравится ("temper=123;"), и наслаждайтесь ею на дисплее. Еще и на ds'ке сэкономите.
- Из овощей я больше всего люблю пельмени... © Соседский Мальчик
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

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

Сообщение COKPOWEHEU »

Аlex писал(а): Что касается Вашего кода. У Вас там вообще бардак. Первые советы - выучите массивы и типы переменных.
Это точно:
int number = 0;
int number1 = 0;
int number2 = 0;
int number3 = 0;
if(i==0)
{
}
else if(i==1)
{
}
else if(i==2)
{
}
Это кошмар. А если захочется добавить или убрать пару разрядов - лазить по коду и искать где же они встречаются? Нет чтобы вынести индикацию в прерывание, отделить ее от заполнения видеобуфера, да и вообще оформить по-человечески.
switch(number)
{
case 0:{PORTD=0xC0; break;}
case 1:{PORTD=0xF9; break;}
case 2:{PORTD=0xA4; break;}
case 3:{PORTD=0xB0; break;}
case 4:{PORTD=0x99; break;}
case 5:{PORTD=0x92; break;}
case 6:{PORTD=0x82; break;}
case 7:{PORTD=0xF8; break;}
case 8:{PORTD=0x80; break;}
case 9:{PORTD=0x90; break;}
И это кошмар. Что если захочется поменять индикатор с общим анодом на индикатор с общим катодом? Или в угоду удобству разводки платы захочется поменять выводы местами? Компилятор, возможно, и приведет это к достаточно быстрому коду, но что мешает ему помочь?
TCCR1B=0x0A;
OCR1AH=0x10;
OCR1AL=0x46;
Это тоже кошмар. Почти традиционный, но от того не менее кошмарный. Какие-то магические числа вместо осмысленных названий битов.
flimp
Прорезались зубы
Сообщения: 242
Зарегистрирован: Вс май 24, 2015 19:10:41

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

Сообщение flimp »

библиотека шрифта в виде куска:
Спойлер

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

#ifndef _LCD_FONT_H
#define _LCD_FONT_H

#include <pgmspace.h>

/*
	font Latin +  Cyrillic 5x7 dots
	223 characters starting from space
*/

const uint8_t font5x7latcyr [] PROGMEM =
{
	0x07,			// size of header
	0x20,			// char offset
	0x05,			// width in dots
	0x08,			// height in dots
	0x01,			// horizontal spacing
	0x00,			// vertical spacing
	0x9F,			//  number of chars
    0x00, 0x00, 0x00, 0x00, 0x00 ,   //   0x20  32
    0x00, 0x00, 0x5F, 0x00, 0x00 ,   // ! 0x21  33
    0x00, 0x07, 0x00, 0x07, 0x00 ,   // " 0x22  34
и.т.д. 
ругается на "const uint8_t font5x7latcyr [] PROGMEM =" требуя какую то скобку, но я не понимаю, что ему нужно, ведь все сделано вроде как верно, и массив задается согласно синтаксису.
как поправить?
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

А pgmspace и PROGMEM разве в CV имеются?
L.O.D
Встал на лапы
Сообщения: 139
Зарегистрирован: Чт фев 11, 2016 18:35:37

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

Сообщение L.O.D »

WiseLord писал(а):А pgmspace и PROGMEM разве в CV имеются?
Это как сушить кошку в микроволновке - "А разве нельзя?! В инструкции не было сказано 'не употребляйте pgmspace и PROGMEM, такшта, пусть компилит!!! :evil:'"
- Из овощей я больше всего люблю пельмени... © Соседский Мальчик
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

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

L.O.D писал(а):В инструкции не было сказано
Он сказано может и не было, только вот инструкции читают далеко не все :facepalm:
L.O.D
Встал на лапы
Сообщения: 139
Зарегистрирован: Чт фев 11, 2016 18:35:37

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

Сообщение L.O.D »

Дык, Аlex, а я обо што?! :)))
- Из овощей я больше всего люблю пельмени... © Соседский Мальчик
flimp
Прорезались зубы
Сообщения: 242
Зарегистрирован: Вс май 24, 2015 19:10:41

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

Сообщение flimp »

вот унизили так унизили, сам понимаю, что маханул, но теперь вопрос - как заменить этот progmem?
просто я не так давно начал осваиваться все это, и не совершает ошибок лишь тот, кто ничего не делает. от сюда просьба, дайте наводку, как это заметить?
p.s. гугл кормит меня тем, что это библиотеки под cvavr, однако получается, что не так
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

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

flimp писал(а):дайте наводку
Прочитать инструкцию на инструмент. Уже намекали выше.

Если Вы не в курсе, PROGMEM - квалификатор области размещения переменных. Это так, чтобы было от чего отталкиваться при поиске.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

flimp писал(а):теперь вопрос - как заменить этот progmem?
1. PROGMEM убрать
2. везде, где был PROGMEM в начале строки написать flash, т.е. грубо говоря, заменить PROGMEM на flash, но только PROGMEM может быть в разных местах строки, а flash должно быть в ее начале. т.е. было int array[] PROGMEM = {.... должно стать flash int array[] = {....
3. везде по коду найти функции pgm_read_byte или иные функции, начинающиеся на pgm_read_, и заменить эти функции просто на их аргументы. т.е. было i = pgm_read_byte(&MASSIF[j]); должно стать i = MASSIV[j];
4. удалить строку #include <pgmspace.h> или любые иные упоминания этого файла


по-моему, это все...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

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

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

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

Ну вот, всегда найдётся человек, который выложит всё на блюдечке, избавив другого от тяжкого и мучительного занятия - читать и думать :)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

Аlex писал(а):Ну вот, всегда найдётся человек, который выложит всё на блюдечке, избавив другого от тяжкого и мучительного занятия - читать и думать
вы можете почитать, как лично мне советовали читать и думать, когда я искал помощи по linux - вы легко найдете эти сообщения.

мне было, мягко говоря, неприятно получать такие "советы". поэтому я стараюсь сам таких советов не давать, на сколько хватает моего терпения. ну и не забывайте мой почти риторический вопрос: Почему вместо прямого ответа на прямой вопрос вы объясняете автору, какой он мудакглупый?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

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

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

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

Ну никто, как бы, глупым человека не называл. Это раз.
Во вторых. Вы предлагаете всех избавлять от использования документации, давая готовые решения ? И что после них у человека отложится в голове ? Кроме как "Нах мне читать, время тратить, схожу ка я на форум и мне там всё сделают", ничего. Со следующим элементарным вопросом, который либо гуглится, либо легко находится в документации, он опять побежит сюда. И так будет до тех пор, пока он не научится пользоваться литературой. А рано или поздно ему это придётся сделать. Или Вы возьмёте на себя обязательства - в течении всей его жизни делать всё за него ? А всё потому, что Вас тоже заставляли читать документацию. Кстати, где это было, тут на форуме или где-то на другом ресурсе ? Ссылочку можно ?
Ответить

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