Отговори на тема  [ 35 мнения ]  Отиди на страница Предишна  1, 2, 3  Следваща
Поредната Глупава Идея :) 
Автор Съобщение
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 02, 2008 10:24 pm
Мнения: 105
Мнение Re: Поредната Глупава Идея :)
инж. Т.Димитров явно има желание да се научи,
някой да му обясни как се сканират бутони,
барабар със дебоунсинга, във духа на кооперативния мултитаскинг.
При него е по лесно защото бутоните са от 0 до 7 на ПОРТ.Б


Чет Дек 20, 2012 3:46 am
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пет Май 18, 2012 9:14 pm
Мнения: 64
Мнение Re: Поредната Глупава Идея :)
Moчета ударете едно рамо трябва да го свържа това нещо със един макс232 а след него един 485 понеже ще е на по голямо разстояние комуникацията.
и само ще се предава значи ще е халфдуплекс. Не ми е ясно последователноста как трябва да е : така ли ? КОМПОРТ-->232--->485-->ПИК или по друг начин.. с 2 думи да ми обясните по човешки му начин.

_________________
Инж.Тодор Димитров  гр./Ямбол / 24г.
Последен Проект...http://www.vbox7.com/play:c1e9997504


Чет Дек 20, 2012 7:30 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение Re: Поредната Глупава Идея :)
Ами трябва ти два чипа rs485 - от двата края на линията - отвори си който и да е даташийт на такъв чип и ще видиш примерни схемички. Само не те знам от страната на компютъра с къв интерфейс си - ако имаш "истински" RS232 ще ти трябва някакъв конвертор от RS232 към RS485. При халф дуплекса има и малко подробности с управлението на ресивърите по време на изпращане - ако са enabled стават повторители на изпратеното - демек винаги имаш ехо и освен това трябва да не се засичат изпращания от двата края щото става мазало. Аве не е чак толкова проста работата колкото си я мислиш. Не знам какъв инженер си. Ако си машинен инженер ОК. Ама ако си учил в тая сфера дето питаш - язък ти за образованието.


Чет Дек 20, 2012 9:31 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пет Май 18, 2012 9:14 pm
Мнения: 64
Мнение Re: Поредната Глупава Идея :)
Изпитвам малко затруднение опитвам се да пусна един ШИМ на изход CCP1
и стигнах само до тук.
Код:
#include <16F877.h>
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#define _XTAL_FREQ   20000000
#use delay(clock=20M)
#use RS232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
void main()
{
output_low(PIN_C1);   


setup_ccp1(CCP_PWM); 


setup_timer_2(T2_DIV_BY_16, 124, 1);       
set_pwm1_duty(512);                    // 50%


while(1);

оправих duty cycle но честотата не мога да настроя да ми е 38khz.
Едно рамо да одарите

_________________
Инж.Тодор Димитров  гр./Ямбол / 24г.
Последен Проект...http://www.vbox7.com/play:c1e9997504


Съб Дек 22, 2012 3:10 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 17, 2005 5:07 pm
Мнения: 813
Местоположение: Сливен
Мнение Re: Поредната Глупава Идея :)
Еми сметния де ... и ако си по хитър ще си го направиш през wizard-a на CCS ;)

_________________
Код:
while(true);


Съб Дек 22, 2012 6:23 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пет Май 18, 2012 9:14 pm
Мнения: 64
Мнение Re: Поредната Глупава Идея :)
Мисля ,че се справих със задачата и май ще започвам да поя :)
Ето схемата за сега.
Изображение
Ето и кода:
Код:
#include <16F877.h>
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#define _XTAL_FREQ   20000000
#use delay(clock=20M)
#use RS232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
int Button1;
int Button2;
int Button3;
int Button4;
int Button5;
int Button6;
int Button7;
int Button8;
void main()
{
output_low(PIN_C1);   


setup_ccp1(CCP_PWM); 

setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_1,130,1);       
    set_pwm1_duty(62);                // 50%
