www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LS7166


Autor: Carol (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe folgendes Problem. Und zwar habe ich einen Motor mit Encoder 
(2-Kanal Winkelschrittgeber) dessen Position ich bestimmen und regeln 
möchte. Ich mache das ganze in C am Computer, dazu verwende ich eine 
Messkarte (16 Analog In, 2 Analog Out, 16Bit Digital In, 16Bit Digital 
Out). Im Programm rufe ich dann periodisch eine DLL auf, die mir dann 
die Position übergeben soll. Daraus lässt sich dann auch die 
Geschwindigkeit errechnen. Um den Encoder auszuwerten habe ich mir einen 
24-Bit Quadrature Counter LS7166 besorgt. Dieser hat aber einen Datenbus 
der gelesen UND geschrieben werden muss. Meine Messkarte hat aber 
getrennte
Digitale IO Ports, also nur lesen oder nur schreiben. Was kann ich da 
machen?

1. Gibt es eine Möglichkeit die getrennten IO Ports extern so zu 
beschalten das ich die Datenrichtung wechseln kann?

2. Ich habe auch schon mal etwas mit Microcontrollern gemacht, einen 
ATmega8 habe ich hier. Ist es damit möglich, einen Datenbus zu 
realisieren. Ich könnte mir dann den Wert seriell oder so abholen. Einen 
Uart hat der ja schon eingebaut. Wie würde die externe Beschaltung dort 
aussehen.

Schäut euch nicht vor C-Code(ein kurzes Bsp. wäre nett), nur mit der 
Beschaltung von IO Ports kenn ich mich nicht aus wenn es in zwei 
Richtungen geht.

Dankesehr

Carol

Autor: F. Kriewitz (freddy436)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also bei der PC IO Karte würde ich einfach zwei Ports extern zusammen 
klemmen, eventuell bei dem Ausgang noch eine Diode dazwischen klemmen 
(damit beim lesen am Ausgang keine Spannung anliegt).

Bei einem µC würde ich einfach nur das DDRX Register ändern (je nachdem 
ob gelesen oder geschrieben werden soll entsprechend auf Eingang/Ausgang 
setzen.

Autor: Carol (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte das erstmal mit dem Microcontroller probieren. Der kostet nur 
1,65 €, bevor ich da etwas kaputt mache.
Ok ich mal hier ein das AVR-GCC Tutorial etwas gelesen. Da steht etwas 
von Pullup Widerständen die beim lesen benutzt werden. Brauche ich 
diese? Oder kann ich das in der Art einfach anschliessen?


Portb.0(Controller) <-->  D.0 (LS7166)
Portb.1(Controller) <-->  D.1 (LS7166)
Portb.2(Controller) <-->  D.2 (LS7166)
Portb.3(Controller) <-->  D.3 (LS7166)
Portb.4(Controller) <-->  D.4 (LS7166)
Portb.5(Controller) <-->  D.5 (LS7166)
Portb.6(Controller) <-->  D.6 (LS7166)
Portb.7(Controller) <-->  D.7 (LS7166)

<--> entspricht einer Drahtbrücke

Und dann für das lesen des LS7166 Registers:
DDRB=0x00
variable=PORTB

Und für das schreiben des LS7166 Registers:
DDRB=0xFF
PORTB=variable

Oder?

Danke














Autor: F. Kriewitz (freddy436)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht ganz, beim lesen ist der Status in PINB gespeichert, PORTB wird 
beim Schalten als Eingang dazu benutzt um die internen Pull Up 
Widerstände  zu (de-)aktivieren. Ich kenne den LS7166 nicht, es wird 
vermutlich auch ohne Pull Ups gehen, aber schaden können die auch nicht, 
manchmal kann es aber auch zu Problemen kommen. Ich würde es sowohl mit 
als auch ohne den internen Pull Ups versuchen. Eventuell steht dazu ja 
auch was im Datenblatt.

Siehe auch:
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Autor: Carol (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

leider steht dazu nichts im Datenblatt, dort wird der Bus als grosser 
Pfeil mit zwei Richtungen gezeichnet. Aber das mit PINB ist ein guter 
Tip. Ich probier das mal so. Danke.

Gruss

Carol

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]
  • [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.