Форум
 

Вернуться   Форум "Фрикер Клуб" - кодграббер своими руками > Основной раздел > Микроконтроллеры

Важная информация

Ответ
 
Опции темы Опции просмотра
Старый 12.07.2017, 20:50   #21
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,223
По умолчанию Re: Непонятный глюк микроконтроллера 18f252

Ну я тоже не великий программист. И я же, согласитесь, не экстрасенс, не знаю что вам рассказзывали ГДЕ-ТО. Если знаете всё это ( пред пред посты ), и вы не увидели. Ну давайте с самого начала начнем, вместе разбирать код, ну как отладчик. Согласны?
EPA вне форума   Ответить с цитированием
Старый 13.07.2017, 05:36   #22
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,223
По умолчанию Re: Непонятный глюк микроконтроллера 18f252

Вот ваш первый код с моей маленькой редакцией
Цитата:
void lcd_text(unsigned char x, unsigned char y, const char* message)
{
char test;
lcd_gotoxy(x, y);
while ( *message != '\0') // здеся ждем конец строки, а он плять не приходит?
lcd_putch(*message++);
}

Теперь во так попробуйте
Цитата:
void lcd_text(unsigned char x, unsigned char y, const char* message)
{
char test;
lcd_gotoxy(x, y);
while ( *message != '\0')
{
lcd_putch(*message); // убрал "++"
message++; // зато здесь поставил "++", и УБРАЛ "*"
}
}

Если не прокатит, то ... я не знаю, надо глубже копать