while(true)
   {
   switch( Button1 )
        {
          case 1:
          if (!input(PIN_B0))
          {
            putc('2');
            Button1 = 0;
          }
          break;
     
          case 0:
          if (input(PIN_B0))
          {
            putc('3');
           Button1 = 1;
          }
          break;
        }
         
          switch( Button2 )
        {
          case 1:
          if (!input(PIN_B1))
          {
            putc('4');
            Button2 = 0;
          }
          break;
     
          case 0:
          if (input(PIN_B1))
          {
            putc('5');
           Button2 = 1;
          }
          break;
      }
        switch( Button3 )
        {
          case 1:
          if (!input(PIN_B2))
          {
            putc('6');
            Button3 = 0;
          }
          break;
     
          case 0:
          if (input(PIN_B2))
          {
            putc('7');
           Button3 = 1;
          }
          break;
          }
switch( Button4 )
        {
          case 1:
          if (!input(PIN_B3))
          {
            putc('8');
            Button4 = 0;
          }
          break;
     
          case 0:
          if (input(PIN_B3))
          {
            putc('9');
           Button4 = 1;
          }
          break;
          }
           switch( Button5 )
        {
          case 1:
          if (!input(PIN_B4))
          {
            putc('A');
            Button5 = 0;
          }
          break;
     
          case 0:
          if (input(PIN_B4))
          {
            putc('B');
           Button5 = 1;
          }
          break;
          }
           switch( Button6 )
        {
          case 1:
          if (!input(PIN_B5))
          {
            putc('C');
            Button6 = 0;
          }
          break;
     
          case 0:
          if (input(PIN_B5))
          {
            putc('D');
           Button6 = 1;
          }
          break;
          }
           switch( Button7 )
        {
          case 1:
          if (!input(PIN_B6))
          {
            putc('E');
            Button7 = 0;
          }
          break;
     
          case 0:
          if (input(PIN_B6))
          {
            putc('F');
           Button7 = 1;
          }
          break;
          }
           switch( Button8 )
        {
          case 1:
          if (!input(PIN_B7))
          {
            putc('J');
            Button8 = 0;
          }
          break;
     
          case 0:
          if (input(PIN_B7))
          {
            putc('H');
           Button8 = 1;
          }
          break;
          }
}
     
   }

Някакви забележки или проблеми да ви се виждат със кода или схемата ?

_________________
Инж.Тодор Димитров  гр./Ямбол / 24г.
Последен Проект...http://www.vbox7.com/play:c1e9997504


Съб Дек 22, 2012 9:07 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Поредната Глупава Идея :)
74HC04 ще го слагаш ли?

_________________
Warriors of the Night, ASSEMBLER!!!


Съб Дек 22, 2012 9:13 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пет Май 18, 2012 9:14 pm
Мнения: 64
Мнение Re: Поредната Глупава Идея :)
Aми ако не го инвертирам сигнала не се праща към ком порта
имам и друго питане . когато вкл. и изхода CCP1 към осцилоскопа и схемата много бавно взима да работи ,а като натисна бутон нивото остава ниско поне 2 3 сек докато не стане пак високо. Дали някой време трябва да оправя или просто Протеуса му идва множко.. Оставя ли го висащ изхода макар да го вижда как осцилира няма проблеми..

_________________
Инж.Тодор Димитров  гр./Ямбол / 24г.
Последен Проект...http://www.vbox7.com/play:c1e9997504


Съб Дек 22, 2012 9:22 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 17, 2005 5:07 pm
Мнения: 813
Местоположение: Сливен
Мнение Re: Поредната Глупава Идея :)
Погледни в хелпа
#use RS232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
има още параметри единия от които е инвертиране ... няма смисъл от цял чип
За програмата няма да коментирам .... като за сефте щом работи .... добре :)
Но най добре пои и то на универсална платка че с това виртуалното .. обсъждали сме разликата между реалния и виртуалния секс ;)
.... още колко има да копаш :)

И един съвет ... това е контролер .. не знаеш при вклъчване в кво състояние ще са портовете .. свикни винаги в началото да сетваш портовете (TRISовете) в съответните състояния и да изключиш или включиш перифериите .. а после си изливай душата в код

_________________
Код:
while(true);


Нед Дек 23, 2012 12:49 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пет Май 18, 2012 9:14 pm
Мнения: 64
Мнение Re: Поредната Глупава Идея :)
Дa Благодаря ти много за инфото успях да го инвертирам :)
Код:
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,bits=8,FORCE_SW, INVERT)

Иначе ще я правя на бредборда

_________________
Инж.Тодор Димитров  гр./Ямбол / 24г.
Последен Проект...http://www.vbox7.com/play:c1e9997504


Нед Дек 23, 2012 1:40 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Поредната Глупава Идея :)
valioman написа:
Погледни в хелпа
#use RS232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
има още параметри единия от които е инвертиране ... няма смисъл от цял чип

