Страница 359 из 421
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн мар 28, 2016 17:54:02
Аlex
Можно молотком по нему стукнуть, вот и все разборки.
"Спасибо" за совет не нужно...

Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн мар 28, 2016 18:02:16
Владимир29
Аlex писал(а):Можно молотком по нему стукнуть, вот и все разборки.
"Спасибо" за совет не нужно...

Я что то не то спросил?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн мар 28, 2016 19:22:00
WiseLord
Во-первых, код в виде этого холста просто нечитабелен. Я так понимаю, что вообще-то отступы расставлены, но хорошо бы это и нам увидеть.
Во-вторых, непонятно, в чём проблема.
В-третьих, лично я не вижу ни команд на запуск измерения температуры, ни задержек 750мс между ними и попытками чтения из датчика.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн мар 28, 2016 19:41:45
Владимир29
WiseLord писал(а):Во-первых, код в виде этого холста просто нечитабелен. Я так понимаю, что вообще-то отступы расставлены, но хорошо бы это и нам увидеть.
Во-вторых, непонятно, в чём проблема.
В-третьих, лично я не вижу ни команд на запуск измерения температуры, ни задержек 750мс между ними и попытками чтения из датчика.
Проблема в том что на двух разрядах все работает нормально, но я решил добавить третий и тут проблема, первый разряд смещается на второй, а второй на третий и температура показывает на втором и третьем разряде, а на первом почем-то 0, а хотелось полноценный вывод примерно так 36,6. Ах, да совсем забыл, если int temper; прировнять к 123, то есть int temper=123; то на индикаторе высвечивается 123. Писал в CVAVR
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн мар 28, 2016 20:24:12
WiseLord
В коде какие-то непонятки с развёрткой. Если по поводу PORTB.1 и PORTB.3можно худо-бедно догадаться, что это первая и третья цифры индикатора с ОА, то зачем на вторую цифру сразу и PORTD.7, и PORTB.0? Первое, похоже, точка, и зачем её дёргать в этом месте, непонятно.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн мар 28, 2016 20:39:03
Владимир29
WiseLord писал(а):В коде какие-то непонятки с развёрткой. Если по поводу PORTB.1 и PORTB.3можно худо-бедно догадаться, что это первая и третья цифры индикатора с ОА, то зачем на вторую цифру сразу и PORTD.7, и PORTB.0? Первое, похоже, точка, и зачем её дёргать в этом месте, непонятно.
А где её дёргать? да и проблема не в точке, а в выводе температуры
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт мар 29, 2016 09:30:32
Аlex
Владимир29 писал(а):Я что то не то спросил?
А вот об этом :
Владимир29 писал(а):Проблема в том что на двух разрядах все работает нормально, но я решил добавить третий и тут проблема, первый разряд смещается на второй, а второй на третий и температура показывает на втором и третьем разряде, а на первом почем-то 0, а хотелось полноценный вывод примерно так 36,6. Ах, да совсем забыл, если int temper; прировнять к 123, то есть int temper=123; то на индикаторе высвечивается 123. Писал в CVAVR
мы должны были сами догадаться ?
Необходимо :
1. Выложить код.
2. Дать схему.
3. Детально рассказать о проблеме, включая всё, что пытались сделать, устраняя её.
А просто выложить кусок простыни и панически крикнуть "ничего не работает, что делать, помогите, ..." - мало для получения вменяемого ответа.
У Вас вообще может быть с питанием проблема, или какая-нибудь ДС-ка дохлая, или проводок забыли припаять, ... Варинтов мульйон. Решить проблему по одному коду - это как поставить диагноз по фотографии.
Что касается Вашего кода. У Вас там вообще бардак. Первые советы - выучите массивы и типы переменных.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт мар 29, 2016 10:18:47
L.O.D
Аlex писал(а):Решить проблему по одному коду - это как поставить диагноз по фотографии.
Скорее по фотобумаге.
Владимир29 писал(а):да и проблема не в точке, а в выводе температуры ... Проблема в том что на двух разрядах все работает нормально, но я решил добавить третий и тут проблема
Вам уже писали, в чем проблема, но Вы, повидимому, не читатель, так?
WiseLord писал(а):лично я не вижу ни команд на запуск измерения температуры, ни задержек 750мс между ними и попытками чтения из датчика.
Это особенно странная слепота, если учесть, что:
Владимир29 писал(а):если int temper; прировнять к 123, ... то на индикаторе высвечивается 123.
то есть, со всей очевидностью дело не в точке и не в разрядах.
В конце концов, если ответ
WiseLord'а вам не интересен, прошейте в программу ту температуру, которая вам нравится ("
temper=123;"), и наслаждайтесь ею на дисплее. Еще и на ds'ке сэкономите.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт мар 29, 2016 16:57:04
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;
Это тоже кошмар. Почти традиционный, но от того не менее кошмарный. Какие-то магические числа вместо осмысленных названий битов.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн апр 04, 2016 04:41:48
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 =" требуя какую то скобку, но я не понимаю, что ему нужно, ведь все сделано вроде как верно, и массив задается согласно синтаксису.
как поправить?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн апр 04, 2016 05:48:36
WiseLord
А pgmspace и PROGMEM разве в CV имеются?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн апр 04, 2016 11:18:13
L.O.D
WiseLord писал(а):А pgmspace и PROGMEM разве в CV имеются?
Это как сушить кошку в микроволновке - "
А разве нельзя?! В инструкции не было сказано 'не употребляйте pgmspace и PROGMEM, такшта, пусть компилит!!! 
'"
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн апр 04, 2016 11:21:50
Аlex
L.O.D писал(а):В инструкции не было сказано
Он сказано может и не было, только вот инструкции читают далеко не все

Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн апр 04, 2016 12:31:54
L.O.D
Дык,
Аlex, а я обо што?!

Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн апр 04, 2016 13:26:10
flimp
вот унизили так унизили, сам понимаю, что маханул, но теперь вопрос - как заменить этот progmem?
просто я не так давно начал осваиваться все это, и не совершает ошибок лишь тот, кто ничего не делает. от сюда просьба, дайте наводку, как это заметить?
p.s. гугл кормит меня тем, что это библиотеки под cvavr, однако получается, что не так
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн апр 04, 2016 13:28:50
Аlex
flimp писал(а):дайте наводку
Прочитать инструкцию на инструмент. Уже намекали выше.
Если Вы не в курсе,
PROGMEM - квалификатор области размещения переменных. Это так, чтобы было от чего отталкиваться при поиске.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн апр 04, 2016 13:37:27
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> или любые иные упоминания этого файла
по-моему, это все...
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн апр 04, 2016 13:39:40
Аlex
Ну вот, всегда найдётся человек, который выложит всё на блюдечке, избавив другого от тяжкого и мучительного занятия - читать и думать

Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн апр 04, 2016 13:52:45
ARV
Аlex писал(а):Ну вот, всегда найдётся человек, который выложит всё на блюдечке, избавив другого от тяжкого и мучительного занятия - читать и думать
вы можете почитать, как лично мне советовали читать и думать, когда я искал помощи по linux - вы легко найдете эти сообщения.
мне было, мягко говоря, неприятно получать такие "советы". поэтому я стараюсь сам таких советов не давать, на сколько хватает моего терпения. ну и не забывайте мой почти риторический вопрос:
Почему вместо прямого ответа на прямой вопрос вы объясняете автору, какой он мудакглупый?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн апр 04, 2016 14:14:53
Аlex
Ну никто, как бы, глупым человека не называл. Это раз.
Во вторых. Вы предлагаете всех избавлять от использования документации, давая готовые решения ? И что после них у человека отложится в голове ? Кроме как "Нах мне читать, время тратить, схожу ка я на форум и мне там всё сделают", ничего. Со следующим элементарным вопросом, который либо гуглится, либо легко находится в документации, он опять побежит сюда. И так будет до тех пор, пока он не научится пользоваться литературой. А рано или поздно ему это придётся сделать. Или Вы возьмёте на себя обязательства - в течении всей его жизни делать всё за него ? А всё потому, что Вас тоже заставляли читать документацию. Кстати, где это было, тут на форуме или где-то на другом ресурсе ? Ссылочку можно ?