Последний раз редактировалось EPA; 13.07.2017 в 05:40.
EPA вне форума   Ответить с цитированием
Старый 16.07.2017, 12:48   #23
M@@}{ Меню Пользователя
Вступил в клуб
 
Регистрация: 26.02.2015
Сообщений: 99
По умолчанию Re: Непонятный глюк микроконтроллера 18f252



Код:
void lcd_text(unsigned char x, unsigned char y, const char* message)
{
char test;
lcd_gotoxy(x, y);
while ( *message != '\0')
{
lcd_putch(*message); // убрал "++"
message++; // зато здесь поставил "++", и УБРАЛ "*"
}
}
 

Если не прокатит, то ... я не знаю, надо глубже копать

Попробовал, ничего не изменилось.
посылаю строчку так:
Код:
	sprintf( str ,"  -> M@@}{ <-\0" );	// сообщение на экран в буфер печати
	lcd_text(0,1, str);
строка на экране.
Посылаю так:
Код:
lcd_text(2,2,"Test");
Нет строки.
при отладке в протеусе даже в цикл не заходит.
Код:
lcd_putch(*message); // убрал "++"
message++; // зато здесь поставил "++", и УБРАЛ "*"
Этот код не выполняется совсем.
Хотя *message = 'T' в окне вариаблес.

Это меня и смущает, символ есть не '\0' а в цикл не заходим.
M@@}{ вне форума   Ответить с цитированием
Старый 16.07.2017, 13:03   #24
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,223
По умолчанию Re: Непонятный глюк микроконтроллера 18f252

Гы, присомтрелся
Цитата:
void lcd_text(unsigned char x, unsigned char y, const char* message)

У тебя char* константой const !
Проверь без const
EPA вне форума   Ответить с цитированием
Старый 16.07.2017, 19:46   #25
M@@}{ Меню Пользователя
Вступил в клуб
 
Регистрация: 26.02.2015
Сообщений: 99
По умолчанию Re: Непонятный глюк микроконтроллера 18f252

Цитата:
Сообщение от EPA
Гы, присомтрелся

У тебя char* константой const !
Проверь без const

Я про это знаю, уже проверял. (Проверил еще раз все без изменений).

Наткнулся на АШО одну проблему.

Решил компильнуть проект megaanalizator-a который мне так любезно предоставили.
Нашел компилятор 9.80 как мне рекомендовали.
вот незадача выскакивает какая-то ошибка:
Error [800] C:\Users\Atlantis\AppData\Local\Temp\s6l8.; 18115. undefined symbol "?__delay"
Error [800] C:\Users\Atlantis\AppData\Local\Temp\s6l8.; 18119. undefined symbol "__delay"
Таких символов даже в проекте нет "?__delay", "__delay", (два нижних подчеркивания).

#include "delay.h" даже в проект не подключено. (Пробовал подключить не помогает).

В ГУГЛЕ меня за такие вопросы за "банили". ничего конкретного не нашел. (Хотя вопросы подымаются)
M@@}{ вне форума   Ответить с цитированием
Старый 17.07.2017, 03:54   #26
russo_turisto Меню Пользователя
Резидент клуба
 
Аватар для russo_turisto
 
Регистрация: 21.08.2011
Сообщений: 1,204
По умолчанию Re: Непонятный глюк микроконтроллера 18f252

MpLab какой?

Я на 8.92 компилил
russo_turisto вне форума   Ответить с цитированием
Старый 17.07.2017, 12:09   #27
M@@}{ Меню Пользователя
Вступил в клуб
 
Регистрация: 26.02.2015
Сообщений: 99
По умолчанию Re: Непонятный глюк микроконтроллера 18f252

Цитата:
Сообщение от russo_turisto
MpLab какой?

Я на 8.92 компилил

Mplab такой-же (8.92), винда 7x64, пробовал на XP sp3 x86. Результат один.
компилятор 9.80 взлом от 9.63 подошел. версия PRO, не ругается.
На форумах писали что надо delay.h перебросить в include, тоже не помогло.
Может какие настройки нужны Mplab-у?

И еще нашёл маленький косячек у тебя в коде, проверь библиотеку
"lcd3310.c".

там должно быть:
Код:
void lcd_putch(unsigned char c)
{
	if ( (c >= 0x20) && (c <= 0x7F) ) 						//if (c<='z' && c>31) 
	{
		lcd_send(lcd_font[c-32][0], LCD_TDATA);
		lcd_send(lcd_font[c-32][1], LCD_TDATA);
		lcd_send(lcd_font[c-32][2], LCD_TDATA);
		lcd_send(lcd_font[c-32][3], LCD_TDATA);
		lcd_send(lcd_font[c-32][4], LCD_TDATA);
		lcd_send(0, LCD_TDATA);
	}
	else if ( c >= 0xC0 )											//(c>191)
	{
		lcd_send(lcd_font[c-96][0], LCD_TDATA);
		lcd_send(lcd_font[c-96][1], LCD_TDATA);
		lcd_send(lcd_font[c-96][2], LCD_TDATA);
		lcd_send(lcd_font[c-96][3], LCD_TDATA);
		lcd_send(lcd_font[c-96][4], LCD_TDATA);
		lcd_send(0, LCD_TDATA);	
	}
	else return;
}
иначе не все символы печатаютя. определил по своему логотипу M@@}{, твой вариант }{ не печатает.
M@@}{ вне форума   Ответить с цитированием
Старый 17.07.2017, 14:43   #28
russo_turisto Меню Пользователя
Резидент клуба
 
Аватар для russo_turisto
 
Регистрация: 21.08.2011
Сообщений: 1,204
По умолчанию Re: Непонятный глюк микроконтроллера 18f252

Если используется другая версия хайтека, то там нужно посмотреть как функция _delay правильно пишется и переименовать во всех строках где она используется. Ну и проверить на соответствие нужной задержки времени
russo_turisto вне форума   Ответить с цитированием
Старый 17.07.2017, 15:30   #29
M@@}{ Меню Пользователя
Вступил в клуб
 
Регистрация: 26.02.2015
Сообщений: 99
По умолчанию Re: Непонятный глюк микроконтроллера 18f252

Цитата:
Сообщение от russo_turisto
Если используется другая версия хайтека, то там нужно посмотреть как функция _delay правильно пишется и переименовать во всех строках где она используется. Ну и проверить на соответствие нужной задержки времени

версия хайтека 9.80, я уже несколько раз натыкался на подобные случаи, поэтому использую софт только рекомендованный производителем.
M@@}{ вне форума   Ответить с цитированием
Старый 17.07.2017, 19:41   #30
russo_turisto Меню Пользователя
Резидент клуба
 
Аватар для russo_turisto
 
Регистрация: 21.08.2011
Сообщений: 1,204
По умолчанию Re: Непонятный глюк микроконтроллера 18f252

По __delay сейчас у меня такая же проблема, давно прога писалась, тогда у меня 32-х разрядный комп был

Что бы не танцевать с бубном, проще функции задержек написать и заменить их в коде
например
PHP код:
void delay_ms(unsigned int msek)
{
     
int i,j;
        for(
i=0;i<msek;i++)
                for(
j=0;j<1000;j++)
                {
                    
#asm
                    
NOP
                    NOP
                    
#endasm
                    
;
                }
}

void delay_mksec(unsigned long mksec)
{
    
mksec mksec/2;
    
unsigned long k;
    for (
k=0k<mkseck++)
    {
        
#asm
    
NOP
    NOP
        NOP
       NOP
       NOP
    NOP
       NOP
        
#endasm
     
}       

Но их надо проверять на длиетльность, можно в протеусе. Один такт проца это 125 наносек.
russo_turisto вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 01:18. Часовой пояс GMT +3.


vBulletin 4.1.0 Перевод: zCarot
(C) www.phreakerclub.com
Яндекс.Метрика