Hi HansWerner,
Also nach dein Text scheinst du die Praxisarbeit vorbereiten zu müssen.
Die Aufgabe betrifft eine Praxisarbeit für eine Studentin.
Es soll ein einstellbarer Filter entstehen.
Der LTC1264 ist ein Switched-Capacitor-Filter der über einen Clock-Eingang angesteuert wird.
Je nach Beschaltung lassen sich verschiedene Filtertypen wie Tiefpass, Bandpass usw. realisieren.
Es soll ein Atmel Mikrocontroller verwendet werden.
Ähnliche Chips habe ich auch schonmal in Maxim-Datenbüchern gesehen.
Als Display soll ein 20x4 Zeichen Display verwendet werden.
reicht dafür allemal aus.
Die 3 Drehgeber sollen zur Einstellung des Filtertyps, der Grenzfrequenzen und der Verstärkung verwendet werden.
Würde ich einen Drehgeber nehmen und 2 Potis für Grenzfrequenz und Verstärkung. Dann noch 4-5 Taster für ne schöne Menüsteuerung und gut ist. Das ist wesentlich geschmeidiger. Heißt aber nicht das die Praxisarbeit dadurch auch wirklich einfacher wird. Die Arbeit soll sich aber wohl in der Hauptsache um den Filter kümmern und nicht um die Entwirrung der Interrupts von den ganzen Incrementalgebern.
SPI ist ebenso ein Bussystem wie I2C, daher benötigt man normalerweise nur eine Schnittstelle.
Ich bin mir nicht sicher, aber bei beiden maximal 8 Slaves.
Ja und Nein. I2C ist ein Bussystem was "relativ" gutmütig bei der pheripheren Bausteinen ist.
Beim SPI-Bus ist das nicht so. Wenn man 2 Bausteine hat die von den Einstellungen der Phasenlage und Pausenlage unterschiedlich sind und dann auch noch die Bits in anderer Reihenfolge haben wollen dann ist man am Ars....
Hab ich selbst erlebt. Darum läuft ein Baustein bei mir jetzt mit Parallelbus. Hat dadurch nun 16 Pins verbraten
Wieviele Pins benötigt der Mikrocontroller bzw. welchen sollte man nehmen ?
Bei einem 4Bit Anschluss des LCD werden insgesamt 7 Pins benötigt.
Nein. 6 reichen ... D4-7, E, RS
Je Drehgeber normalerweise 2 Pins.
Und die Taster der Drehgeber ? Oder soll man die Daten dann mit ner schnellen Drehung "ENTERn" ?
Außerdem kommt die Entprellung der Drehgebersignale noch dazu. ... Naja ... ich muß die Praxisarbeit ja nicht machen
>Mit deinen 6 Interrupt-Eingängen alleine schon für die Drehgeber bist du bereits bei einem 64poligen ATmega wenn du einzelne Interrupts verwenden willst. Andernfalls geht es höchstens über PinChangeInterrupts und dann einem Mega644.
Was heisst hier einzelne Interrupts ?
Wie kommt man von 6 Interrupt-Eingängen auf 64 Pins ?
>Andernfalls geht es höchstens über PinChangeInterrupts und dann einem Mega644.
Also lassen sich nur beim Mega644 6 Eingänge als Interrupteingänge definieren ?
Welche Pins bzw. wieviele lassen sich bei den einzelnen Mikrocontrollern als Interrupteingänge definieren ?
Habe irgendwo gelesen bei es beim ATMega168 jeder (fast jeder) beliebige Pin sein kann.
Ganz so einfach ist es leider nicht ...
Bei den kleinen Megas mit 40pol PDIP / 44pol TQFP hat man maximal 2 bzw 3 Interrupts die wirklich direkt auf den Vektortabellen ankommen. Bei den neueren Serien (Mega644, Mega168, ...) hat man zusätzlich PCINTs wo aus Gruppen von Pins welche ausgewählt werden könne die beim Mega48,88,168 zB auf drei PCINT-Vektoren landen die man dann getrennt verwenden kann. Beim Mega644 hat man zB 3 richtige Interrupts und maximal 4 PCINT-Vektoren die auf festen Gruppen von IO-Pins landen. Darum meinte ich auch ab 64polig weil die dann 8 richtige Interrupts zur Verfügung stellen.
Aber warum müssen es unbedingt 3 Incrementalgeber sein ? Reicht für eine Pegeleinstellung oder für die Frequenzeinstellung kein Poti an nem ADC-Eingang des ATmegas ? Für Menü/Modus/... würde ich das ja noch verstehen. Warum versuchen gleich alle ne HyperDuperAlleskönn-Kiste zu bauen ? Nur weil es hipp ist und cool aussieht wenn man alles mit Incrementalgebern zupflastert ? Es reicht doch einer für die Einstellung und dann noch 4-5 Taster für eine Menüsteuerung. Das ist doch auch für den Controller und nachher für das Programm wesentlich einfacher. Stell dir mal vor du hast dann noch weitere Interruptquellen. Das gibt im Programm den totalen Wahnsinn. Keep It Simple
Also nochmal zur Zusammenfassung ...
- in der
Hauptsache geht es um ein SwitchedCapacitor-Filter
- der soll mit einem Mikrocontroller lediglich gesteuert/eingestellt werden
- Diejenige die die Arbeit machen soll hat eventuell noch nicht viel Hardware/Controller-Erfahrung
ich sag nur Interruptvektortabellen, Flankentriggerung, Pegeltriggerung, Interruptpriorität, ...
Hier im Forum kommen oft genug Schüler vorbei die von Hardware und Controllern noch nicht wirklich Ahnung haben und von systematischem Aufbau von Programmen auch nicht. Die haben eventuell mal mit VB was zusammengestrickt. Ein Controller ist was ganz anderes. Der hat keine zig Gigahertz, Gigabyte und nen paar Harddisks wo man sich voll drauf austoben kann.
Also um himmelswillen quäl die Person nicht mit nem irren Wald an Interrupts und totalem Impulswahnsinn auf dem Mikrocontroller. Im Endeffekt soll doch der Filter laufen und nicht die Person durchfallen weil es an der Bearbeitung der Incrementalgeber hapert.
Nimm am besten einen Controller der nicht auf Knautsch nur 8kByte Flash hat. Nicht das dann durch den Menü-Code bereits der Speicher voll ist.
Noch was zu den Pins und der Controllergröße. Die IO-Pins sind nicht nur mit den "normalen" Funktionen (In/Out) belegt sondern auch mit den Zusatzfunktionen wie ADC, Timer, Interrupt, ... Man sollte also zuerst mal sehen welche Zusatzfunktionen man benötigt. Nicht das auf einem Pin dann der SPI- oder I2C-Bus liegt und außerdem auch der noch benötigte Interrupt
Gruß
Dino