Witam robie stacje lutowniczą z atmegą8 napisałem taki kod w bascomie, czy bardziej doświadczeni koledzy mogli by na nieo zerknąć i wytknąć mi poważne błędy jakie popełniłem.
Temperatura z termopary jest brana za pomoca mac6675 i spi, uśpienie powinno się włączyć po minucie leżenia kolby nieruszanej i zmniejszyć ustawiona temp do 160 stopni, po podniesieniu kolby temp powinna sie ustawiać na stara zadana.
Porty.
PortC = LCD
PortB = Max6675 odczyt temperatury z termopary.
Pd0 Czekanie na zero fazy.
Pd1 sterowanie grzałka
Pd3, pd3 encoder do zmiany ostawień
Pd4 czujnik odłożenia lutownicy do trzymaka.
Pd5 czujnik 1wire d18b20. - jeszcze nie dodany w programie.
Pd7 Podswietlanie LCD
Z góry dziekuje za wszelka pomoc.
Temperatura z termopary jest brana za pomoca mac6675 i spi, uśpienie powinno się włączyć po minucie leżenia kolby nieruszanej i zmniejszyć ustawiona temp do 160 stopni, po podniesieniu kolby temp powinna sie ustawiać na stara zadana.
Porty.
PortC = LCD
PortB = Max6675 odczyt temperatury z termopary.
Pd0 Czekanie na zero fazy.
Pd1 sterowanie grzałka
Pd3, pd3 encoder do zmiany ostawień
Pd4 czujnik odłożenia lutownicy do trzymaka.
Pd5 czujnik 1wire d18b20. - jeszcze nie dodany w programie.
Pd7 Podswietlanie LCD
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
Dim A(2) As Byte
Dim Message As String * 16
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 0
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
Deflcdchar 1 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32
Config Timer0 = Timer , Prescale = 1
Config 1wire = Portd.5
Config Portd.1 = Output
Config Portd.7 = Output
Config Pind.0 = Input
Config Pind.4 = Input
Set Portd.4 'Pullup uspienia
Set Portd.2 'Pullup encodera
Set Portd.3 'Pullup encodera
Grzalka Alias Portd.1
Pods_lcd Alias Portd.7
Zero_fazy Alias Pind.0
Uspienie Alias Pind.4
Dim B As Integer
Dim C As Integer
Dim Nastawa As Word
Dim Eeprom As Word
Dim Temp As Word
Dim Tempp As Word
Dim Tempm As Word
Dim Pamiec As Bit
Dim Temp_lcd As String * 1
Dim Dummy As Byte
Dim Male As Word
Dim Duze As Word
Dim Przerw0 As Word
Declare Sub Get_temp
Declare Sub Mniej_pr
Declare Sub Wiecej_pr
Declare Sub Licz
Declare Sub Timer_start
Declare Sub Timer_stop
Dummy = 0
Readeeprom Nastawa , 2
On Timer0 Licz
Enable Interrupts
Enable Timer0
Stop Timer0
Timer0 = 0
Pods_lcd = 1
Cls
Cursor Off
Lcd " Witaj Panie"
Lowerline
Lcd " Czas Lutowania"
Wait 1
Cls
Do
Get_temp
Tempp = Temp + 3
Tempm = Temp - 3
Debounce Uspienie , 0 , Timer_start , Sub
Debounce Uspienie , 1 , Timer_stop , Sub
Home
Lcd "Nastawa: "
Lcd Nastawa
Lcd Chr(1)
Lcd "C"
Lcd " Temp: "
Lcd Temp
Lcd Chr(1)
Lcd "C"
B = Encoder(pinb.0 , Pinb.1 , Mniej_pr , Wiecej_pr , 1)
If Duze = 60 And Uspienie = 0 Then
Nastawa = 160
Waitms 300
Pods_lcd = 0
Waitms 300
Pods_lcd = 1
End If
If Tempm < Nastawa And Grzalka = 0 Then '+- 3 stopnie temp;]
Bitwait Zero_fazy , Set
Grzalka = 1
Elseif Tempp > Nastawa Then
Grzalka = 0
End If
If Nastawa >= Temp And Uspienie = 1 And Duze = 0 Then
Readeeprom Eeprom , 2
If Nastawa <> Eeprom Then
Writeeeprom Nastawa , 2
End If
End If
Waitms 10
Loop
End
Sub Get_temp
Spiinit
Waitms 100 ' Temperaturka
Spiin A(1) , Dummy ' Czytanie
Temp = A(1) * 256
Temp = Temp + A(2)
Temp = Temp / 32
Temp = Temp - 3
End Sub
Sub Wiecej_pr
Nastawa = Nastawa + 5
End Sub
Sub Mniej_pr
Nastawa = Nastawa - 5
End Sub
Sub Licz
Incr Przerw0
If Przerw0 = 3125 Then
Incr Male
Przerw0 = 0
If Male = 10 Then
Incr Duze
Male = 0
End If
End If
End Sub
Sub Timer_start
Stop Timer0
Male = 0
Duze = 0
Timer0 = 0
Start Timer0
End Sub
Sub Timer_stop
Stop Timer0
Male = 0
Duze = 0
Timer0 = 0
Readeeprom Nastawa , 2
End Sub
Z góry dziekuje za wszelka pomoc.