Защо му е да слага инвертиране в настройките на порта?

_________________
Warriors of the Night, ASSEMBLER!!!


Нед Дек 23, 2012 4:52 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 17, 2005 5:07 pm
Мнения: 813
Местоположение: Сливен
Мнение Re: Поредната Глупава Идея :)
ike написа:
Защо му е да слага инвертиране в настройките на порта?


За да спести малко калай и много благословии и още 3 страници въпроси ... ясно е че не е нужно в реално изпълнение ... жал ми е кат гледам как се мъчи

_________________
Код:
while(true);


Нед Дек 23, 2012 9:03 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пет Май 18, 2012 9:14 pm
Мнения: 64
Мнение Re: Поредната Глупава Идея :)
Знам ,че ви дотегнах ама .... :oops:
налепих я платката и както се вика едно голямо Нищо..
Забелязах ,че трябва да имам на 14 крак на 232-ката ето това напрежение.
Изображение
а аз имам -8.48в отрицателно ... а хекса който заредих в пика ми е с инвертираният сигнал към 232 ката , в протеуса ми го показва +8.5
,а когато сложа хекс който не съм инвертирал напрежението в реално изпълнение на платката е с + а в протеуса с минус и нищо..
И да ви питам другото което е на ком порта съм свързал 5 цата на маса и 3 ката към 232 ката друго не съм слагал смисъл 2 ри пин е когато приемам инфо , а аз такава опция нямам .. или си има стандарт някакъв а схемата е правилна не съм объркал нищо 200 пъти от до мерих... има си го и Шима всичко си има на изхода на микроконтролера,Само и единствено това ме притеснява ,че не се праща нищо към компа.. ,ако знаете някои програма дето да видя дали пращам "пакети" към ком порта на пц то добре ще е..
И пак се извинявам за глупавите въпроси ама съм нов в тия работи..

_________________
Инж.Тодор Димитров  гр./Ямбол / 24г.
Последен Проект...http://www.vbox7.com/play:c1e9997504


Пон Дек 24, 2012 2:30 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 17, 2005 5:07 pm
Мнения: 813
Местоположение: Сливен
Мнение Re: Поредната Глупава Идея :)
CCS-a има приложение в tools->serial port monitor с него си работи.
като за начало пусни си един

while(true){
putc(0x55);
delay_ms(1000);
}

докато си оправиш кмунакцията скоростите и т.н. ..
Не гледай протеуса ... за симулацията можеш директно да закачиш терминала и / или компорта директно на пиновете на контролера .. не ти трябва MAX-a , докато в реалния живот е нужен заради нивата т.е. в реалния живот махаш INVERT параметъра , и вместо FORCE_SW сложи UART1
та да си ползваш хардуерния модул на пикльото.

Чак че сега се зачетох по подробно ... искаш да кажеш че си вързал извода ти от платката за 3 ти пин на компа ????? Ми и да се скъсаш няма нищо да приемеш ... нали комуникацията ти е от пикльото към компа т.е. трябва да закачиш 2 ри пин на компа(RD) към TX пина на пикльто (след макс232 де) .

_________________
Код:
while(true);


Пон Дек 24, 2012 4:12 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пет Май 18, 2012 9:14 pm
Мнения: 64
Мнение Re: Поредната Глупава Идея :)
Малко отсъствах :) за което се извинявам имах други задължения и днес когато се върнах към проекта и ми остана малко време да тествам,направих всичко наново ,свързах схемата към ком порта и всичко работеше .От време на време се появява странен бъг или незнам как да го нарека а именно когато натисна бутон който и да е програмата на компа отчита ,че се натиска бутон ,но по някой път този бутон остава активен,не винаги го прави и то при различни случаи и различни бутони ... Примерно ако натисна и задържа бутона за повече и като го пусна той си остава да свети ,докато не го натисна пак..Някой път като натискам много бързо произволен бутон пак остава в такова ниво все едно е натиснат :)
П.П според вас на какво може да се дължи това нещо :) иначе си оправих и Шима няма проблем с него поне за сега

_________________
Инж.Тодор Димитров  гр./Ямбол / 24г.
Последен Проект...http://www.vbox7.com/play:c1e9997504


Чет Яну 03, 2013 7:27 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 35 мнения ]  Отиди на страница Предишна  1, 2, 3  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни