logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[atmega32[C] Proszę o pomoc w dopracowaniu programu

margas4542 22 Lut 2011 19:30 1866 7
REKLAMA
MediaMarkt Black Week
  • #1 9188962
    margas4542
    Poziom 16  
    Z tym programem męczę się już od dłuższego czasu i po wielu przeróbkach większość działa poprawnie ale jest pewna część z którą nie potrafię sobie poradzić dlatego moja gorącą prośba o pomoc w jego dopracowaniu lub przebudowaniu jeżeli zajdzie taka konieczność.
    Na całość składa się;
    -pomiar dwu wartości napięć oraz dwu wartości prądów [napięcie 10 do 15V]
    -automatyczne przełączanie trzech źródeł zasilania [ładowanie akumulatora]
    -zegar czasu rzeczywistego na PCF-8583;
    --na jego bazie zbudowany dwu kanałowy zegar sterujący
    --z podziałem w tygodniu na dni robocze i wolne
    --z ustalaniem którym z czterech obwodów na sterować dany kanał [1 lub 2]
    --z niezależną możliwością sterowania ręcznego tymi obwodami
    Właśnie z tym zegarem sterującym od dłuższego czasu nie potrafię sobie poradzić ze względu na wymóg spełnienia kilku zapętlających się zależności.
    Cały kod który do krótkich nie należy wkleję w następnym poście jeżeli ktoś mający większe doświadczenie będzie skłonny powalczyć z moim programem doprowadzając go do stanu używalności.
  • REKLAMA
    MediaMarkt Black Week
  • #2 9191042
    LordBlick
    VIP Zasłużony dla elektroda
    1. Zrób każde zadanie jako oddzielny "wątek" pętli głównej.
    2. Kod musi być nie blokujący. Wyczyny typu "waitms" przecz...
  • REKLAMA
    MediaMarkt Black Week
  • #3 9240180
    margas4542
    Poziom 16  
    Po kolejnej zakończonej porażką próbie od nowa napisania w końcu tego programu mam wrażenie że porwałem się z motyką na słońce...potrzebna pomoc bo inaczej nigdy go nie skończę...elektronika gotowa i szkoda byłoby wyrzucić ale jak nie będzie innego wyjścia...jeszcze raz wklejam cały kod bo jedyne wyjście z impasu to fachowiec który coś z tego będzie potrafił zrobić.
    [code]
    usunięty z powodu niewłaściwego wyświetlania w znaczniku CODE
  • #4 9242321
    Samuraj
    Poziom 35  
    1) Umieść program w znacznikach CODE
    2) Podziel program na części, a w głównej pętli programu odpalaj kolejno podprogramy.
    3) Stosuj wcięcia gdyż teraz nie sposób analizować tego programu, gdzie zaczyna się pętla a gdzie warunek, gdzie jest początek a gdzie koniec pętli.
    4) Pomyśl nad innym sposobem obsługi klawiszy - wywal _delay_ms(500). W tym momencie program wisi w miejscu i nic nie robi - obsłuż to w przerwaniu z Timera.
  • #5 9242982
    margas4542
    Poziom 16  
    Nie wiem dlaczego nie mogę poprawnie wstawić kodu zawsze zignoruje znacznik CODE i ładuje go jak leci...spróbuje wstawić zip-a
  • #6 9252823
    margas4542
    Poziom 16  
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #7 9252923
    LordBlick
    VIP Zasłużony dla elektroda
    1. Nieoptymalna obsługa wyświetlacza z zaszytymi wait_costam...
    - zastosuj wersję biblioteki z kontrolą zajętości (pin na R/W masz i tak podpięty), a zobaczysz różnicę.
    - zrób bufor na dane wyświetlacza i cyklicznie co np. 100ms przepisuj na wyświetlacz unikając w ten sposób nadmiarów LCD_GoTo, a dane do wyświetlania wstawiaj na bieżąco do bufora...
    2. Brak podprocedur specjalizowanych na zadanie, najlepiej w oddzielnych plikach projektu, wywoływanych w pętli głównej. "#include" po coś w końcu wymyślili...
    3. Każde z zadań nie może być blokujące, co już pisałem...
    4. Gdzie obsługa przerwań [ISR()]? Co najmniej Timer się prosi o pomiar czasu zamiast tych waitów... Może mały przykład, aby nie być gołosłownym : https://www.elektroda.pl/rtvforum/topic1929625.html#9222887#9222887
    PS. Co do [code][/code],to teraz w modzie jest [syntax=C][/syntax], czyli słabo zauważalny "Listing kodu:" przy edycji postu...
  • #8 9280387
    margas4542
    Poziom 16  
    Czy ktoś mógłby podpowiedzieć jak poprawić definicje tablicy z którą mam problem w tym kodzie lub utworzyć zastępującą ją prosta funkcję przechowującą zmienne.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Dodano po 1 [godziny] 31 [minuty]:

    Zajrzałem jeszcze do książki i pomyślałem że może taka zmodyfikowana struktura rozwiązała by mój kłopot ale w niej też coś nie gra...to cześć kodu
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
REKLAMA