Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 24 kwi 2024, o 22:25


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 3 maja 2018, o 21:39 
Offline
Użytkownik

Dołączył(a): 06 lut 2018
Posty: 58
Pomógł: 0

Witam,

zastanawiam się jak najlepiej podejść do kodu w przypadku typowych układów kombinacyjnych.
Załóżmy, że funkcję dla każdego wyjścia mam już zminimalizowaną poprzez zastosowanie siatki Karnaugh.

Pytania:
1) Jak najlepiej zapisywać poszczególne kombinacje? Może w tablicy? Może skorzystać z instrukcji switch()?

2) Warto sięgnąć po przerwania w takim przypadku? Załóżmy, że analizujemy stany trzech czujników poziomu cieczy, znajdujących się w osobnych zbiornikach.

3) Co zrobić, żeby zapis był możliwie elegancki i nie rozwlekał się na dwa kilometry w każdym ifie?

Z góry dzięki za odpowiedź i proszę o ewentualny przykład. Poniżej zamieszczam kod.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2018, o 23:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

witam,
siatka siatką, ale założenia coś nie bardzo pasują.
np. jeżeli wystąpi stan niski na ( PB3, PB4, PB5, )
to spełnione będą ify : i pierwszy i drugi i trzeci,
czyli ustawimy stan niski na led1, wysoki na led2, niski na led2, wysoki na led1, po czym niski na led1 led2 led3.
jak to rozumieć.(jakie zalożenia) ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2018, o 07:36 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

Nie wiem czy dobrze zrozumiałem ale może tak?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Ostatnio edytowano 5 maja 2018, o 04:30 przez JarekB, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2018, o 08:21 
Offline
Użytkownik

Dołączył(a): 06 lut 2018
Posty: 58
Pomógł: 0

Daro69 napisał(a):
Daro69
, tak ma być i jest to działanie świadome.
Założenia:
- brak cieczy w dowolnym jednym zbiorniku, aktywne LED1
- brak cieczy w dowolnych dwóch zbiornikach, aktywne LED2
- brak cieczy w trzech zbiornikach, aktywne LED1, LED2, LED3
Takie są założenia i zgodnie z nimi działa.

JarekB napisał(a):
JarekB
, dziękuję bardzo. To zdecydowanie powinno skrócić zapis.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2018, o 09:15 
Offline
Użytkownik

Dołączył(a): 27 lis 2012
Posty: 289
Pomógł: 6

To może być dla Ciebie za proste, ale 5 min. nie zaszkodzi.
http://jaktodziala.eu/2017/12/20/rozdzi ... -logiczne/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2018, o 11:46 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

Jeszcze jedno wymyśliłem
Gdyby tak
czujnik określić 1 wł 2 wył
czujnik dwa 10 wł 20 wył
czujnik trzy 100 wł 200 wył

wtedy było by jeszcze prościej:
#include <avr/io.h>
#include <util/delay.h>


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Idąc jeszcze krok dalej gdyby tak na zbiorniku zastosować dwie krańcówki to wtedy można by było tak

100 krancowka_zbiornik1_pusty = 0 krancowka_zbiornik1_pelny= 0
200 krancowka_zbiornik1_pusty = 1 krancowka_zbiornik1_pelny= 0
300 krancowka_zbiornik1_pusty = 1 krancowka_zbiornik1_pelny= 1

Czyli
333 wszystkie zbiorniki pełne
233 z pierwszego ubywa dwa pełne
133 pierwszy zbiornik pusty dwa pełne
(Zabawa na całego)

Jak się to spodoba naciśnij "pomógł"
A co. Może zacznę zbierać zielone pastylki.


Autor postu otrzymał pochwałę

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Ostatnio edytowano 5 maja 2018, o 04:30 przez JarekB, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2018, o 13:46 
Offline
Użytkownik

Dołączył(a): 06 lut 2018
Posty: 58
Pomógł: 0

Panowie, dziękuję wszystkim za podpowiedzi i sugestie. Rozwiązanie z switch() idealnie nadaje się do tego zadania i czyni kod klarownym (nawet bardziej niż w przypadku drabinki na PLC ;) ).

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2018, o 22:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

JarekB napisał(a):
(Zabawa na całego)

Jak się bawić to się bawić. :)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 maja 2018, o 00:05 
Offline
Użytkownik

Dołączył(a): 06 lut 2018
Posty: 58
Pomógł: 0

Daro69, też pięknie! I smaczek z enum ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 maja 2018, o 04:43 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

Ale walnąłem babola!
Nie dałem "break;" w kodzie.
Poprawiłem.

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 8 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO