Отговори на тема  [ 56 мнения ]  Отиди на страница Предишна  1, 2, 3, 4
Работна температура 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение Re: Работна температура
мм нещо не мога да схвана и на двете места порта ти стои в 1 .. може би някъде другаде го правиш в 0.


Пет Юни 17, 2016 3:23 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Вто Фев 06, 2007 2:45 am
Мнения: 263
Мнение Re: Работна температура
michev написа:
...Ето....

Тези са ясни, аз исках Бонго да покаже как стават работите :D


Пет Юни 17, 2016 3:37 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 2:21 am
Мнения: 12765
Местоположение: София
Мнение Re: Работна температура
Преди време, едно "старо куче" програмист ме посъветва, състоянията на порта да се записват в променлива, и да се работи с нея. Идеята била, ако по време да обработката, се промени състоянието на порта, да не стане мармалад - хем бутонът е натиснат, хем не е...
Въжделенията на начинаещия... :D


Пет Юни 17, 2016 3:42 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение Re: Работна температура
ToHu написа:
мм нещо не мога да схвана и на двете места порта ти стои в 1 .. може би някъде другаде го правиш в 0.


Правилно забеляза, понеже съм го накачулил с други работи и това с порта го сложих допълнително за да се добие представа ама забравих да го мина на 0 ;)


Пет Юни 17, 2016 3:49 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение Re: Работна температура
ами ... при четенето зависи много от архитектурата, но и да го запишеш той бутона пак ще си смени състоянието и ти пак няма да разбереш :) Проблема е ако искаш да я шифтнеш ту на ляво ту на дясно тогава вече може да си мислиш че ще шифтнеш 1-ца а то да се укаже че е станало на 0, но това само по себе си е write операция. С изходите нещата са ... споре кефа на дизайнера на чипа, варианти всякакви, много изискват RMW което си има своята специфика.


Пет Юни 17, 2016 3:52 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 2:21 am
Мнения: 12765
Местоположение: София
Мнение Re: Работна температура
ToHu написа:
ами ... при четенето зависи много от архитектурата, но и да го запишеш той бутона пак ще си смени състоянието и ти пак няма да разбереш :) ...

Заподозрях че не съм обяснил ясно. :)

Имаш условия:
ако бутонът е натиснат... прави нещо
ако бутонът не е натиснат... прави друго нещо

Ако работиш директно с порта, и състоянието му се междувременно се промени, може да се окаже че и двете условия са изпълнени. Ако е с променлива, докато не извърти условията, състоянието ще е едно и също. Новото състояние ще е смени, след изпълнение на горните.

Това, така, между другото де. На тема програмиране, все още ми е малък и мек. Надявам се горното да не прозвучи като опит за поучаване на хората с опит... :D


Пет Юни 17, 2016 4:07 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение Re: Работна температура
itso.t написа:
Преди време, едно "старо куче" програмист ме посъветва, състоянията на порта да се записват в променлива, и да се работи с нея. Идеята била, ако по време да обработката, се промени състоянието на порта, да не стане мармалад - хем бутонът е натиснат, хем не е...
Въжделенията на начинаещия... :D

Зависи какво пишеш/четеш. Когато пишеш и четеш latch регистъра (тоест входните буфери са на различен адрес) на практика имаш точно тая променлива.

Изобщо съветите трябва да се приемат според контекста, а не универсално.

EDIT: Сега разбрах какво си имал предвид - race condition. Това е друга бира, да. И не е свързано конкретно с програмиране.


Пет Юни 17, 2016 4:08 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение Re: Работна температура
Ами не ти оства тов акоето казва woody, наиситна ти като четеш тка аили иначе четеш променлива, но понякога тя е директно свързана с порта понякога не толквоа. Въпросът е следният на порта имаш 0011 ти го четеш и записваш в променливата, тя става 0011, почваш да обработваш нещо, но той се променя на 0010 .. но ти така иили иначе вече изпълняваш като за 0011, т.е. дали си прочел директно порта или променливата няма голяма разлика ... или тук осъзнавам май за какво говориш, веднъж имаш if(bit_0) и по навътре в if имаш пак друг if(bit_0) което обаче може да е тотално грешно в това разклонение на if-a тъй като си влязъл при друго условие. Ако говориш за това е така, но аз избягвам подобни алгоритми, ако имам повтарящи проверки на едно и също винаги го присвоявам на променлива за да стане точно тов акеото е трябвало да стане в момента в който съм го изчел, в този аспект човека който ти го е казал е прав.


Пет Юни 17, 2016 4:14 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение Re: Работна температура
ми Ице, то пиниза е как да свършиш работата с малък и мек :D такава е тенденцията с напредването на годините.
с голям и корав (CPLD с броячи/интегратори) всеки го може.

като бяхме млади го правихме кораво - кондензатори, диоди, RS тригери дори, че и сменяхме пози(ции) на елементите, за да се получи по-голямо задоволяване на ефекта.
сега се размекнахме и всичко се прави с контролерчета. а примера с фреймуърковете е като да гледаш процеса по натискането в тубата.


Пет Юни 17, 2016 4:16 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Работна температура
ike написа:
timt написа:
Искам на "С" като натисна бутон да светне веднъж един лед и да угасне, независимо че не е пуснат бутона.

Сега почвам да пиша програмата за 16 битовия msp430 че такова имам инсталирано и платката ми е подръка, до 2 дена обещавам да е готова, ти ще си я пренапишеш за твоя контролер.

Код:
#include  <msp430g2231.h>

#define button BIT3
#define LED BIT6




void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                   // Stop WDT
  TACTL = TASSEL_1 + MC_2;                     // Timer A clock source select: 1 - ACLK, Contmode
  P1DIR = LED;                                // LED output, else input
  P1SEL = LED;                           // TA0.1 output
  P1OUT =  button;                            // button set, else reset
  P1REN |= button;                            // button pullup
  P1IE |= button;                             // button interrupt enabled
  P1IES |= button;                            // button Hi/lo edge
  P1IFG &= ~button;                           // button IFG cleared

  _BIS_SR(LPM3_bits + GIE);                    // Enter LPM3 w/interrupt
}

// Port 1 interrupt service routine
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{

  CCR1 = TAR+50000;                       // Load CCR1 with Timer + 50000
  TA0CCTL1 = OUT;                             // LED ON
  TA0CCTL1 |=OUTMOD_5;                        // output mode: 5 - Reset
  P1IFG &= ~button;                           // button IFG cleared
}


Контролера msp430g2231 спи, работи само спомагателния нискочестотен клок 32Khz. Като натиснеш копчето св пуска светодиода за 50000 такта. Ако натиснеш копчето 10-тина пъти (bounce/debounce ) светодиода ще стои включен за 50000 такта на спомагателния генератор от последното натискане. Процесора спи докато светодиода е изкючен, спи и докато светодиода е включен. За включването и изкючването на светодиода се грижи Capture/Compare блока към таймера, който иска много малка мощност.
Този код е подходящ само за тази много специфична задача. Не трябва да се ползва, ако контролера има да прави и нещо друго.

_________________
Warriors of the Night, ASSEMBLER!!!


Съб Юни 18, 2016 1:10 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение Re: Работна температура
Много готино си го измислил, интересен похвад. Аз си реших проблема като добавих флаговете и работи доста добре. Завъртял съм колоната но така ми трябва понеже си имам платката и се опитвам да я направя както съм си наумил.


Прикачени файлове:
1.rar [16.82 KiB]
234 пъти
Съб Юни 18, 2016 1:47 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 56 мнения ]  Отиди на страница Предишна  1, 2, 3, 4

Кой е на линия

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


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

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