mikrocontroller.net

Forum: FPGA, VHDL & Co. Problem mit I/O Ports


Autor: HB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo...

ich habe im Moment folgendes Problem: Ich will an meinem Spartan3 ein 
paar LEDs dranhängen. Dazu sollen ein paar I/O Pins 3,3V Pegel liefern.

Bisher habe ich folgendes gemacht:
- die Portpins in der *.ucf Datei als LVCMOS33 oder LVTTL konfiguriert.
- OUTBUF verwendet

Die Portpins zeigen mir danach das korrekte, angegebene Bitmuster (z.B. 
für 8 LEDs "01010101"... allerdings mit Pegeln 0V und 1,53V

Was mach ich falsch???

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du auch eine VCCIO Spannung von 3.3 V an diesen Bänken?
Diese wird von der Leiterplatte geliefert, die SW Konfiguration muß dazu 
passen.

Klaus

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie hast Du die LED's reingehängt?
Zwischen Pin und GND oder Pin und 3.3 V?

Autor: fpgakuechle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versehtnlich die FpGA-internen PullUps/downs an den I/O aktiviert?
Steht im PAD file.
Oder misst du die Flussspannung über den LED's forward voltage ?

Autor: HB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Klaus Falser 1
Die "Softwarekonfigruartion" wird doch in dem ContraintsFile gemacht. 
LVCMOS33 bzw. LVTTL hab ich ausprobiert. Ebenfalls hab ich den OBUF 
entsprechend konfiguriert... wie in der lib.pdf beschrieben.

@Klaus Falser 2 und fpgakuechele
Noch hab ich gar keine LED's drangehängt... ich messe lediglich mit dem 
Oszi die Spannung an den Pins gegen Masse.
Wie man das mit den PullUps/downs macht weiß ich ehrlich gesagt nicht... 
werde aber mal das PAD File checken...

Autor: Klaus Falser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es genügt nicht, die Pins für einen bestimmten I/O Standard ( = LVCMOS33 
oder LVTTL) zu konfigurieren.
Jeder I/O Standard braucht auch eine bestimmte Versorgungsspannung an 
speziellen Versorgungspin. Jeder I/O Pin gehört zu einer bestimmten 
Bank, jede Bank hat gemeinsam mehrere solche Versorgungspins (VCCIO).
Wenn Du deine Pins für LVCMOS33 oder LVTTL konfigurierst, müssen die 
Versorgungspins für die dazugehörige Bank mit 3.3 V verbunden sein.

Klaus

Autor: Lukas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi! Ich habe glaube ich das gleiche problem! Ich habe eine 
Ampelschaltung geschrieben. mit dem Atmega8 funktioniert die auch 
einwand frei. aber mit dem mega8515 gibt es ein problem: Wenn ich an den 
ausgängen für die verschiedenen Ampeln die Spannung messe, messe ich 
dort 5 VDC oder ca 0,3 VDC
sobald ich aber eine LED anschließe, bricht die Spannung anscheinend 
zusammen,  dann messe ich nur noch 1,4 VDC oder ca 0,3 VDC.
Ich habe mal eine Low current LED angeschlossen, die hat ohne 
vorwiderstand ganz wenig geleuchtet.


Woran liegt soetwas?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Lukas (Gast)

>sobald ich aber eine LED anschließe, bricht die Spannung anscheinend
>zusammen,  dann messe ich nur noch 1,4 VDC oder ca 0,3 VDC.

Klar, das ist die Flusspannung.

>Ich habe mal eine Low current LED angeschlossen, die hat ohne
>vorwiderstand ganz wenig geleuchtet.

Auch Low-Current LEDs brauchen einen Vorwiderstand! 1-2kOhm ist 
ausreichend.
Wahrscheinlich hast du die Ports nicht als Ausgang geschaltet.

DDRx = 0xFF;

MFg
Falk

Autor: Lukas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Doch ich habe den entsprechenden Port definitiv als ausgang gesetzt.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Lukas (Gast)

>Doch ich habe den entsprechenden Port definitiv als ausgang gesetzt.

Zeig mal deinen Quelltext, als Anhang.

MFG
Falk

Autor: Lukas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Sorry ich dachte ich hätte ihn schon reingestellt.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Lukas (Gast)

>ldi temp, 0xff
>out DDRC, temp          ;Port B ist ausgang

Kleine Differenz zwischen Assembler und Kommentar ;-)

Ich nehme mal an, deine LEDs hängen MIT Vorwiderstand an Port C. 
Wieviele LEDs hast du denn angeschlossen? Dein Programm scheint sechs 
LEDs zu steuern. Ist das Korrekt? Ansonsten sieht das Programm OK aus.

MfG
Falk

Autor: Lukas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo, ich habe das prog mal auf Port C geändert, und anscheinend vergessen 
das Kommentar zu ändern.
Also es ist richtig, das ich damit 6 LEDs steuere. Zurzeit benutze ich 
LEDs mit intigrirtem Vorwiderstand. Wenn ich dort direkt 5 Volt anlege 
leuchten die auch.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.