Signal von Drehgeber nicht erkannt

OP #2326890
Lesenswert?
• ▲
▼
Guten Tag zusammen!

Ich programmieren ein Spartan3an mit ISE 12.1.

Der Teil "BTN" soll je nach dem wie oft ein Button gedrückt wird eine 
andere Bitfolge ausgeben (inkl. Entprellung). Das scheint auch zu 
funktionieren.
Im Teil "dreh" soll abhängig davon, welche Bitfolge von "BTN" kommt das 
Signal "count" unterschiedlich vergrößert werden.

Beim angehängten Code stellt sich mir nun folgendes Problem: Es scheint 
so, als würden die Signale ROT_A und ROT_B nicht erkannt und somit 
funktioniert der ganze "dreh.vhd"-Teil nicht.
Ohne "BTN.vhd" funktioniert der Drehgeber.

Ich bin noch Anfänger in Sachen VHDL und weiß mir grad nicht mehr zu 
helfen :(

Wäre nett, wenn mir jemand weiterhelfen würde!

MfG
Lisa
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #2326909
Lesenswert?
• ▲
▼
Lisa N. schrieb:
> Beim angehängten Code stellt sich mir nun folgendes Problem: Es scheint
> so, als würden die Signale ROT_A und ROT_B nicht erkannt und somit
> funktioniert der ganze "dreh.vhd"-Teil nicht.
funktioniert also nicht...
> Ohne "BTN.vhd" funktioniert der Drehgeber.
oder doch...

Was denn jetzt?

Hast du das mal SIMULIERT?
Das Design ist dafür hervorragend geeignet.

Zumindest das ist schon sehr suspekt:
1
case sel is
2
  when "00001" => if (cu = '0') then ...
3
     :
4
  when "00010" => if (cu = '1') then ...

Und deine etwas eigenartige Weiterschaltung im btn.vhd bringt sogar mich 
ins Grübeln...
Der Beschreibung nach soll hier mit einem Tastendruck einfach ein Bit 
weitergeschoben werden. Aber eine Entprellung funktioniert auf jeden 
Fall anders. Und auch eine Flankeerkennung lässt sich wesentlich 
lesbarer schreiben...
OP #2326960
Lesenswert?
• ▲
▼
Hallo,

when "00001" => if (cu = '0') then... Auf Fehlersuche hingeschrieben und 
vergessen zurückzuändern. Soll natürlich (cu = '1') sein.


ich wollte nur sagen, dass ich den Drehgeber erst mal allein ausprobiert 
habe. Das hat funktioniert.
Danach wollte ich den Code erweitern mit "BTN.vhd". Das ging nicht mehr. 
Natürlich dachte ich auch erst, dass der Fehler dann wohl in BTN liegt.
Was mich dann aber verwirrt hat war, dass wenn ich schreibe:

case sel is

when "00001" => count <= "00000001";
when "00010" => count <= "00000010";
...
end case;
end process;

LED <= count;
sel <= TIME_SEL;

dann kann man den Stand von TIME_SEL an den LEDs erkennen. Also dachte 
ich, dass "BTN" das Signal richtig ausgibt und das Problem ein anderes 
ist. Oder liege ich da falsch?
OP #2327178
Lesenswert?
• ▲
▼
So, erst mal danke für den Code!

Das Simulieren hat etwas länger gedauert bei mir...aller Anfang ist 
schwer!
In der Simulation hat mein ursprünglicher Code allerdings funktioniert.

Habe deinem Code noch ein constraints-file zugefügt und das ganze mal 
auf mein Board gespielt => Tut sich auch nichts

Ich fürchte ich habe da noch irgend einen grundlegenden Fehler 
reingebaut...
Moderator (Firma: Titel) Persönliche Seite #2327183
Lesenswert?
• ▲
▼
Lisa N. schrieb:
> Habe deinem Code noch ein constraints-file zugefügt und das ganze mal
> auf mein Board gespielt => Tut sich auch nichts
Wenn die Simulation tut, dann funktionieren so einfach Designs idR. auch 
in der Hardware...

> Ich fürchte ich habe da noch irgend einen grundlegenden Fehler
> reingebaut..
Hast du Pullups an den Drehgeber-Pins eingebaut(Platine) bzw. 
konfiguriert(FPGA)?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.