Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Problem Atmega 32

marekm
-
-
Posty:7
Rejestracja:29 gru 2004, o 08:34
Lokalizacja:Bielsko
Problem Atmega 32

Postautor: marekm » 24 lut 2005, o 16:06

Mam wielki problem z Atmega 32, a raczej z jego wyjsciami. Buduje sterownik do pieca CO, napisalem program w Bascom i jak mierze napiecia na jego portach wyjsciowych,ktore beda sterowaly roznymi rzeczami, to mam zawsze stan niski, jakby wogole nie dzialaly, a z tego co widze na LCD to program dziala poprawnie, chociaz czasami jak cos robie na przyciskach to zdarza sie chyba jakis reset, bo wszystko zaczyna robic od poczatku. Jesli kots moglby mi cos podpowiedziec bede WIELCE ZOBOWIAZANY.
Marek. marekmarszal@tlen.pl

radzio
Moderator
Moderator
Posty:967
Rejestracja:13 maja 2003, o 10:33
Lokalizacja:Sosnowiec
Kontaktowanie:

Postautor: radzio » 24 lut 2005, o 17:03

A może byś tak zamieścił schemat i program? Z takiego opisu niewiele mozna wywnioskować. Najprawdopodobniej porty nie są skonfigurowane.

marekm
-
-
Posty:7
Rejestracja:29 gru 2004, o 08:34
Lokalizacja:Bielsko

Postautor: marekm » 24 lut 2005, o 17:31

Dzieki za reakcje, jesli chodzi o schemat to niemam go zrobionego mam to zmontowane na plytce uniwersalnej, na razie niema co rysowac, do 4 wejsc podlaczylem przyciski i do masy, natomiast do wyjsc podlaczylem LEDy przez rezystory i niema zadnych przeblyskow. Jesli chodzi o program to jest juz troche duzy, wiec zamieszcze moze cos z samego poczatku, a jesli trzeba bedzie calos to moze podaj maila to bym Ci podeslal.


$regfile = "M32def.dat"
$crystal = 16000000
Config Lcd = 20 * 4 : Cursor Off
Config Lcdbus = 4

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Pinc.0 = Input , Pinc.1 = Input , Pinc.6 = Input , Pinc.7 = Input
Config Pind.2 = Output , Pind.3 = Output , Pind.4 = Output , Pind.5 = Output , Pind.6 = Output ,
Config Pina.7 = Output

Pompa Alias Pind.2
Zaw_on Alias Pind.3
Zaw_of Alias Pind.4
Klapa_on Alias Pind.5
Klapa_of Alias Pind.6
Led Alias Pind.7
Buz Alias Pina.7
Minus Alias Pinc.6
Plus Alias Pinc.7
Esc Alias Pinc.1
Ok Alias Pinc.0



Dim Pompa As Bit
Dim Zaw_on As Bit
Dim Zaw_of As Bit
Dim Klapa_on As Bit
Dim Klapa_of As Bit
Dim T As Word
Dim Channel As Byte
Dim Tco As Word
Dim Twu As Word
Dim Fl_roz As Bit 'flaga rozpalania adres w eprom 0
Dim Tzad As Byte 'temp zadana adres w eeprom 1
Dim Tzp As Byte 'temp zyl pompy adres w eeprom 2
Dim Twp As Byte 'temp wyl pompy adres w eeprom 3
Dim Tzaw As Byte 'temp pracy zaworu adres w eeprom 4
Dim Tkon As Byte 'temp konca palenia adres w eeprom 6
Dim Troz As Byte 'temp rozpalenia adres w eprom 7
Dim Prpom As Byte 'flaga pracy pompy adres w eeprom 5
Dim A As Word
Dim B As Word
Dim C As Word
Dim D As Word


Dim Fl_pom As Bit
Dim Fl_zaw As Bit
Dim Fl_kl As Bit




Init:
Set Led

