- '**********************************************
- 'PROGRAM TESTOWY STEROWANIA ZMIANA POLARYZACJI
- 'ANTENY TYPU YAGI MIKROKONTROLER ATMEGA32 16MHz
- '**********************************************
- $regfile = "m32def.dat"
- $crystal = 16000000
- $hwstack = 64
- $swstack = 64
- $framesize = 128
- $baud = 19200
- Config Submode = New
- 'Config Watchdog = 4096
- 'Start Watchdog
- 'Debug Off
- 'Debug On
- '--------------------------------------------------------------------
- 'KONFIGURACJA LCD
- Config Lcd = 16 * 4
- Config Lcdpin = Pin , Db4 = Porta.0 , Db5 = Porta.1 , Db6 = Porta.2 , Db7 = Porta.3 , E = Porta.4 , Rs = Porta.5
- '--------------------------------------------------------------------
- 'KONFIGURACJA TIMER'ÓW
- Config Timer1 = Timer , Prescale = 8
- On Timer1 Przertimer1
- Enable Timer1
- 'Config Timer1 = Pwm , Pwm = 8 , Compare_a_pwm = Clear_up , Compare_b_pwm = Clear_down , Prescale = 1
- Config Timer2 = Pwm , Compare_pwm = Clear_up , Prescale = 1024
- On Timer2
- '--------------------------------------------------------------------
- Enable Interrupts
- '--------------------------------------------------------------------
- 'KONFIGURACJA ADC
- Config Adc = Single , Prescaler = Auto
- '--------------------------------------------------------------------
- 'KONFIGURACJA PORTÓW
- Config Porta.6 = Input : Pina.6 = 1 'ADC VNH5019
- Config Porta.7 = Input : Pina.7 = 1 'ADC POTI ACTUATOR
- Config Portb.0 = Output : Portb.0 = 1 'IN_A
- Config Portb.1 = Output : Portb.1 = 1 'IN_B
- Config Portb.2 = Output : Portb.2 = 1 'CS_DIS
- Config Portb.3 = Output : Portb.3 = 1 'ENA/DIAGA
- Config Portb.4 = Output : Portb.4 = 1 'ENA/DIAGB
- Config Portb.5 = Input : Pinb.5 = 1 'SW_LEFT
- Config Portb.6 = Input : Pinb.6 = 1 'SW_HOLD
- Config Portb.7 = Input : Pinb.7 = 1 'SW_RIGHT
- Config Portc.3 = Output : Portc.3 = 1 'LED_HOLD
- Config Portc.7 = Output : Portc.7 = 1 'LED_LIVE
- Config Portd.7 = Output : Portd.7 = 1 'PWM
- '--------------------------------------------------------------------
- 'ALIASY PORTÓW
- In_a Alias Portb.0
- In_b Alias Portb.1
- Cs_dis Alias Portb.2
- Ena_da Alias Portb.3
- Ena_db Alias Portb.4
- Led_hold Alias Portc.3
- Sw_left Alias Pinb.5 'Pinc.4
- Sw_hold Alias Pinb.6 'Pinc.5
- Sw_right Alias Pinb.7 'Pinc.6
- Led_live Alias Portc.7 'Dioda Led sygnalizująca prace układu
- Pwm_ Alias Portd.7
- '--------------------------------------------------------------------
- 'ZMIENNE CZASU
- Dim Timer_tikx10 As Byte 'zmienna liczaca przepełnienie timera
- Dim Timertikx100 As Byte
- Dim Timertikx200 As Byte
- Dim Timer_tik_flag As Byte
- Flaga10ms Alias Timer_tik_flag.0
- Flaga100ms Alias Timer_tik_flag.1
- Flaga500ms Alias Timer_tik_flag.2
- Flaga1s Alias Timer_tik_flag.3
- Flaga2s Alias Timer_tik_flag.4
- Flaga2_5s Alias Timer_tik_flag.5
- 'zostaly jeszce trzy wolne flagi
- ' a uzylem tylko jednego bajtu
- ' Paweł - pikczu
- '--------------------------------------------------------------------
- 'ZMIENNE
- Dim Dane_adc As Word
- Dim Kanal_adc As Byte
- Dim Poti As Word
- Dim Prad As Word
- Dim Hamulec_help As Bit
- '--------------------------------------------------------------------
- 'POBIERANIE DANYCH Z ADC
- Sub G_adc()
- End Sub
- '--------------------------------------------------------------------
- 'MRUGANIE DIODĄ LED CO 1 SEKUNDĘ
- ' CO BY BYŁO WIDAĆ ŻE UKŁAD ŻYJE
- Sub Blink_()
- Toggle Led_live
- End Sub
- '-------------------------------------------------------------------
- 'WYŚWIETLANIE WYNIKU MA LCD
- Sub Display_()
- End Sub
- '------------------------------------------------------------------
- 'HAMULEC
- Sub Hold_()
- In_a = 0
- In_b = 0
- Ena_da = 1
- Ena_db = 1
- Led_hold = 0
- End Sub
- '------------------------------------------------------------------
- 'LEWO
- Sub Left_()
- In_a = 0
- In_b = 1
- Ena_da = 1
- Ena_db = 1
- Led_hold = 1
- End Sub
- '------------------------------------------------------------------
- 'PRAWO
- Sub Right_()
- In_a = 1
- In_b = 0
- Ena_da = 1
- Ena_db = 1
- Led_hold = 1
- End Sub
- '------------------------------------------------------------------
- 'USTAWIENIA POCZATKOWE
- Ena_da = 0
- Ena_db = 0
- In_a = 0
- In_b = 0
- Sw_hold = 1
- Sw_left = 1
- Sw_right = 1
- Led_hold = 1
- Waitms 500
- Cursor Off Noblink
- Cls
- '--------------------------------------------------------------------
- 'PĘTLA GŁÓWNA
- Do
- If Timer_tikx10 >= 10 Then 'jelsi uplynelo 100ms to
- Flaga100ms = 1 'ustaw flage uplynelo 100ms
- Incr Timertikx100
- Timer_tikx10 = 0 ''zeruj liczenie
- End If
- If Timertikx100 >= 10 Then 'jelsiuplynela sekunda
- Flaga1s = 1 'ustaw flage sekundy
- Incr Timertikx200
- Timertikx100 = 0 'zeruj liczenie
- End If
- If Timertikx200 >= 2 Then
- Flaga2s = 1
- Timertikx200 = 0
- End If
- If Flaga10ms = 1 Then
- Flaga10ms = 0
- End If
- If Flaga100ms = 1 Then 'co 100ms
- 'Call G_adc()
- Flaga100ms = 0 'wyzeruj Flaga100ms
- End If
- If Flaga1s = 1 Then
- Call Blink_()
- ' Call Display_()
- Flaga1s = 0
- End If
- If Flaga2s = 1 Then 'co2s
- Flaga2s = 0
- End If
- '*********************************************************************
- 'OBSŁUGA PRZYCISKU ZATRZYMANIA
- If Sw_hold = 0 Then
- Incr Flaga10ms
- If Flaga10ms => 3 Then
- Call Hold_
- Flaga10ms = 0
- End If
- End If
- '*********************************************************************
- 'OBSŁUGA PRZYCISKU W LEWO
- If Sw_left = 0 Then
- Incr Flaga10ms
- If Flaga10ms => 3 Then
- Call Left_
- Flaga10ms = 0
- End If
- End If
- '*********************************************************************
- 'OBSŁUGA PRZYCISKU W PRAWO
- If Sw_right = 0 Then
- Incr Flaga10ms
- If Flaga10ms => 3 Then
- Call Right_
- Flaga10ms = 0
- End If
- End If
- '*********************************************************************
- Loop
- End
- '--------------------------------------------------------------------
- 'PODPROGRAM PRZERWAŃ TIMER1
- Przertimer1:
- Timer1 = 45536 'wstawienie do Timer1 wartości 45536
- Incr Timer_tikx10
- If Timer_tikx10 = 1 Then
- Set Flaga10ms
- End If
- Return
- '----------------------------------------------------------------------
pozdrawiam Jacek.