|
|
|
Anfang
zurück
weiter
Ende
|
Autor |
Beitrag |
Sebastian
Gast
|
Erstellt: 17.01.06, 10:19 Betreff: programmablaufproblem
drucken
Thema drucken weiterempfehlen
|
|
|
hallo,
unten könnt ihr einen teil einer steuersoftware lesen, die ein wenig probleme bereitet. bearbeite hier mein erstes vhdl projekt und hoffe auf eure hilfe.
den hier dargestellte teil der steuerfoftware möchte ich gern testen, um sicher zu stellen, dass meine programmauswahl korrekt funktioniert. die auswahl der programme erfolgt in abhängigkeit des wertes von P1 (in - ogic vector), der 5 zustände annehmen kann. die variable systemzeit dient der sicherstellung, dass nach einschalten des gerätes definitiv die prozedur aus aktiv ist.
mein problem: egal welchen zustand ich am eingang einstelle, die ausgangszustände nehmen keine statischen werte an, d.h. die richtige programmauswahl wird offensichtlich nicht getroffen ...
die taktfrequenz beträgt 20kHz ...
ich hoffe, diese ausführen reichen erstmal als kurze erläuterung ...?
hier der quellcode:
------------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; library APA;
entity Stickstoff is
port (P1: in std_logic_vector(0 to 4); clock: in std_logic; V85,V96L,V97,Pumpe,Latch_Catcher: out std_logic; LED_OFF, LED_Vak, LED_N2, LED_Druck, LED_Auto, test_prog1, test_prog2, test_prog3, test_prog4, test_prog5: out std_logic);
end Stickstoff;
architecture eins of Stickstoff is
------------------------------------------ -- Stand-By-Prozedur (AUS)
procedure AUS is
begin V85<='0'; V96L<='0'; Latch_Catcher<='1'; V97<='0'; Pumpe<='0'; end; ------------------------------------------
begin
process(P1) is
variable programm: integer range 1 to 5 :=1; variable count: integer range 0 to 34 :=0; variable systemzeit: integer range 0 to 1000000000 :=1; begin
if rising_edge(clock) then count:=count+1;
if count>=34 then systemzeit:=systemzeit+1; count:=0; end if;
end if;
if systemzeit<=3 then programm:=1; AUS; else if P1="00000" then null; elsif P1="10000" then programm:=1; test_prog1<='1'; elsif P1="01000" then programm:=2; test_prog2<='1'; elsif P1="00100" then programm:=3; test_prog3<='1'; elsif P1="00010" then programm:=4; test_prog4<='1'; elsif P1="00001" then --sequenz:='0'; programm:=5; test_prog5<='1'; else programm:=1; end if; end if;
if programm=1 then AUS; LED_OFF<='1'; elsif programm=2 then -- Vakuumieren bis Druck auf Wert_Druck_Vorwahl gefallen ist. LED_Vak<='1'; Latch_Catcher<='1'; elsif programm=3 then -- Spülen mit Stickstoff bis 50mbar Überdruck erreicht sind. LED_N2<='1'; Latch_Catcher<='0'; elsif programm=4 then -- Druck-Programm, keine Prüfschleifen LED_Druck<='1'; Latch_Catcher<='0'; elsif programm=5 then -- Automatischer Spülablauf LED_Auto<='1'; Latch_Catcher<='1'; end if;
end process;
----------------------------------------------------------------------------------------------------------
end eins;
|
|
nach oben |
|
|
Gast
|
Erstellt: 17.01.06, 10:21 Betreff: Re: programmablaufproblem
drucken
weiterempfehlen
|
|
|
... schon mal vielen dank für jegliches interesse an dem beitrag und evtl. hilfe
gruß baster
|
|
nach oben |
|
|
pzwack
Registrierter Benutzer
Beiträge: 4
|
Erstellt: 17.01.06, 17:26 Betreff: Re: programmablaufproblem
drucken
weiterempfehlen
|
|
|
Ich nehme mal an, dass du bereits bei der Simulation Probleme hast.
> process(P1) is > > begin > > if rising_edge(clock) then > ...
clock steht nicht in der Sensitivity List steht, deshalb wird rising_edge(clock) nie wahr. So wie du es schreibst muss ein Event auf P1 kommen damit was passiert. Schreib mal sowas wie process(clock,reset) da am Anfang, dann geht's weiter.
Da gibt's bestimmt noch mehr zu kritteln, aber warum dir den ganzen Spass nehmen? ;-)
Peter
|
|
nach oben |
|
|
sebastian
Gast
|
Erstellt: 17.01.06, 17:53 Betreff: Re: programmablaufproblem @pzwack
drucken
weiterempfehlen
|
|
|
... das habe ich nun auch gefunden allerdings bin ich noch nicht wesentlich weiter ... ich lasse von mir hören und bin weiterhin dankbar für nützliche gedanken :o)
gruß sebastian
|
|
nach oben |
|
|
|
powered by carookee.com - eigenes profi-forum kostenlos
Design © trevorj
|