Cls
Lcd " Sterownik CO "

Waitms 500
Fl_roz = 1
Fl_pom = 0
Fl_zaw = 0
Fl_kl = 0
Gosub Pomiar
Readeeprom Tzad , 1
If Tzad < 40 Then Gosub Dane_eeprom
If Tzad > 80 Then Gosub Dane_eeprom
If Tco > 40 Then Goto Rozpal
Wait 1
Reset Led
Goto Standby

Dane_eeprom:

Twp = 30
Tzad = 45
Tzp = 35
Tzaw = 40
Prpom = 1
Tkon = 25
Troz = 60
Writeeeprom Tzad , 1
Writeeeprom Tzp , 2
Writeeeprom Twp , 3
Writeeeprom Tzaw , 4
Writeeeprom Prpom , 5
Writeeeprom Tkon , 6
Writeeeprom Troz , 7
Return



Rozpal:
Readeeprom Troz , 7
Set Led
Set Buz
Cls
Lcd "Czy w piecu jest juz"
Lowerline
Lcd " ** ROZPALONE ** "
Thirdline
Lcd "wybierz"
Fourthline
Lcd " NIE TAK"
For A = 1 To 500
Debounce Ok , 0 , Main , Sub
Debounce Esc , 0 , Standby , Sub
Gosub Pomiar
B = Troz - 10
If Tco > B Then Goto Main
Waitms 120
Next A



Standby:
Reset Buz
Fl_roz = 0
Cls
Lcd "Temp. CO. WU."
Fourthline
Lcd " Start Menu"
Do
Gosub Pomiar
If Tco > 30 Then Goto Main
Lowerline
Lcd " "
Locate 2 , 1
Lcd " 'C"
Locate 2 , 10
Lcd Tco
Locate 2 , 18
Lcd Twu
Set Led : Waitms 250 : Reset Led
Debounce Esc , 0 , Main , Sub
Debounce Ok , 0 , Menu1 , Sub
Loop


Pomiar:
Start Adc
A = Getadc(0)
B = Getadc(1)
C = A / 2
D = B / 2
Tco = C - 6
Twu = D - 6
Stop Adc
Return

Main:
Reset Buz
Readeeprom Tkon , 6
Readeeprom Troz , 7
Cls
Lcd "Temp. CO. WU. zad"
Fourthline
Lcd " + - Menu"
Do
Debounce Plus , 0 , P_tzad , Sub
Debounce Minus , 0 , M_tzad , Sub
Debounce Ok , 0 , Menu1 , Sub
Gosub Pomiar
Readeeprom Tzad , 1
Set Led : Waitms 200 : Reset Led
Lowerline
Lcd " 'C "
Locate 2 , 8
Lcd Tco
Locate 2 , 13
Lcd Twu
Locate 2 , 18
Lcd Tzad

Debounce Ok , 0 , Menu1
If Tco < Tkon And Fl_kl = 1 Then Goto Koniec

If Tco < Tzad And Fl_kl = 0 Then Goto Otw_kl
If Tco > Tzad And Fl_kl = 1 Then Goto Zam_kl

If Tco > Tzp And Prpom = 1 And Fl_pom = 0 Then Goto Pom_on
If Tco < Twp And Fl_pom = 1 Then Goto Pom_off
If Prpom = 0 And Fl_pom = 1 Then Goto Pom_off


If Tco > Tzaw And Fl_zaw = 0 Then Goto Otw_zaw
If Tco < Tzaw And Fl_zaw = 1 Then Goto Zam_zaw
If Tco > Troz Then Fl_roz = 1

Loop

[ Dodano: 25-02-2005, 06:28 ]
Otw_kl:
Cls
Lcd "Otwieram klape"
Waitms 700
Set Klapa_on
Fl_kl = 1
Waitms 300
Reset Klapa_on
Goto Main

