Можно почитать даташит или Евстифеева. Там черном по белому написано, что при 0-м значении вывод включится и тут же выключится. Поэтому Ваш светодиод полностью не гаснет. Либо выключайте таймер, если хотите погасить, либо вешайте НЧ-фильтр, чтобы погасить этот импульс.hfelyx писал(а): На ногу В.0 (OCR0A) повесил через полевик( 10к между G и S, 100Om от ноги мк на G) светодиод , а он не хочет полностью тухнуть при значении OCR0A=0; !!! Что можно сделать чтоб убрать засветку??? Спасибо!
P.S. Если написал не в той ветке извините и направьте!
CodeVision AVR в вопросах и ответах
- ИС-пытатель
- Вымогатель припоя
- Сообщения: 577
- Зарегистрирован: Ср июн 19, 2013 08:10:48
- Откуда: Москва, СПб, Липецк, Рязань
Re: CodeVision AVR в вопросах и ответах
- Реклама
-
Vrungel
- Первый раз сказал Мяу!
- Сообщения: 21
- Зарегистрирован: Пт сен 07, 2007 22:13:42
- Откуда: Мариуполь
Re: CodeVision AVR в вопросах и ответах
Симулирую пока кстати в протеус (7.1).Vrungel писал(а):Добрый вечер.
В версии 2.05.3 есть штатная библиотека для работы с графическим экраном ks0108 (128*64).
Есть даже пять шрифтов. Но они без русских букв - вот в чём беда![]()
Может попадались кому-то совместимые с CV русифицированные шрифты?
p.s. Пытался генерировать сам с помощью LCD Vision - их экран почему-то не отображает.
LCD Vision 1.05 леченый. Щрифт создаёт, на первый взгляд нормальный, но на индикатор не выводится.
"штатные" работают без проблем.
p.s. прилагаю проект со шрифтами и моделью (мега32).
интересуемый шрифт - "arial" - сгенерён из стандартного ариала-8
"не срабатывает" команда в 404-й строке
Код: Выделить всё
glcd_outtextxyf(0,40,"Arial 8\n");- Вложения
-
- архив.zip
- (354.49 КБ) 180 скачиваний
-
clawham
- Поставщик валерьянки для Кота
- Сообщения: 1957
- Зарегистрирован: Пт окт 31, 2008 09:38:55
- Откуда: Одесса
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
по поводу экрана - а вы уверены что протеус умеет симулировать этот дисплей полностью? а в прошивке вы видите этот шрифт? А как оно передаётся? Может нужна какая команда для загрузки этого шрифта в экран? Или есть подозрение что эта библиотека имеет фреймбуффер а на экран гонит только картинку? Очень чтото сомнительное
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Не доверяйте русским лужам - это может быть вход в метро.
-
Vrungel
- Первый раз сказал Мяу!
- Сообщения: 21
- Зарегистрирован: Пт сен 07, 2007 22:13:42
- Откуда: Мариуполь
Re: CodeVision AVR в вопросах и ответах
Как симулирует протеус - не знаю. В железе пока не проверял.clawham писал(а):по поводу экрана - а вы уверены что протеус умеет симулировать этот дисплей полностью? а в прошивке вы видите этот шрифт? А как оно передаётся? Может нужна какая команда для загрузки этого шрифта в экран? Или есть подозрение что эта библиотека имеет фреймбуффер а на экран гонит только картинку? Очень чтото сомнительное
Шрифты идущие с CV в комплекте, отображаются. По идее значит нельзя сказать что не работает вообще.
Но мне нужна кириллица. И когда создаю шрифт с помощью LCD Vision - ничего не выводиться.
Вот и интересуюсь - есть ли опыт "русификации" встроеных шрифтов?
Кстати вот тут:
http://avr-start.ru/?p=1423
дядька выложил шрифт, но только с большими буквами - он тоже работает.
А те что я пытаюсь состряпать - нет.
-
Vrungel
- Первый раз сказал Мяу!
- Сообщения: 21
- Зарегистрирован: Пт сен 07, 2007 22:13:42
- Откуда: Мариуполь
Re: CodeVision AVR в вопросах и ответах
Появилась уточнённая информация.
Проблемы начинаются если шрифт кончается на "я" - код "FF".
Если при генерации шрифта букву "я" в него не включать, и ограничиться "ю" - то вывод на экран происходит нормально.
Похоже на какой-то глюк в функции вывода строк, в библиотеке "graphics.lib".
А её я не знаю как править.
Замкнутый круг
И всё из-за "я".
В версии выше 2.05.3 проверить не могу - код больше 4к.
Может есть здесь лицензионные пользователи?
Проблемы начинаются если шрифт кончается на "я" - код "FF".
Если при генерации шрифта букву "я" в него не включать, и ограничиться "ю" - то вывод на экран происходит нормально.
Похоже на какой-то глюк в функции вывода строк, в библиотеке "graphics.lib".
А её я не знаю как править.
Замкнутый круг
И всё из-за "я".
В версии выше 2.05.3 проверить не могу - код больше 4к.
Может есть здесь лицензионные пользователи?
Последний раз редактировалось Vrungel Вт май 27, 2014 20:12:03, всего редактировалось 1 раз.
- Реклама
- ИС-пытатель
- Вымогатель припоя
- Сообщения: 577
- Зарегистрирован: Ср июн 19, 2013 08:10:48
- Откуда: Москва, СПб, Липецк, Рязань
Re: CodeVision AVR в вопросах и ответах
заменяйте я на [йа]. 
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Да напишите свой вывод символов. Точку выводить умеете (надеюсь - да) ? Ну и выводите из массива по точкам символ. Задачка для начинающего - простецкая.Vrungel писал(а):Похоже на какой-то глюк в функции вывода строк, в библиотеке "graphics.lib".
А её я не знаю как править.
-
Vrungel
- Первый раз сказал Мяу!
- Сообщения: 21
- Зарегистрирован: Пт сен 07, 2007 22:13:42
- Откуда: Мариуполь
Re: CodeVision AVR в вопросах и ответах
Ну это как крайний случай.Аlex писал(а):Да напишите свой вывод символов. Точку выводить умеете (надеюсь - да) ? Ну и выводите из массива по точкам символ. Задачка для начинающего - простецкая.Vrungel писал(а):Похоже на какой-то глюк в функции вывода строк, в библиотеке "graphics.lib".
А её я не знаю как править.
Тут уже готовые библиотеки работы с текстом, с геометрическими фигурами и т.д.
Самому писать всё - коты животные ленивые
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Зачем всё ? Только вывод символовVrungel писал(а):Самому писать всё - коты животные ленивые
- mr4ester
- Держит паяльник хвостом
- Сообщения: 900
- Зарегистрирован: Чт авг 27, 2009 20:09:01
- Откуда: Приднестровье г.Бендеры
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Добрый день, не хочет работать такая конструкция
if ((keys == 1) && (menu == 20)) {
menu -= 10;
}
else {
menu--;
}
не выполняется вот это условие ((keys == 1) && (menu == 20)), даже если я при объявлении переменных сразу им присваиваю необходимые значения, все равно, не могу понять почему, погуглил, конструкция записи условия "И" вроде бы правильная.
if ((keys == 1) && (menu == 20)) {
menu -= 10;
}
else {
menu--;
}
не выполняется вот это условие ((keys == 1) && (menu == 20)), даже если я при объявлении переменных сразу им присваиваю необходимые значения, все равно, не могу понять почему, погуглил, конструкция записи условия "И" вроде бы правильная.
Работа избавляет нас от трех великих зол: скуки, порока, нужды. (Вольтер)
- mr4ester
- Держит паяльник хвостом
- Сообщения: 900
- Зарегистрирован: Чт авг 27, 2009 20:09:01
- Откуда: Приднестровье г.Бендеры
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Суть программы такова меню на ЖКИ HD44780. Навигация в меню 4 кнопками вни, вверх, назад(esc), ок, меню состоит из 2х основных строк меню и по 2 подменю у каждого меню, для определения текущего состояния меню используется переменная "menu" значение 10 соответствует первому пункту меню значение 1,1 и 1,2 подпунктам первого меню, так же значение 20 соответствует второму пункту меню, 2,1 и 2,2 его подпунктам.
Код: Выделить всё
//******************************************************************************
//
// Author(s)...:
//
// Target(s)...: atmega8
//
// Compiler....: CodeVision 2.05
//
// Description.:
//
// Data........: 12.10.2011
//
//******************************************************************************
#include <MEGA8.H>
#include <io.h>
#include <delay.h>
//#include "lcd_lib.h"
#include <lcd.h>
#asm
.equ __lcd_port=0x18 ; //PORTB
#endasm
unsigned char keys = 0;
unsigned char menu = 10;
void main (void)
{
lcd_init(16);
PORTD = 0b1111111;
DDRD = 0b00000000;
while(1) {
if(PIND.0 == 0){
while(PIND.0 == 0)
keys = 1;
}
if(PIND.1 == 0){
while(PIND.1 == 0)
keys = 2;
}
if(PIND.2 == 0){
while(PIND.2 == 0)
keys = 3;
}
if(PIND.3 == 0){
while(PIND.3 == 0)
keys = 4;
}
delay_ms(60);
if(keys){
if ((keys == 1) && (menu == 20)) { // кнопка вверх
menu -= 10;
}
else {
menu--;
}
if ((keys == 2) && (menu == 10)){ // вниз
menu += 10;
}
else {
menu++;
}
if (keys == 3){ // ESC
menu -= 10;
}
if (keys == 4){ //ОК
menu += 1;
}
keys = 0;
}
switch (menu)
{
case 10:
lcd_gotoxy(0,0);
lcd_putsf("> menu 1");
lcd_gotoxy(0,1);
lcd_putsf(" menu 2");
break;
case 20:
lcd_gotoxy(0,0);
lcd_putsf(" menu 1");
lcd_gotoxy(0,1);
lcd_putsf("> menu 2");
break;
case 11:
lcd_gotoxy(0,0);
lcd_putsf("> menu 1.1");
lcd_gotoxy(0,1);
lcd_putsf(" menu 1.2");
break;
case 12:
lcd_gotoxy(0,0);
lcd_putsf(" menu 1.1");
lcd_gotoxy(0,1);
lcd_putsf("> menu 1.2");
break;
case 21:
lcd_gotoxy(0,0);
lcd_putsf("> menu 2.1");
lcd_gotoxy(0,1);
lcd_putsf(" menu 2.2");
break;
case 22:
lcd_gotoxy(0,0);
lcd_putsf(" menu 2.1");
lcd_gotoxy(0,1);
lcd_putsf("> menu 2.2");
}
}
}Работа избавляет нас от трех великих зол: скуки, порока, нужды. (Вольтер)
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
У Вас уже есть кусок кода, который выполняется при условии (menu == 20) :Код: Выделить всё
if ((keys == 1) && (menu == 20)) { // кнопка вверх
Код: Выделить всё
case 20:
...
...
break;
Код: Выделить всё
if (keys == 1){.....}Будет и кода меньше и нагляднее - видно что делается в каждом (под)пункте меню.
Задержечку бы нужно тут поставить - дребезга аднака.... ))Код: Выделить всё
if(PIND.0 == 0){ while(PIND.0 == 0) keys = 1; }
-
volter5000
- Встал на лапы
- Сообщения: 120
- Зарегистрирован: Пт май 28, 2010 15:31:58
Re: CodeVision AVR в вопросах и ответах
День добрый, столкнулся с проблемой в codevision, при разложении ряда фурье получаюятся числа солидных размеров, и по традиции нифига по началу не работало, пока не заметил (в Proteus), что
unsigned long int принимает значения лишь от 0 до 65536(по сути беззнаковый int), потом переполняется и начинает счет с нуля, пробовал отдельно (тупо одна переменная и всё), таже песня, а главное что занимает как положено 4 байта памяти, но при этом long (long int) как положено принимает значения все положенные ему значеня. Atmega32a, или может я чего то не знаю. И эта проблема как на версии 1.х.х, так и на 2.х.х. Хелп плз. Значение переменной i, смотрю в протеусе, весь код ФФТ выкладывать не буду ибо грамоздкий. Заранее спасибо
#include <mega32a.h>
unsigned long int i;
void main(void){
while (1)
{
i=4000000000;
}
}
unsigned long int принимает значения лишь от 0 до 65536(по сути беззнаковый int), потом переполняется и начинает счет с нуля, пробовал отдельно (тупо одна переменная и всё), таже песня, а главное что занимает как положено 4 байта памяти, но при этом long (long int) как положено принимает значения все положенные ему значеня. Atmega32a, или может я чего то не знаю. И эта проблема как на версии 1.х.х, так и на 2.х.х. Хелп плз. Значение переменной i, смотрю в протеусе, весь код ФФТ выкладывать не буду ибо грамоздкий. Заранее спасибо
#include <mega32a.h>
unsigned long int i;
void main(void){
while (1)
{
i=4000000000;
}
}
- ИС-пытатель
- Вымогатель припоя
- Сообщения: 577
- Зарегистрирован: Ср июн 19, 2013 08:10:48
- Откуда: Москва, СПб, Липецк, Рязань
Re: CodeVision AVR в вопросах и ответах
Кстати, интересная тема! Сколько по времени выполняется разложение? И длительность сигнала, который обрабатываете?
Попробуйте объявлять просто unsigned long
Попробуйте объявлять просто unsigned long
-
volter5000
- Встал на лапы
- Сообщения: 120
- Зарегистрирован: Пт май 28, 2010 15:31:58
Re: CodeVision AVR в вопросах и ответах
да пробовал unsigned long просто, таже история, ФФТ берет (в моем врианте) первую гармонику (50гц) и кратные ей, переделать то можно под любую частоту, но там числа заоблочные получаются просто. даже еслиб long без знаковый заработал бы и то малова то бы было, там некоторые переменные желательно 8ми байтовые, a long long ковижен говорит мол только в про версии, хз чо делать.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Есть такой глюк в протеусе, подтверждаю. Беззнаковый long показывает только 2 младших байта.
-
volter5000
- Встал на лапы
- Сообщения: 120
- Зарегистрирован: Пт май 28, 2010 15:31:58
Re: CodeVision AVR в вопросах и ответах
Так это глюк протеуса или компилятора ?? и как правду то узнать ))
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Я прогаю PIC'и, на нескольких компиляторах такое происходит.
Выходит - виновен протеус.
Выходит - виновен протеус.
-
volter5000
- Встал на лапы
- Сообщения: 120
- Зарегистрирован: Пт май 28, 2010 15:31:58
Re: CodeVision AVR в вопросах и ответах
Нет, просто проблема в том, что никак толком не отладить изза этих багов.
Вот теперь думаю, заменой компилятора проблема решится или нет, толком описания по фиксам отображения переменных в протеусе чот не нашел.
Вот теперь думаю, заменой компилятора проблема решится или нет, толком описания по фиксам отображения переменных в протеусе чот не нашел.


