Porterweiterung: Unterschied zwischen den Versionen
Meini (Diskussion | Beiträge) (→D/A-Wandler mit LTC1257) |
Meini (Diskussion | Beiträge) K (→D/A-Wandler mit LTC1257) |
||
Zeile 48: | Zeile 48: | ||
Mit <code>ltc1257_init</code> werden die Portleitungen passend initialisiert (lt. Datenblatt). | Mit <code>ltc1257_init</code> werden die Portleitungen passend initialisiert (lt. Datenblatt). | ||
− | Mit <code>ltc1257_delay</code> kann die interne Wartezeit in µs gesetzt werden, die zum Erkennen des Flankenwechsels durch den DAC beim Schreiben eines Bits gewartet wird (ist vor allem hilfreich, wenn der LTC1257 über Optopkoppler (z.B. CNY17) entkoppelt | + | Mit <code>ltc1257_delay</code> kann die interne Wartezeit in µs gesetzt werden, die zum Erkennen des Flankenwechsels durch den DAC beim Schreiben eines Bits gewartet wird (ist vor allem hilfreich, wenn der LTC1257 über Optopkoppler (z.B. CNY17) entkoppelt ist). |
Mit <code>ltc1257_set</code> werden die tatsächlichen Werte gesetzt, die der LTC1257 dann als Analogsignal ausgibt. Bei der Verwendung von mehreren LTC1257 im Daisy Chain muss die Reihenfolge der Werte für <code>ltc1257_set</code> in der <b>umgekehrten</b> Reihenfolge der DACs gesendet werden (d.h. das erste Argument ist für den letzten DAC). | Mit <code>ltc1257_set</code> werden die tatsächlichen Werte gesetzt, die der LTC1257 dann als Analogsignal ausgibt. Bei der Verwendung von mehreren LTC1257 im Daisy Chain muss die Reihenfolge der Werte für <code>ltc1257_set</code> in der <b>umgekehrten</b> Reihenfolge der DACs gesendet werden (d.h. das erste Argument ist für den letzten DAC). |
Version vom 31. Dezember 2009, 12:39 Uhr
Inhaltsverzeichnis
Porterweiterungen
Wenn am AVR schon viele Erweiterungen angeschlossen sind und die freien Ports langsam zur Neige gehen, kann man mit Schieberegistern arbeiten. Zwei dieser Bausteine sind bereits in der SW vorgesehen und können per menuconfig freigeschaltet werden.
74HC165 als Eingangserweiterung
Der 74HC165 ist ein 8-bit Parallel-in/Seriell-out Schieberegister. Das kann man z.B. dazu benutzen um mehrere Schalteingänge seriell abzufragen. So könnte man z.B. 8 Taster mit nur 3 Leitungen abfragen und spart in diesem Fall 5 Portleitungen. Diese Schaltung ist kaskadierbar, so daß weitere Eingänge abgefragt werden können ohne mehr Portleitungen zu benötigen.
Schaltbild siehe bei www.mikrocontroller.net
{ menuconfig todo }
{ pinning todo }
74HC595 als Ausgangserweiterung
Der 74HC595 ist ein 8-bit Seriell-in/Parallel-out Schieberegister mit Latch. Das Latch braucht man, damit beim seriellen reinschieben der Bits diese nicht nacheinander an den Ausgängen erscheinen, sondern erst wenn das ganze Datenwort reingeschoben ist. Der 74HC595 ist sogar kaskadierbar, d.h. man kann theoretisch beliebig viele Ausgänge realisieren, ohne weitere Portleitungen zu benötigen.
Schaltbild siehe bei www.mikrocontroller.net
{ menuconfig todo }
{ pinning todo }
74HC164 als Ausgangserweiterung
Der 74HC164 ist ein 8-bit Seriell-in/Parallel-out Schieberegister. Das kann man z.B. dazu benutzen um ein handelsübliches LCD mit HD44780-Controller mit nur 3 Leitungen anzusteuern (bei direkter Ansteuerung würden 7 Portleitungen benötigt), so wird das bei U. Radig's Webserver gemacht.
In diesem Fall wird kein Latch benötigt, da das LCD erst beim Schalten seiner "E"-Leitung (enable) die Daten aus dem Schieberegister übernimmt.
Schaltbild siehe bei AVR Webserver Software
{ menuconfig todo }
{ pinning todo }
D/A-Wandler mit LTC1257
Der LTC1257 ist ein 12bit Digital-Analog-Wandler mit seriellem Eingang und interner Referenzspannung. Zur Steuerung benötigt er lediglich 3 Portleitungen. Da er laut Datenblatt mindestens 4,75 Volt Versorgungsspannung braucht, ist er nicht in Systemen mit 3,3 Volt einsetzbar.
{ Schaltbild todo }
Das nötige Pinning ist für AVR-NET-IO bereits vorhanden, in der Zuordnung
- PA0 = LOAD
- PA1 = DATA
- PA2 = CLK
Mit ltc1257_init
werden die Portleitungen passend initialisiert (lt. Datenblatt).
Mit ltc1257_delay
kann die interne Wartezeit in µs gesetzt werden, die zum Erkennen des Flankenwechsels durch den DAC beim Schreiben eines Bits gewartet wird (ist vor allem hilfreich, wenn der LTC1257 über Optopkoppler (z.B. CNY17) entkoppelt ist).
Mit ltc1257_set
werden die tatsächlichen Werte gesetzt, die der LTC1257 dann als Analogsignal ausgibt. Bei der Verwendung von mehreren LTC1257 im Daisy Chain muss die Reihenfolge der Werte für ltc1257_set
in der umgekehrten Reihenfolge der DACs gesendet werden (d.h. das erste Argument ist für den letzten DAC).