Zam_kl:
Cls
Lcd "Zamykam klape"
Waitms 700
Set Klapa_of
Fl_kl = 0
Waitms 300
Reset Klapa_of
Goto Main

Otw_zaw:
Cls
Lcd "Otwieram zawor"
Set Zaw_on
Fl_zaw = 1
Wait 3
Reset Zaw_on
Goto Main
Zam_zaw:
Cls
Lcd "Zamykam zawor"
Set Zaw_of
Fl_zaw = 0
Wait 3
Reset Zaw_of
Goto Main

Pom_on:

Cls
Lcd "Zalaczam pompe"
Wait 1
Set Pompa.1
Fl_pom = 1
Goto Main


Pom_off:
Cls
Lcd "Wylaczam pompe"
Wait 1
Set Pompa.0
Fl_pom = 0
Goto Main
'Spr_zaw:

Koniec:
Cls
Lcd "Koniec palenia"
Lowerline
Lcd "Zamykam klape"
Set Klapa_of
Fl_kl = 0
Wait 3
Reset Klapa_of
Goto Standby

[ Dodano: 25-02-2005, 06:28 ]
Otw_kl:
Cls
Lcd "Otwieram klape"
Waitms 700
Set Klapa_on
Fl_kl = 1
Waitms 300
Reset Klapa_on
Goto Main

Zam_kl:
Cls
Lcd "Zamykam klape"
Waitms 700
Set Klapa_of
Fl_kl = 0
Waitms 300
Reset Klapa_of
Goto Main

Otw_zaw:
Cls
Lcd "Otwieram zawor"
Set Zaw_on
Fl_zaw = 1
Wait 3
Reset Zaw_on
Goto Main
Zam_zaw:
Cls
Lcd "Zamykam zawor"
Set Zaw_of
Fl_zaw = 0
Wait 3
Reset Zaw_of
Goto Main

Pom_on:

Cls
Lcd "Zalaczam pompe"
Wait 1
Set Pompa.1
Fl_pom = 1
Goto Main


Pom_off:
Cls
Lcd "Wylaczam pompe"
Wait 1
Set Pompa.0
Fl_pom = 0
Goto Main
'Spr_zaw:

Koniec:
Cls
Lcd "Koniec palenia"
Lowerline
Lcd "Zamykam klape"
Set Klapa_of
Fl_kl = 0
Wait 3
Reset Klapa_of
Goto Standby

[ Dodano: 25-02-2005, 06:28 ]
Otw_kl:
Cls
Lcd "Otwieram klape"
Waitms 700
Set Klapa_on
Fl_kl = 1
Waitms 300
Reset Klapa_on
Goto Main

Zam_kl:
Cls
Lcd "Zamykam klape"
Waitms 700
Set Klapa_of
Fl_kl = 0
Waitms 300
Reset Klapa_of
Goto Main

Otw_zaw:
Cls
Lcd "Otwieram zawor"
Set Zaw_on
Fl_zaw = 1
Wait 3
Reset Zaw_on
Goto Main
Zam_zaw:
Cls
Lcd "Zamykam zawor"
Set Zaw_of
Fl_zaw = 0
Wait 3
Reset Zaw_of
Goto Main

Pom_on:

Cls
Lcd "Zalaczam pompe"
Wait 1
Set Pompa.1
Fl_pom = 1
Goto Main


Pom_off:
Cls
Lcd "Wylaczam pompe"
Wait 1
Set Pompa.0
Fl_pom = 0
Goto Main
'Spr_zaw:

Koniec:
Cls
Lcd "Koniec palenia"
Lowerline
Lcd "Zamykam klape"
Set Klapa_of
Fl_kl = 0
Wait 3
Reset Klapa_of
Goto Standby

[ Dodano: 25-02-2005, 06:28 ]
Otw_kl:
Cls
Lcd "Otwieram klape"
Waitms 700
Set Klapa_on
Fl_kl = 1
Waitms 300
Reset Klapa_on
Goto Main

