Страница 119 из 628
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср окт 13, 2010 14:32:23
Wereww
Ребята помогите найти даташиты - облазил уже весь гугл но ничего не нашёл ( имеются два TFT дисплея от Nokia 6101, на большом внутреннем дисплее написано SA UF13R001AA B15 MP1.0 (5 29 07 19 4850863) и на маленьком внешнем с потёртостями - СС3zz 8877 - 3T804 .5331248, никак немогу найти даташиты как ими управлять...
Вот они...
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср окт 13, 2010 19:11:38
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср окт 13, 2010 19:20:39
Chettuser
Прошу сильно не пинать новичка. Вопрос по части C18 для PIC'ов:
Так как Си я начал изучать только сейчас, возник вопрос по меткам.
Код: Выделить всё
void main (void)
{
ADCON0 = 0; // цифровые выходы
TRISC = 0; /* PORTС на выход */
PORTC = 0;
counter = 0;
while (1)
{
_asm goto DS18_onpoc _endasm;
}
}
добавим метку (функцию?) "DS18_onpoc" (как бы подпрограмма, как в ассемблере):
Код: Выделить всё
void DS18_onpoc (void)
{
PORTCbits.RC2=0;
Delay10KTCYx(0.5/(freq*(250e-9)*10000)); //сигнал обнуления датчика ~500мкс
PORTCbits.RC2=1;
Delay10TCYx(10); //ждём паузу ~100мкс
DS = 0xCC;
goto transfer;
А вот при переходе отсюда на ещё одну подпрограмму "transfer" начанает ругаться что:
Код: Выделить всё
Error [1111] undefined label 'transfer' in 'DS18_onpoc'
типа не может найти метку в этой же самой подпрограмме. Тоже самое если goto описать ассемблерным кодом _asm goto transfer _endasm.
Вопрос такой: что мне сделать если нужно перейти из данной подпрограммы (функции?) в другую? Из главной (main) то она переходит...
Спасибо большое за помощь.
(Ещё раз прошу не пинать - в книжках которые я почитал такого примера нигде не описывается)
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср окт 13, 2010 20:21:08
ValBag
Chettuser писал(а):Вопрос такой: что мне сделать если нужно перейти из данной подпрограммы (функции?) в другую?
Непонятно, зачем такие ...извращения с меткой. Просто вызывайте другую необходимую функцию.
Оператор
goto СИ-шный, а не ассемблерный и осуществляет переход на метку только в пределах той функции, где и расположена метка и сам оператор. Может в ассемблере PIC такая команда есть? Я пользуюсь AVR и c PIC-ами не знаком.
Из главной (main) то она переходит...
А почему вы так думаете? И что "говорит компилятор по поводу:
_asm goto DS18_onpoc _endasm;?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср окт 13, 2010 20:24:59
Chettuser
Ничего не говорит

Соглашается и переходит
А вот из "вспомогательной" функции переходить в ещё одну вспомогательную не хочет...
ValBag писал(а):Непонятно, зачем такие ...извращения с меткой. Просто вызывайте другую необходимую функцию.
Просто так проще разбить программу на блоки, которые проще отлаживать отдельно. Да и больше согласуется с блок-схемами, которые я последнее время полюбил.

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср окт 13, 2010 20:29:37
ValBag
Chettuser писал(а):Ничего не говорит

Соглашается и переходит
А вот из "вспомогательной" функции переходить в ещё одну вспомогательную не хочет...
Приложите весь код (в виде файла)
Так есть в ассемблере PIC команда goto ?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср окт 13, 2010 20:33:34
Chettuser
Не крепится что то, придётся тут.
Код сыроватый... так что ежели что...
Код: Выделить всё
#include <p18cxxx.h>
#include <delays.h>
#pragma config LVP = ON
const int freq=4; //опишем частоту осциллятора
int counter,DS;
void DS18_onpoc (void)
{
PORTCbits.RC2=0;
Delay10KTCYx(0.5/(freq*(250e-9)*10000)); //сигнал обнуления датчика ~500мкс
PORTCbits.RC2=1;
Delay10TCYx(8); //ждём паузу ~100мкс
DS = 0xCC;
_asm goto transfer _endasm;
}
void transfer (void)
{
return;
}
/*reception:
{
return;
}
// _asm goto v_ds18(void) _endasm; //переходим к отправке DS в DS18
return;
}*/
void main (void)
{
ADCON0 = 0; // цифровые выходы
TRISC = 0; /* PORTB на выход */
PORTC = 0;
counter = 0;
while (1)
{
_asm goto DS18_onpoc _endasm;
PORTC=1;
}
}
ValBag писал(а):Так есть в ассемблере PIC команда goto ?
Есть. А тут мне кажется без разницы что писать "_asm goto .... _endasm" или "goto .... ".
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср окт 13, 2010 20:54:28
Wereww
Спасибо, буду дальше искать, и еще один небольшой вопросик ) недавно откопал вот такого зверька -
AT49F002NT - возможно ли его прошить пятью проводами или же другим и каким способом ?

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср окт 13, 2010 21:13:23
ValBag
Chettuser
Непонятно как осуществляется переход по: _asm goto DS18_onpoc _endasm; Метка в СИ должна быть обозначена в строке кода так же, как и в ассемблере label: и служит в обеих случаях адресом для ветвления программы, командой безусловного goto или условного (в ассемблере) перехода. В СИ, с той оговоркой, о которой я упоминал выше.
Функции также являются модулями программы. Вызывайте из main функцию
DS18_onpoc ();
а из неё
transfer ();
А про метки забудьте, т. к. в СИ они применяются в крайних случаях. Обычно для перехода хватает других средств.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт окт 14, 2010 09:48:13
Gudd-Head
Wereww писал(а):AT49F002NT - возможно ли его прошить пятью проводами или же другим и каким способом ?

Прошивают МК, а в память записывают.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт окт 14, 2010 12:35:01
diim
Доброго времени суток, уважаемые коты! помогите решить проблему. значит так: в CAVR пишу код
PORTB=0b11111111;
PORTC=0b11111111;
PORTD=0b11111111;
по идее контроллер mega8 должен все порты в единички выставить, симулирую это дело в proteus , а он только PORTB присваивает единички! в чем проблема может быть?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт окт 14, 2010 12:48:29
Gudd-Head
diim писал(а):в чем проблема может быть?
А если вот так поменять местами?
PORTB=0b11111111;
PORTD=0b11111111;
PORTC=0b11111111;
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт окт 14, 2010 13:03:27
diim
Gudd-Head писал(а):diim писал(а):в чем проблема может быть?
А если вот так поменять местами?
а какая разница??? те-же яйца только вид с боку!
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт окт 14, 2010 13:13:19
ValBag
diim писал(а):в чем проблема может быть?
А что в регистрах DDRC, DDRD ?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт окт 14, 2010 14:20:29
diim
ValBag писал(а):diim писал(а):в чем проблема может быть?
А что в регистрах DDRC, DDRD ?
они настроены на выход!
вот листинг:
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0x7F;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт окт 14, 2010 14:29:40
ValBag
diim писал(а):они настроены на выход!
Посмотрите в AvrStudio, может это глюк Proteus?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт окт 14, 2010 14:30:58
Gudd-Head
Это немного (совсем чуть-чуть, самую малость) не сходится с тем, что вы писали раньше:
diim писал(а):PORTB=0b11111111;
PORTC=0b11111111;
PORTD=0b11111111;
diim писал(а):только PORTB присваивает единички!
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт окт 14, 2010 14:47:18
Engineer_Keen
Gudd-Head писал(а): Это немного (совсем чуть-чуть, самую малость) не сходится с тем, что вы писали раньше
На самом деле протеус в этом случае все равно отобразит на выходах единицу (порт на вход, подтяжка включена), если только его на землю не коротнуть. Другое дело почему на остальных портах единиц нету. В общем если уж выкладывать код, так целиком, можно и со схемой.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт окт 14, 2010 15:00:29
diim
прошу у всех прощения! я нашёл причину! оказывается я по запарке стёр закрывающую и открывающую фигурную скобку главного цикла программы while {}; вот и получился сумбур!
спасибо, что откликнулись!
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт окт 14, 2010 15:02:27
Gudd-Head
diim писал(а):стёр закрывающую и открывающую фигурную скобку главного цикла программы while {};
ППЦ. На АСМе так не получится)