Kłopot z dorobieniem funkcji do programu

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
SQ8
-
Posty: 44
Rejestracja: 30 paź 2011, 14:11
Lokalizacja: ---

Kłopot z dorobieniem funkcji do programu

Post autor: SQ8 » 25 lut 2013, 17:34

.
Ostatnio zmieniony 05 mar 2013, 12:32 przez SQ8, łącznie zmieniany 1 raz.

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 25 lut 2013, 17:38

A trochę jaśniej? Bo przyznam że ja niewiele z tego opanowałem. Może narysuj?

SQ8
-
Posty: 44
Rejestracja: 30 paź 2011, 14:11
Lokalizacja: ---

Post autor: SQ8 » 25 lut 2013, 21:28

..
Ostatnio zmieniony 05 mar 2013, 12:32 przez SQ8, łącznie zmieniany 1 raz.

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 25 lut 2013, 21:57

Przyciśnięciem przycisku zwiększ zemienną X i napisz tak:

Kod: Zaznacz cały

1.  If odbieranie > 0 and przycisk = 0 then
2.      x = 1
3.      nadawanie = 0 'nadawanie = 0 czyli disable
4.   else
5.      x = 0
6.      nadawanie = 0
7.  end if
8.  if odbieranie = 0 and przycisk = 0 and x = 0 then nadawanie = 1
Linia nr 1. sprawdza czy odbierasz (1-odbieranie, 0-cisza)
Linia nr 2. nada zmiennej x wartość 1 jeśli miałeś wciśnięty przycisk nadawania i ktoś nadawał
Linia nr 3. zabroni nadawania jeśli ktoś nadaje i Ty też chcesz nadawać, 0=zabronione
Linia nr 4. lub
Linia nr 5. jeśli nikt nie nadaje i Ty puścisz przycisk to wyzeruje zmienną x która umożliwi nadawanie
Linia nr 6. wciąż zabrania nadawania
Linia nr 7. sprawdzi czy już nikt nie nadaje i czy wcześniej puściłeś przycisk

Jeśli mój tok myślenia jest nieprawidłowy to poprawcie mnie, ale zwykle takie rzeczy, wymyślone na poczekaniu u mnie działają jak trzeba.
Oczywiście jest to czysta teoria. Musisz sobie przetestować.

Lub podstawiając to do Twojego kodu mamy:

Kod: Zaznacz cały

$regfile = "m32def.dat" 
$crystal = 12000000 
Config Pinc.0 = Input                                      'WE INFO PTT 
Config Pinc.2 = Input                                      'WE INFO ODB 
Config Portc.1 = Output                                     'WY PTT 

przycisk alias pinc.0
nadawanie alias portc.1
odbior alias pinc.2


dim x as bit

set portc
x = 0

Do 

  If odbieranie > 0 and przycisk = 0 then 'jeśli ktoś nadaje a Ty trzymasz przycisk to 
      x = 1 'wartość zmiennej x = 1
      nadawanie = 0 'nadawanie = 0 czyli disable 
   else 'lub wtedy
      x = 0 'wyzeruj zmienną x
      nadawanie = 0 'nadal nie pozwalaj na nadawanie
  end if 
  if odbieranie = 0 and przycisk = 0 and x = 0 then nadawanie = 1 'jeśli nikt nie nadaje                                                                                                                                                                                                                                                                
                                               ' i Ty wcisnąłeś przycisk
              'a zmienna x była wcześniej wyzerowana to zezwalaj na nadawanie
Loop 
End

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 25 lut 2013, 23:00

SQ8 pisze:No kolego !! Jesteś mistrzu nad mistrzami
Nie ma tam że od razu mistrzu, to najprostrze rzeczy są, a i tak pewnie dało by się prościej, tylko to był mój drugi zamysł. W pierwszym wszystko miało być ogarnięte w jednym warunku.
SQ8 pisze:Twój pomysł sporo mi pomógł, tym bardziej, że już działa wszystko jak sobie chcę!
Najważniejsze że dziala.
SQ8 pisze:Trochę pozwoliłem sobie przerobić kod.
Nie ma kłopotu, jeszcze tego nie opatentowałem więc spokojnie zdążyłeś wykorzystać, ha ha.
Zastanawia mnie tylko jedno, czy do takiego "ogromnego" projektu potrzebna była aż atmega32?

