"Спасибо" за совет не нужно...
CodeVision AVR в вопросах и ответах
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Можно молотком по нему стукнуть, вот и все разборки.
"Спасибо" за совет не нужно...
"Спасибо" за совет не нужно...
- Реклама
-
Владимир29
- Родился
- Сообщения: 4
- Зарегистрирован: Пн мар 28, 2016 17:31:56
Re: CodeVision AVR в вопросах и ответах
Я что то не то спросил?Аlex писал(а):Можно молотком по нему стукнуть, вот и все разборки.
"Спасибо" за совет не нужно...
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Во-первых, код в виде этого холста просто нечитабелен. Я так понимаю, что вообще-то отступы расставлены, но хорошо бы это и нам увидеть.
Во-вторых, непонятно, в чём проблема.
В-третьих, лично я не вижу ни команд на запуск измерения температуры, ни задержек 750мс между ними и попытками чтения из датчика.
Во-вторых, непонятно, в чём проблема.
В-третьих, лично я не вижу ни команд на запуск измерения температуры, ни задержек 750мс между ними и попытками чтения из датчика.
-
Владимир29
- Родился
- Сообщения: 4
- Зарегистрирован: Пн мар 28, 2016 17:31:56
Re: CodeVision AVR в вопросах и ответах
Проблема в том что на двух разрядах все работает нормально, но я решил добавить третий и тут проблема, первый разряд смещается на второй, а второй на третий и температура показывает на втором и третьем разряде, а на первом почем-то 0, а хотелось полноценный вывод примерно так 36,6. Ах, да совсем забыл, если int temper; прировнять к 123, то есть int temper=123; то на индикаторе высвечивается 123. Писал в CVAVRWiseLord писал(а):Во-первых, код в виде этого холста просто нечитабелен. Я так понимаю, что вообще-то отступы расставлены, но хорошо бы это и нам увидеть.
Во-вторых, непонятно, в чём проблема.
В-третьих, лично я не вижу ни команд на запуск измерения температуры, ни задержек 750мс между ними и попытками чтения из датчика.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
В коде какие-то непонятки с развёрткой. Если по поводу PORTB.1 и PORTB.3можно худо-бедно догадаться, что это первая и третья цифры индикатора с ОА, то зачем на вторую цифру сразу и PORTD.7, и PORTB.0? Первое, похоже, точка, и зачем её дёргать в этом месте, непонятно.
- Реклама
-
Владимир29
- Родился
- Сообщения: 4
- Зарегистрирован: Пн мар 28, 2016 17:31:56
Re: CodeVision AVR в вопросах и ответах
А где её дёргать? да и проблема не в точке, а в выводе температурыWiseLord писал(а):В коде какие-то непонятки с развёрткой. Если по поводу PORTB.1 и PORTB.3можно худо-бедно догадаться, что это первая и третья цифры индикатора с ОА, то зачем на вторую цифру сразу и PORTD.7, и PORTB.0? Первое, похоже, точка, и зачем её дёргать в этом месте, непонятно.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
А вот об этом :Владимир29 писал(а):Я что то не то спросил?
мы должны были сами догадаться ?Владимир29 писал(а):Проблема в том что на двух разрядах все работает нормально, но я решил добавить третий и тут проблема, первый разряд смещается на второй, а второй на третий и температура показывает на втором и третьем разряде, а на первом почем-то 0, а хотелось полноценный вывод примерно так 36,6. Ах, да совсем забыл, если int temper; прировнять к 123, то есть int temper=123; то на индикаторе высвечивается 123. Писал в CVAVR
Необходимо :
1. Выложить код.
2. Дать схему.
3. Детально рассказать о проблеме, включая всё, что пытались сделать, устраняя её.
А просто выложить кусок простыни и панически крикнуть "ничего не работает, что делать, помогите, ..." - мало для получения вменяемого ответа.
У Вас вообще может быть с питанием проблема, или какая-нибудь ДС-ка дохлая, или проводок забыли припаять, ... Варинтов мульйон. Решить проблему по одному коду - это как поставить диагноз по фотографии.
Что касается Вашего кода. У Вас там вообще бардак. Первые советы - выучите массивы и типы переменных.
Re: CodeVision AVR в вопросах и ответах
Скорее по фотобумаге.Аlex писал(а):Решить проблему по одному коду - это как поставить диагноз по фотографии.
Вам уже писали, в чем проблема, но Вы, повидимому, не читатель, так?Владимир29 писал(а):да и проблема не в точке, а в выводе температуры ... Проблема в том что на двух разрядах все работает нормально, но я решил добавить третий и тут проблема
Это особенно странная слепота, если учесть, что:WiseLord писал(а):лично я не вижу ни команд на запуск измерения температуры, ни задержек 750мс между ними и попытками чтения из датчика.
то есть, со всей очевидностью дело не в точке и не в разрядах.Владимир29 писал(а):если int temper; прировнять к 123, ... то на индикаторе высвечивается 123.
В конце концов, если ответ WiseLord'а вам не интересен, прошейте в программу ту температуру, которая вам нравится ("temper=123;"), и наслаждайтесь ею на дисплее. Еще и на ds'ке сэкономите.
- Из овощей я больше всего люблю пельмени... © Соседский Мальчик
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: CodeVision AVR в вопросах и ответах
Это точно:А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;
Re: CodeVision AVR в вопросах и ответах
библиотека шрифта в виде куска:
ругается на "const uint8_t font5x7latcyr [] PROGMEM =" требуя какую то скобку, но я не понимаю, что ему нужно, ведь все сделано вроде как верно, и массив задается согласно синтаксису.
как поправить?
Спойлер
Код: Выделить всё
#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
и.т.д. как поправить?
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
А pgmspace и PROGMEM разве в CV имеются?
Re: CodeVision AVR в вопросах и ответах
Это как сушить кошку в микроволновке - "А разве нельзя?! В инструкции не было сказано 'не употребляйте pgmspace и PROGMEM, такшта, пусть компилит!!!WiseLord писал(а):А pgmspace и PROGMEM разве в CV имеются?
- Из овощей я больше всего люблю пельмени... © Соседский Мальчик
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Он сказано может и не было, только вот инструкции читают далеко не всеL.O.D писал(а):В инструкции не было сказано
Re: CodeVision AVR в вопросах и ответах
Дык, Аlex, а я обо што?! 
- Из овощей я больше всего люблю пельмени... © Соседский Мальчик
Re: CodeVision AVR в вопросах и ответах
вот унизили так унизили, сам понимаю, что маханул, но теперь вопрос - как заменить этот progmem?
просто я не так давно начал осваиваться все это, и не совершает ошибок лишь тот, кто ничего не делает. от сюда просьба, дайте наводку, как это заметить?
p.s. гугл кормит меня тем, что это библиотеки под cvavr, однако получается, что не так
просто я не так давно начал осваиваться все это, и не совершает ошибок лишь тот, кто ничего не делает. от сюда просьба, дайте наводку, как это заметить?
p.s. гугл кормит меня тем, что это библиотеки под cvavr, однако получается, что не так
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Прочитать инструкцию на инструмент. Уже намекали выше.flimp писал(а):дайте наводку
Если Вы не в курсе, PROGMEM - квалификатор области размещения переменных. Это так, чтобы было от чего отталкиваться при поиске.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
1. PROGMEM убратьflimp писал(а):теперь вопрос - как заменить этот 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 в вопросах и ответах
Ну вот, всегда найдётся человек, который выложит всё на блюдечке, избавив другого от тяжкого и мучительного занятия - читать и думать 
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
вы можете почитать, как лично мне советовали читать и думать, когда я искал помощи по linux - вы легко найдете эти сообщения.Аlex писал(а):Ну вот, всегда найдётся человек, который выложит всё на блюдечке, избавив другого от тяжкого и мучительного занятия - читать и думать
мне было, мягко говоря, неприятно получать такие "советы". поэтому я стараюсь сам таких советов не давать, на сколько хватает моего терпения. ну и не забывайте мой почти риторический вопрос: Почему вместо прямого ответа на прямой вопрос вы объясняете автору, какой он мудакглупый?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Ну никто, как бы, глупым человека не называл. Это раз.
Во вторых. Вы предлагаете всех избавлять от использования документации, давая готовые решения ? И что после них у человека отложится в голове ? Кроме как "Нах мне читать, время тратить, схожу ка я на форум и мне там всё сделают", ничего. Со следующим элементарным вопросом, который либо гуглится, либо легко находится в документации, он опять побежит сюда. И так будет до тех пор, пока он не научится пользоваться литературой. А рано или поздно ему это придётся сделать. Или Вы возьмёте на себя обязательства - в течении всей его жизни делать всё за него ? А всё потому, что Вас тоже заставляли читать документацию. Кстати, где это было, тут на форуме или где-то на другом ресурсе ? Ссылочку можно ?
Во вторых. Вы предлагаете всех избавлять от использования документации, давая готовые решения ? И что после них у человека отложится в голове ? Кроме как "Нах мне читать, время тратить, схожу ка я на форум и мне там всё сделают", ничего. Со следующим элементарным вопросом, который либо гуглится, либо легко находится в документации, он опять побежит сюда. И так будет до тех пор, пока он не научится пользоваться литературой. А рано или поздно ему это придётся сделать. Или Вы возьмёте на себя обязательства - в течении всей его жизни делать всё за него ? А всё потому, что Вас тоже заставляли читать документацию. Кстати, где это было, тут на форуме или где-то на другом ресурсе ? Ссылочку можно ?