Zam_kl:
Cls
Lcd "Zamykam klape"
Waitms 700
Set Klapa_of
Fl_kl = 0
Waitms 300
Reset Klapa_of
Goto Main

Otw_zaw:
Cls
Lcd "Otwieram zawor"
Set Zaw_on
Fl_zaw = 1
Wait 3
Reset Zaw_on
Goto Main
Zam_zaw:
Cls
Lcd "Zamykam zawor"
Set Zaw_of
Fl_zaw = 0
Wait 3
Reset Zaw_of
Goto Main

Pom_on:

Cls
Lcd "Zalaczam pompe"
Wait 1
Set Pompa.1
Fl_pom = 1
Goto Main


Pom_off:
Cls
Lcd "Wylaczam pompe"
Wait 1
Set Pompa.0
Fl_pom = 0
Goto Main
'Spr_zaw:

Koniec:
Cls
Lcd "Koniec palenia"
Lowerline
Lcd "Zamykam klape"
Set Klapa_of
Fl_kl = 0
Wait 3
Reset Klapa_of
Goto Standby

[ Dodano: 25-02-2005, 06:29 ]
Otw_kl:
Cls
Lcd "Otwieram klape"
Waitms 700
Set Klapa_on
Fl_kl = 1
Waitms 300
Reset Klapa_on
Goto Main

Zam_kl:
Cls
Lcd "Zamykam klape"
Waitms 700
Set Klapa_of
Fl_kl = 0
Waitms 300
Reset Klapa_of
Goto Main

Otw_zaw:
Cls
Lcd "Otwieram zawor"
Set Zaw_on
Fl_zaw = 1
Wait 3
Reset Zaw_on
Goto Main
Zam_zaw:
Cls
Lcd "Zamykam zawor"
Set Zaw_of
Fl_zaw = 0
Wait 3
Reset Zaw_of
Goto Main

Pom_on:

Cls
Lcd "Zalaczam pompe"
Wait 1
Set Pompa.1
Fl_pom = 1
Goto Main


Pom_off:
Cls
Lcd "Wylaczam pompe"
Wait 1
Set Pompa.0
Fl_pom = 0
Goto Main
'Spr_zaw:

Koniec:
Cls
Lcd "Koniec palenia"
Lowerline
Lcd "Zamykam klape"
Set Klapa_of
Fl_kl = 0
Wait 3
Reset Klapa_of
Goto Standby

[ Dodano: 25-02-2005, 06:29 ]
Otw_kl:
Cls
Lcd "Otwieram klape"
Waitms 700
Set Klapa_on
Fl_kl = 1
Waitms 300
Reset Klapa_on
Goto Main

Zam_kl:
Cls
Lcd "Zamykam klape"
Waitms 700
Set Klapa_of
Fl_kl = 0
Waitms 300
Reset Klapa_of
Goto Main

Otw_zaw:
Cls
Lcd "Otwieram zawor"
Set Zaw_on
Fl_zaw = 1
Wait 3
Reset Zaw_on
Goto Main
Zam_zaw:
Cls
Lcd "Zamykam zawor"
Set Zaw_of
Fl_zaw = 0
Wait 3
Reset Zaw_of
Goto Main

Pom_on:

Cls
Lcd "Zalaczam pompe"
Wait 1
Set Pompa.1
Fl_pom = 1
Goto Main


Pom_off:
Cls
Lcd "Wylaczam pompe"
Wait 1
Set Pompa.0
Fl_pom = 0
Goto Main
'Spr_zaw:

Koniec:
Cls
Lcd "Koniec palenia"
Lowerline
Lcd "Zamykam klape"
Set Klapa_of
Fl_kl = 0
Wait 3
Reset Klapa_of
Goto Standby

[ Dodano: 06-03-2005, 15:30 ]
Dzięki za pomoc, już nie aktualne

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 49 gości