SQ8
-
Posty: 44
Rejestracja: 30 paź 2011, 14:11
Lokalizacja: ---

Post autor: SQ8 » 25 lut 2013, 23:08

...
Ostatnio zmieniony 05 mar 2013, 12:32 przez SQ8, łącznie zmieniany 1 raz.

Awatar użytkownika
tom5555
Użytkownik
Posty: 627
Rejestracja: 23 sty 2008, 1:20
Lokalizacja: Zabrze
Kontakt:

Post autor: tom5555 » 25 lut 2013, 23:18

Taki układ można by nawet na bramkach i przerzutnikach zrealizować. Zamiast sprawdzać stan przycisku PPT, sprawdzaj zbocze sygnału z tego przycisku. Sygnał zajętości pasma (np. z arw.) blokował by przerzutnik. Po zwolnieniu pasma przerzutnik zadziałał by dopiero po naciśnięciu przycisku (zmianie jego stanu), ponieważ przerzutnik reagował by na zbocze a nie na stan.

SQ8
-
Posty: 44
Rejestracja: 30 paź 2011, 14:11
Lokalizacja: ---

Post autor: SQ8 » 25 lut 2013, 23:25

..
Ostatnio zmieniony 05 mar 2013, 12:32 przez SQ8, łącznie zmieniany 1 raz.

Awatar użytkownika
Pikczu
Użytkownik
Posty: 754
Rejestracja: 18 lip 2005, 18:33
Lokalizacja: Dublin
Kontakt:

Post autor: Pikczu » 26 lut 2013, 15:26

Jaki jest sens takiego układu??
A co jeśli poziom zakłóceń będzie duży ?
To jedynie może sprawdzić się w FM.

Awatar użytkownika
Ertew
Użytkownik
Posty: 1418
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Re: Kłopot z dorobieniem funkcji do programu

Post autor: Ertew » 07 mar 2013, 22:14

Przeglądam ten temat z opóźnieniem 2 tygodni. Zapewne nic ciekawego wam nie pomogę, ale mam nadzieję że po przeczytaniu problemu (i może rozwiązania) czegoś się nauczę.
Z resztą, forum ma charakter dydaktyczny i podejrzewam że zagląda tu więcej osób uczących się na błędach innych.

Tymczasem zamiast rozwiązania trafiłem na śmieci z których nic nie wynika:
SQ8 pisze:.
SQ8 pisze:..
SQ8 pisze:.
SQ8 pisze:...
SQ8 pisze:..
Możecie mi streścić o co tu chodzi, do czego ten temat zmierza i czy problem jest rozwiązany?

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 07 mar 2013, 22:58

Chodziło o to że kolega chciał sobie dorobi układ rozpoznający czy ktoś nadaje przez CB czy nie nadaje. Jeśli nadaje to żeby drugi nie mógł nadawać nawet jeśli wcześniej trzymał przycisk nadawania to żeby mógł nadawać musiałby choćby na chwilę ten przycisk puścić.

mathieiov
Moderator
Posty: 831
Rejestracja: 31 lip 2005, 9:04
Lokalizacja: --

Post autor: mathieiov » 09 mar 2013, 12:40

SQ8, proszę przywrócić treść swoich postów, w przeciwnym wypadku temat zostanie usunięty.

Awatar użytkownika
Pikczu
Użytkownik
Posty: 754
Rejestracja: 18 lip 2005, 18:33
Lokalizacja: Dublin
Kontakt:

Post autor: Pikczu » 09 mar 2013, 12:44

Zgłaszam posty do Moderatora moim zdaniem koledze SQ8 należy się ostrzeżenie za usuwanie postów.
Ertew pisze:Z resztą, forum ma charakter dydaktyczny i podejrzewam że zagląda tu więcej osób uczących się na błędach innych.
Jak napisał Ertew, po paru dniach kolega który przedstawia się nie pełnym znakiem krótkofalarskim
z okręgu 8 notorycznie usuwa wszystkie swoje posty.
Czyżby się wstydził swoich wypowiedzi ???
A może używa pomysłów i podpowiedzi naszych forumowych kolegów jako swojej wiedzy na innych forach ???

ODPOWIEDZ