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

Początkujący programista i Atmega8

hamerg 15 Wrz 2010 08:24 1968 4
  • #1 8512086
    hamerg
    Poziom 20  
    Witam.
    Jestem początkującym w temacie Bascom. Napisałem programik i po rozbudowie przestał działać tak jak zakładałem.
    Czy taki zapis jest poprawny?

    If Current2 > Amax Then      'jeśli Prąd przekroczy wartość Amax
                                            'załącz obciążenie 1 i 2
        Portb.2 = 1                     '
        Portb.1 = 1                     'wyskok z podprogramu
          Else                             'jeśli nie sprawdzaj dalej to co poniżej
            If Volts2 > Mew_on Then
             'rozłącz przekaźnik
              Portd.0 = 0
            End If
    
    
     If Volts2 < Ze_on Then
           'zalacz przekaźnik
         Portd.0 = 1
     End If
    
     If Volts2 > Obc1_on And Volts2 < Obc2_on Then
          Portb.2 = 1
            Else
            Portb.2 = 0
     End If
    
     If Volts2 > Obc2_on Then
           'załącz obciążenie 2
            Portb.2 = 0
            Portb.1 = 1
            Else
            Portb.1 = 0
    
     End If
    End If
    Return 


    Generalnie mam problem z zawieszającym się oprogramowaniem i samoczynnym restartem atmegi, ale po takim restarcie program nie działa poprawnie ( krzaki ).



    inventco.eu - proszę używać znaczników CODE. Regulamin Forum.
  • #2 8512154
    xury
    Specjalista automatyka domowa
    Po fragmencie kodu, który zamieściłeś to jestem w stanie powiedzieć tylko, że masz dużo jeszcze do nauki. Ten kod nic nie znaczy, a nikt Ci nie wywróży co to niby miał robić ten kod.
    Że niby gdzie te "krzaki" widać?
    Zacząłbym od pisania programów do sterowania jedną diodą LED.
  • #3 8512370
    hamerg
    Poziom 20  
    Dziekuję za słowa otuchy. Podstawy jakieś progamowania mam bo na dzień dzisiejszy programuje naszyny CNC, dodatkowo w czasach młodości basic w szkole (lata 80) w wersji zaawansowanej. Bascom jest dla mnie czymś nowym i przyznaję się że nie dokońca jestem obeznany z wszystkimi komendami. Strukturalnie nie ma znaczenia czy programuje się w basic, pascal czy bascom, róznice są na komendach.

    Głownie chodzi o ten fragment czy jest poprawnie napisany.
    Nie wiem czy dobrze zastosowałem funkcję "else".
    Chodziło mi aby program przy niespełnieniu pierwszego warunku sprawdzał resztę, ale w momencie kiedy pierwszy warunek zostanie spełniony to reszta nie będzie brana pod uwagę.

    Krzaki mam po samoczynnym restercie układu.
    Jeśli mógłbym liczyć na pomoc w sprawie sprawdzenia i ewentualnej korekty , to mogę takiej osobie wysłać cały program.
  • #4 8512890
    xury
    Specjalista automatyka domowa
    Chodziło mi o to, że program na początku ma dane konfiguracyjne: typ procesora, taktowanie, konfiguracja podzespołów i deklaracje zmiennych.
    Co do wyrażeń IF THEN ELSE END IF to są one poprawne.
    Do badania warunków można użyć symulatora wbudowanego w Bascom.
    Co do restartów to jest oto uwarunkowane wieloma czynnikami: stabilność zasilania, praca w warunkach dużych zakłóceń, problemy ze stosem itp.
  • #5 8513515
    hamerg
    Poziom 20  
    Jeśli chodzi o resterty, to czy mogą one być spowodowane dużą ilością zmiennych zadeklarowanych, oraz to że wykożystuje przerwanie ( 42 zmienne i przerwanie na przepełnieniu TIMER1 co 0,2sek).
    Czytałem gdzieś że zmienne powinny być deklarowane w odpowiedniej kolejności.

    W symulatorze działa ok ( i tam się niezawiesza), chociaż działa bardzo wolno.

    Gdyby znalazła się osoba chcąca przeanalizować cały program to proszę o kontakt. prześlę na PW całość kodu.



    Ok temat do zamknięcia .
REKLAMA