Marco78
14.08.2005, 23:02
Bitte diesen Beitrag erst bis zum Ende durchlesen und auch die Links anklicken und erst dann Fragen stellen.
Was für AVRs gibt es, was können diese und welchen brauche ich?
Vorwort:
Wöchentlich wenn nicht sogar tagtäglich kommt die Frage auf, welcher AVR wieviele Ein- und Ausgänge hat, wieviele Pulsweitenmodulationskanäle, wieviele Analoge Eingänge wieviel Speicher und was man dort reinschreiben kann usw...
Je öfters sowas gefragt wird, desto genervter und kürzer werden die Antworten. Das hat bei einigen die Folge, das die Lust am basteln schnell wieder vergeht. Damit das nicht passiert und die Lust noch weiter steigt möchte ich hier versuchen einen Durchblick durch die vielfältige Welt von Atmels AVR-Serie zu verschaffen.
Vorweg ein paar nicht unwichtige Links:
Die Homepage von Atmel (www.atmel.com)
Der direkte Link zu den Datenblättern (http://www.atmel.com/dyn/products/datasheets.asp?family_id=607)
Der direkte Link zu Datenblättern älterer AVRs (http://www.atmel.com/dyn/products/devices.asp?Status=Mature&family_id=607&family_name=AVR%208-Bit%20RISC)
Was für AVRs gibt es?
Die AVR-RISC-Controller sind in drei große Serien aufgeteilt.
Zum einen gibt es die AT90S. Besonders der 90S2313 schien ein sehr beliebter gewesen zu sein. Im Internet findet man sehr viele Anwendungen für diesen Chip.
Gewesen, weil Atmel diese Serie abgekündigt hat und nicht mehr herstellt.
Dennoch kann man sie zum Teil noch kaufen und natürlich auch noch verwenden. Die 90S waren mittelgroße ICs mit denen man schon vieles anfangen konnte. Wer jedoch überlegt Anwendungen zu programmieren die vervielfältigt werden sollen, sollte lieber auch eine der nächsten beiden Serien ausweichen. Es gibt zwar Nachfolger für die 90S, aber eine spätere Anpassung muss man ja nicht unbedingt in Kauf nehmen.
Des weiteren gibt es die Tiny-Serie.
Wie der Name schon vermuten lässt, sind es kleine AVRs, die man aber nicht verachten sollte.
Es gibt sie von ganz klein bis hin zum Niveau der alten 90S. Mit ihnen kann man platzsparend Ladegeräte, kleine Steuerungen und vieles mehr ausbauen.
Die Königsklasse sind die Megas.
Sie bieten umfangreiche Funktionen, viel Speicher und viele I/Os.
Was kann welcher AVR?
Die Funktionen aller AVRs hier aufzulisten würde den Rahmen sprengen. Aber da dieser Teil ein sehr wichtiger Punkt in der Entscheidungsfindung ist wird er nicht zu kurz kommen.
Die eingebauten Funktionen der AVRs sind weitreichend.
Z.B. der kleinste, der Tiny 11 hat folgende Features:
1kb Flash für das Programm
6 I/O Pins
4 Interrupts, davon einen externen
2 Stromsparmoden
1 analogen Eingang
und einen Watchdog der einen Reset auslöst wenn sich das Progamm aufgehängt hat (wünscht man sich bei Microsoft auch ;))
Das würde schonmal reichen um ein kleines Ladegrät zu bauen, oder einen Schwellwertschalter oder ein Codeschloss oder ...
Zum Vergleich ein paar Daten vom Mega128
128kb Flash für das Programm, 4096b SRAM für Variablen und 4096b EEPROM für fest abzuspeichernde Daten (z.B. Messwerte)
53 I/O Pins
34 Interrupts, davon 8 externe
6 Möglichkeiten Strom zu sparen
10 10bit Analoge Eingänge
1 JTAG-Interface um das Progamm im System zu debugen
4 Timer
6+2 Pulsweitenmodulationsausgänge
und noch vieles mehr...
Auf der englischsprachigen Homepage von AVR Freaks (www.avrfreaks.net[/url) kann man sich die wichtigsten Funktionen zum jeweiligen Chip anzeigen lassen.
Ein erstes wichtiges Kriterium ist sicherlich die Größe des Flash-Speichers. Der bestimmt wie groß das Programm werden kann. Mit 1kb wird man nicht auskommen, wenn sein Roboter das sprechen lernen soll. 128kb sind mehr als übertrieben wenn der AVR später abhänig von einem Spannungspegel nur 3 LEDs leuchten lassen soll.
Wichtig ist aber auch Anzahl der verfügbaren Ein- und Ausgänge (I/O). 6 Ausgänge reichen nur selten um eine große Maschine zu steuern und 53 Eingänge sind overdressed wen man nur eine kleine Stromüberwachung bauen will.
Alle AVRs sind hier aufgelistet (http://www.avrfreaks.net/index.php?module=FreaksDevices&func=viewDev).
In der ersten Übersicht sieht man schon wieviel Flash der Chip hat, mit was für Spannungen er arbeitet und mit was für eine Taktrate.
Viele Befehle lassen sich schon im Gegensatz zu Microchips PIC mit nur einem Takt abarbeiten. Das bedeutet das ein AVR mit 16MHz etwa 16.000.000 Befehle pro Sekunde ausführen kann.
Klickt man einen bestimmten AVR in der Liste an, erscheinen weitere Infos. Diese muss man aber zum Teil unten links im Menü erst ausklappen!
Dort stehen dann schonmal relevante Informationen wie I/Os, Anzahl der Timer und PWM-Kanäle, Anzahl der analogen Eingänge (ADC) und einiges mehr.
Oben rechts auf der Seite ist die Anschlussbelegung des ICs.
Einige Funktionen wie Interrupts oder ADCs sind festen Pins zugeordnet. Andere wie RC5-Empfang und senden (ein IR-Fernbedienungscode) oder Soundausgabe können frei zugeordnet werden.
In der Belegung stehen viele Abkürzungen wie ADC, PB0, MISO, INT1, ... Frank hat sich die Mühe gemacht und diese Abkürzungen mal entschlüsselt. Man findet den Artikel hier (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=541).
Viele weitere wichtige und interessante Informationen sind im Artikelforum (https://www.roboternetz.de/phpBB2/artikeluebersicht.php) noch zu finden. Ein Blick dorthin lohnt sicherlich!
Wer jetzt wissen will, was die AVRs sonst noch für Funktionen haben die bis jetzt noch nicht aufgeführt wurden, kan auf der Seite von AVR Freaks entweder oben rechts auf der Seite auf 'Compare Devices' klicken ohne zuvor einen oder mehrere ICs ausgewählt zu haben.
Oder auf die Seite zurückgreifen, die ein anderer User dieses Forum mal mühevoll erstellt hat. Hier der Link (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=593) dazu.
Bei AVR Freaks kann man aber auch die Favoriten die man sich bis jetzt ausgesucht hat ankreuzen und dann unten auf der Seite vergleichen lassen. So sieht man, welcher vielelicht nich doch ein paar Pins mehr hat oder eine zweite serielle Schnittstelle eingebaut hat.
Die Funktionen die verglichen werden sollen kann man selbst wählen. Benötigt man I2C z.B. nicht, muss man es ja auch nicht mit den anderen vergleichen und die Liste dadurch unübersichtlicher machen.
Leider ist das ganze auf englisch und man kann mit einigen Begriffen als Anfänger noch nichts anfangen. Da hilft entweder der Artikel von Frank oder die Suche im Forum.
Die Suche:
Um zur Suche zu gelangen einfach HIER (https://www.roboternetz.de/phpBB2/search.php) klicken. Und es soll jetzt keiner mehr behaupten er hätte den Link nicht gefunden!!!
Fast alles was Probleme bereiten kann wurde hier schonmal besprochen. Man mss sich nur mal die Mühe machen die Artikel durchzuarbeiten.
Um antworten zu finden gibt es mehrere Möglichkeiten.
Entweder ein Suchbegriff eingeben und den im ganzen Forum finden zu lassen. Das hat den Vorteil das viele Treffer erzielt werden, aber auch vieles gefunden wird nach dem man nicht gesucht hat.
Oder man sucht nur in den Unterforen die es betrifft. Was interssiert es einen, das jemand einen Getriebemotor verkaufen will, wenn man sucht wie man die Drehzahl eines Drehstrommotors einstellen kann.
Was die Suchbegriffe angeht muss man etwas phantasie haben und nicht nur ein Wort probieren und dann sagen man hätte nichts gefunden! Z.B. Analog zu Digital Wandlern. Das könnte "ADC" und "ADW" sein.
Welchen AVR brauche ich für meine Anwedung?
Die eigentlich wichtigste Frage habe ich absichtlich zum Schluss gestellt um zu erreichen das alles davor auch gelesen wird.
Wer brav alle Links angeklickt hat wird festgestellt haben das es eine vielzahl von AVRs mit vielen Funktionen gibt. Aber welche braucht man und welche sind nur für wirkliche Freaks?
Das eine sei gesagt, wer sich erstmal mit einem Tiny15 ein Codeschloss gebaut hat, wird erst aufhören wenn der Flash eines Mega128 bis zum Rande gefüllt ist. Man sollte sich also nicht zu viele Tiny26 kaufen wenn man denkt was größeres wird man sowieso nie programmieren. Wenn man erstmal angefangen hat und Freude dran hat wird man sich später auch an größere Projekte rantrauen.
Es gibt drei Hauptkriterien nach denen man sich seinen benötigten AVR aussuchen muss.
Erstmal die Größe des Flashspeichers. Der Speicher nimmt das Programm, das man schreibt auf und setzt die Befehle später im IC um. Je umfangreicher das Projekt, desto mehr Speicher benötigt man. Für ein erste "Hello World" selbst auf einem LCD und nicht nur mit LEDs reicht 1kb. Aber man wird nicht immer mit so wenig Speicher auskommen. Zu anfang sollten es schon AVRs mit 2kb sein um etwas Reserve zu haben. Dann sieht man schon schnell, wieviel Speicher ein Programm benötigt undkann die Größe dann später leichter einschätzen.
Wichtig ist auch die Anzahl der I/Os. Man muss sich schon vorher sehr gut überlegen, was man alles anschliessen will und wieviele Pinsman dafür braucht. Zu anfang ist es vielleicht auch besser, einen etwas größeren AVR zu nehmen als man sich 'ausgerechnet' hat. Man wird feststellen, das sich einiges nicht so lösen lässt wie man es geplant hat.
Aber das wichtigste ist sicherlich der Verfügbarkeit und der Preis. 15€ für ein IC der ein Codeschloss werden soll wenn er groß ist, ist schon teuer wenn man das gleiche mit nur 3€ machen kann.
Und der exotischste AVR bringt nichts, wenn man ihn nirgendwo kaufen kann.
Am Ende des Beitrag werde ich noch eine Linkliste mit Bezugquellen einfügen. Es würde mich freuen, wenn ich weitere Links per PN bekomme. Und evtl auch welche für außerhalb von Deutschland.
Es gibt hier User, die vertreten die Meinung, das man erstmal mit den Tiny anfangen soll und sich dann zu den Mega's vorarbeiten sollte. In meinen Augen macht das absolut keinen Sinn! Besonders dann nicht, wenn man die AVRs mit einer Hochsprache wie C oder Basic programmiert. Alle Funktionen die man nicht haben will programmiert man halt nicht und dann sind sie auch nicht im Weg ;)
Allerdings sollte man klein anfangen. Zuerst per Knopfdruck eine LED leuchten lassen, dann sie vielleicht blinken lassen und später die Blinkgeschwindigkeit per Knopfdruck ändern lassen. Und erst dann dazu übergehen aufwendigere Programm zu schreiben.
Wenn man alles in Assembler programmieren will, ist man gezwungen, das Datenblatt zu studieren. Aber auch dort muss man die Register für Funktionen die man nicht nutzen will ja nicht setzen.
Meiner Meinung nach sollte der erste AVR ein großer Tiny oder ein Mega8 sein, sofern das Geld dafür übrig ist.
Da kann man sich schön dran austoben und alles mal ausprobieren. Sie bieten schon fast alle Möglichkeiten die man später mal verwenden wird. ADC, Timer, ...
Wer aber nur einmal ein Haufen Bauteile bestellen will und nicht erstmal nur antesten wie das geht, sondern gleich den AVR nehmen, den erst später braucht und damit loslegen will, sollte sich folgendes zu Herzen nehmen.
Jeweils 8 Ein- / Ausgänge sind zu einem Port zusammen gefasst. Den Ports ist ein Buchstabe und den Pins jeweils eine Nummer zugeordnet. Gezählt wird ab 0.
Je nach Chip müssen die Buchstaben nicht bei A beginnen und die Zahlen nicht mit 7 enden (was schon alleine wegen der unterschiedlichen Pinzahl nicht möglich ist)
PA0 bis PA7 bezeichnet den kompletten Port A.
Man kann ohne viel Aufwand ein LCD an den AVR anschliessen. Aber! Je exotischer der LCD-Controller, desto aufwendiger die Programmierung!
Text-LCDs mit einem weit verbreiteten HD44780 haben schon viele schnell zum laufen gebracht. Der Vergleichstyp KS.... bedarf etwas Anpassung, und das kann nerven kosten.
Für grafische-LCDs mit einem T6963C-Controller gibt es auch schon fertige Routinen.
Text-LCDs brauchen mindestens 6 Leitungen am AVR. Diese müsste man dann schonmal von seinen freien I/Os abziehen. Es ist aber fast egal, welchen Pin wo ran kommt. Man muss es nur im Programm richtig einstellen.
Bei grafischen-LCDs braucht man schon 14 Leitungen! Und 8 davon belegen einen Port. Und da geht das genaue planen schon los. Bei kleineren AVRs wird man selten eine zusammenhängenden Port finden, weil man von jedem Port bestimmte, feste Funktionen gebrachen kann. Sei es der ADC oder RS232 oder ein Interrupt.
Man sollte sich also gut überlegen, 'was das Teil später mal können soll'.
- Wieviele Taster brauche ich?
- Wieviele Taster müssen unabhänig davon wo das Programm grade steht sofort eine Aktion ausführen können? (z.B. ein Not-Halt für Motoren, wo man warten kann bis das Programm mal grade zufällig den Taster abfragt.) Dafür braucht man externe Interrupts (INT0, INT1, ...)
- Muss ich analoge Spannungen messen (das geht mit den ADCs. Da muss man aber noch die Auflösung beachten. 10 Bit bedeutet eine Auflösung von 1024 Schritte für 5V. 8 Bit 256 Schritte für 5V. Sofern die Betriebsspannung und Referenzspannung auf 5V beträgt.)
- Wieviele analoge Spannungen will ich messen? (Durch Umwege können so auch Ströme gemessen werden.)
- Will ich viele Sensoren abfragen? Wenn ja, ist es dann sinnvoll Sensoren über einen Bus laufen zu lassen? (1Wire, I2C I²C, TWI) Hat der AVR diesen Bus?
- Wieviele Ausgänge brauche ich? Bietet mir der AVR genug I/Os? Wenn nein, kann ich sie multiplexen?
- Was will ichan die Ausgänge anschliessen? LEDs? Motoren? Sollen die nur an/aus kennen oder auch geregelt werden können? (Wenn geregelt wird PWM benötigt. Diese ist entweder fest eingebaut, benötigt aber Timer. Wenn kein Timer mehr frei ist weil der letzte z.B. für Infrarot gebraucht wurde, reicht mir dann Software-PWM?)
- Will/muss ich mehrere AVRs miteinander kommunizieren lassen? Wenn ja, was für einen Bus verwende ich? Wie schnell muss er sein?
- Welche Spannungen stehen mir zur Verfügung? Die 'normalen' AVRs arbeiten idr mit 4,5-5,5V. Es gibt/gab auch Varianten mit 4,0-6,0V. Alle mit einem L abreiten schon ab 2,7V. Haben idr aber nur 8MHz. AVRs die mit V enden haben immerhin schon 10MHz und brauchen minimal nur 1,8V und sind somit für Akkubetriebene Geräte hervorragang geeingnet.
Das soll für heute mal wieder genug sein. In den nächsten Tagen werde ich die Stichpunkt vervollständigen und die Handhabung der Übersicht auf AVR Freaks erläutern.
Bezugsquellen:
Für alle hier genannten URLs gibts leider keine Prämie für mich :( Wer weitere Quellen kennt kann sie gernen mitteilen. Auch die Reihenfolge ist ohne Wertung.
Deutschland
Reichelt Elektronik (www.reichelt.de)
elektro-Nix.de (http://www.elektro-nix.de)
Conrad Elektronik (www.conrad.de)
Österreich
-
-
-
Schweiz
-
-
-
Das ganze soll nur einen kleinen Eindruck vermitteln, an was man denken muss wenn man sich in die Welt der Mikrocontroller begeben will.
Es soll aber nicht abschrecken, auch wenn es auf dem ersten Blick eine Menge Stoff ist.
Was für AVRs gibt es, was können diese und welchen brauche ich?
Vorwort:
Wöchentlich wenn nicht sogar tagtäglich kommt die Frage auf, welcher AVR wieviele Ein- und Ausgänge hat, wieviele Pulsweitenmodulationskanäle, wieviele Analoge Eingänge wieviel Speicher und was man dort reinschreiben kann usw...
Je öfters sowas gefragt wird, desto genervter und kürzer werden die Antworten. Das hat bei einigen die Folge, das die Lust am basteln schnell wieder vergeht. Damit das nicht passiert und die Lust noch weiter steigt möchte ich hier versuchen einen Durchblick durch die vielfältige Welt von Atmels AVR-Serie zu verschaffen.
Vorweg ein paar nicht unwichtige Links:
Die Homepage von Atmel (www.atmel.com)
Der direkte Link zu den Datenblättern (http://www.atmel.com/dyn/products/datasheets.asp?family_id=607)
Der direkte Link zu Datenblättern älterer AVRs (http://www.atmel.com/dyn/products/devices.asp?Status=Mature&family_id=607&family_name=AVR%208-Bit%20RISC)
Was für AVRs gibt es?
Die AVR-RISC-Controller sind in drei große Serien aufgeteilt.
Zum einen gibt es die AT90S. Besonders der 90S2313 schien ein sehr beliebter gewesen zu sein. Im Internet findet man sehr viele Anwendungen für diesen Chip.
Gewesen, weil Atmel diese Serie abgekündigt hat und nicht mehr herstellt.
Dennoch kann man sie zum Teil noch kaufen und natürlich auch noch verwenden. Die 90S waren mittelgroße ICs mit denen man schon vieles anfangen konnte. Wer jedoch überlegt Anwendungen zu programmieren die vervielfältigt werden sollen, sollte lieber auch eine der nächsten beiden Serien ausweichen. Es gibt zwar Nachfolger für die 90S, aber eine spätere Anpassung muss man ja nicht unbedingt in Kauf nehmen.
Des weiteren gibt es die Tiny-Serie.
Wie der Name schon vermuten lässt, sind es kleine AVRs, die man aber nicht verachten sollte.
Es gibt sie von ganz klein bis hin zum Niveau der alten 90S. Mit ihnen kann man platzsparend Ladegeräte, kleine Steuerungen und vieles mehr ausbauen.
Die Königsklasse sind die Megas.
Sie bieten umfangreiche Funktionen, viel Speicher und viele I/Os.
Was kann welcher AVR?
Die Funktionen aller AVRs hier aufzulisten würde den Rahmen sprengen. Aber da dieser Teil ein sehr wichtiger Punkt in der Entscheidungsfindung ist wird er nicht zu kurz kommen.
Die eingebauten Funktionen der AVRs sind weitreichend.
Z.B. der kleinste, der Tiny 11 hat folgende Features:
1kb Flash für das Programm
6 I/O Pins
4 Interrupts, davon einen externen
2 Stromsparmoden
1 analogen Eingang
und einen Watchdog der einen Reset auslöst wenn sich das Progamm aufgehängt hat (wünscht man sich bei Microsoft auch ;))
Das würde schonmal reichen um ein kleines Ladegrät zu bauen, oder einen Schwellwertschalter oder ein Codeschloss oder ...
Zum Vergleich ein paar Daten vom Mega128
128kb Flash für das Programm, 4096b SRAM für Variablen und 4096b EEPROM für fest abzuspeichernde Daten (z.B. Messwerte)
53 I/O Pins
34 Interrupts, davon 8 externe
6 Möglichkeiten Strom zu sparen
10 10bit Analoge Eingänge
1 JTAG-Interface um das Progamm im System zu debugen
4 Timer
6+2 Pulsweitenmodulationsausgänge
und noch vieles mehr...
Auf der englischsprachigen Homepage von AVR Freaks (www.avrfreaks.net[/url) kann man sich die wichtigsten Funktionen zum jeweiligen Chip anzeigen lassen.
Ein erstes wichtiges Kriterium ist sicherlich die Größe des Flash-Speichers. Der bestimmt wie groß das Programm werden kann. Mit 1kb wird man nicht auskommen, wenn sein Roboter das sprechen lernen soll. 128kb sind mehr als übertrieben wenn der AVR später abhänig von einem Spannungspegel nur 3 LEDs leuchten lassen soll.
Wichtig ist aber auch Anzahl der verfügbaren Ein- und Ausgänge (I/O). 6 Ausgänge reichen nur selten um eine große Maschine zu steuern und 53 Eingänge sind overdressed wen man nur eine kleine Stromüberwachung bauen will.
Alle AVRs sind hier aufgelistet (http://www.avrfreaks.net/index.php?module=FreaksDevices&func=viewDev).
In der ersten Übersicht sieht man schon wieviel Flash der Chip hat, mit was für Spannungen er arbeitet und mit was für eine Taktrate.
Viele Befehle lassen sich schon im Gegensatz zu Microchips PIC mit nur einem Takt abarbeiten. Das bedeutet das ein AVR mit 16MHz etwa 16.000.000 Befehle pro Sekunde ausführen kann.
Klickt man einen bestimmten AVR in der Liste an, erscheinen weitere Infos. Diese muss man aber zum Teil unten links im Menü erst ausklappen!
Dort stehen dann schonmal relevante Informationen wie I/Os, Anzahl der Timer und PWM-Kanäle, Anzahl der analogen Eingänge (ADC) und einiges mehr.
Oben rechts auf der Seite ist die Anschlussbelegung des ICs.
Einige Funktionen wie Interrupts oder ADCs sind festen Pins zugeordnet. Andere wie RC5-Empfang und senden (ein IR-Fernbedienungscode) oder Soundausgabe können frei zugeordnet werden.
In der Belegung stehen viele Abkürzungen wie ADC, PB0, MISO, INT1, ... Frank hat sich die Mühe gemacht und diese Abkürzungen mal entschlüsselt. Man findet den Artikel hier (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=541).
Viele weitere wichtige und interessante Informationen sind im Artikelforum (https://www.roboternetz.de/phpBB2/artikeluebersicht.php) noch zu finden. Ein Blick dorthin lohnt sicherlich!
Wer jetzt wissen will, was die AVRs sonst noch für Funktionen haben die bis jetzt noch nicht aufgeführt wurden, kan auf der Seite von AVR Freaks entweder oben rechts auf der Seite auf 'Compare Devices' klicken ohne zuvor einen oder mehrere ICs ausgewählt zu haben.
Oder auf die Seite zurückgreifen, die ein anderer User dieses Forum mal mühevoll erstellt hat. Hier der Link (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=593) dazu.
Bei AVR Freaks kann man aber auch die Favoriten die man sich bis jetzt ausgesucht hat ankreuzen und dann unten auf der Seite vergleichen lassen. So sieht man, welcher vielelicht nich doch ein paar Pins mehr hat oder eine zweite serielle Schnittstelle eingebaut hat.
Die Funktionen die verglichen werden sollen kann man selbst wählen. Benötigt man I2C z.B. nicht, muss man es ja auch nicht mit den anderen vergleichen und die Liste dadurch unübersichtlicher machen.
Leider ist das ganze auf englisch und man kann mit einigen Begriffen als Anfänger noch nichts anfangen. Da hilft entweder der Artikel von Frank oder die Suche im Forum.
Die Suche:
Um zur Suche zu gelangen einfach HIER (https://www.roboternetz.de/phpBB2/search.php) klicken. Und es soll jetzt keiner mehr behaupten er hätte den Link nicht gefunden!!!
Fast alles was Probleme bereiten kann wurde hier schonmal besprochen. Man mss sich nur mal die Mühe machen die Artikel durchzuarbeiten.
Um antworten zu finden gibt es mehrere Möglichkeiten.
Entweder ein Suchbegriff eingeben und den im ganzen Forum finden zu lassen. Das hat den Vorteil das viele Treffer erzielt werden, aber auch vieles gefunden wird nach dem man nicht gesucht hat.
Oder man sucht nur in den Unterforen die es betrifft. Was interssiert es einen, das jemand einen Getriebemotor verkaufen will, wenn man sucht wie man die Drehzahl eines Drehstrommotors einstellen kann.
Was die Suchbegriffe angeht muss man etwas phantasie haben und nicht nur ein Wort probieren und dann sagen man hätte nichts gefunden! Z.B. Analog zu Digital Wandlern. Das könnte "ADC" und "ADW" sein.
Welchen AVR brauche ich für meine Anwedung?
Die eigentlich wichtigste Frage habe ich absichtlich zum Schluss gestellt um zu erreichen das alles davor auch gelesen wird.
Wer brav alle Links angeklickt hat wird festgestellt haben das es eine vielzahl von AVRs mit vielen Funktionen gibt. Aber welche braucht man und welche sind nur für wirkliche Freaks?
Das eine sei gesagt, wer sich erstmal mit einem Tiny15 ein Codeschloss gebaut hat, wird erst aufhören wenn der Flash eines Mega128 bis zum Rande gefüllt ist. Man sollte sich also nicht zu viele Tiny26 kaufen wenn man denkt was größeres wird man sowieso nie programmieren. Wenn man erstmal angefangen hat und Freude dran hat wird man sich später auch an größere Projekte rantrauen.
Es gibt drei Hauptkriterien nach denen man sich seinen benötigten AVR aussuchen muss.
Erstmal die Größe des Flashspeichers. Der Speicher nimmt das Programm, das man schreibt auf und setzt die Befehle später im IC um. Je umfangreicher das Projekt, desto mehr Speicher benötigt man. Für ein erste "Hello World" selbst auf einem LCD und nicht nur mit LEDs reicht 1kb. Aber man wird nicht immer mit so wenig Speicher auskommen. Zu anfang sollten es schon AVRs mit 2kb sein um etwas Reserve zu haben. Dann sieht man schon schnell, wieviel Speicher ein Programm benötigt undkann die Größe dann später leichter einschätzen.
Wichtig ist auch die Anzahl der I/Os. Man muss sich schon vorher sehr gut überlegen, was man alles anschliessen will und wieviele Pinsman dafür braucht. Zu anfang ist es vielleicht auch besser, einen etwas größeren AVR zu nehmen als man sich 'ausgerechnet' hat. Man wird feststellen, das sich einiges nicht so lösen lässt wie man es geplant hat.
Aber das wichtigste ist sicherlich der Verfügbarkeit und der Preis. 15€ für ein IC der ein Codeschloss werden soll wenn er groß ist, ist schon teuer wenn man das gleiche mit nur 3€ machen kann.
Und der exotischste AVR bringt nichts, wenn man ihn nirgendwo kaufen kann.
Am Ende des Beitrag werde ich noch eine Linkliste mit Bezugquellen einfügen. Es würde mich freuen, wenn ich weitere Links per PN bekomme. Und evtl auch welche für außerhalb von Deutschland.
Es gibt hier User, die vertreten die Meinung, das man erstmal mit den Tiny anfangen soll und sich dann zu den Mega's vorarbeiten sollte. In meinen Augen macht das absolut keinen Sinn! Besonders dann nicht, wenn man die AVRs mit einer Hochsprache wie C oder Basic programmiert. Alle Funktionen die man nicht haben will programmiert man halt nicht und dann sind sie auch nicht im Weg ;)
Allerdings sollte man klein anfangen. Zuerst per Knopfdruck eine LED leuchten lassen, dann sie vielleicht blinken lassen und später die Blinkgeschwindigkeit per Knopfdruck ändern lassen. Und erst dann dazu übergehen aufwendigere Programm zu schreiben.
Wenn man alles in Assembler programmieren will, ist man gezwungen, das Datenblatt zu studieren. Aber auch dort muss man die Register für Funktionen die man nicht nutzen will ja nicht setzen.
Meiner Meinung nach sollte der erste AVR ein großer Tiny oder ein Mega8 sein, sofern das Geld dafür übrig ist.
Da kann man sich schön dran austoben und alles mal ausprobieren. Sie bieten schon fast alle Möglichkeiten die man später mal verwenden wird. ADC, Timer, ...
Wer aber nur einmal ein Haufen Bauteile bestellen will und nicht erstmal nur antesten wie das geht, sondern gleich den AVR nehmen, den erst später braucht und damit loslegen will, sollte sich folgendes zu Herzen nehmen.
Jeweils 8 Ein- / Ausgänge sind zu einem Port zusammen gefasst. Den Ports ist ein Buchstabe und den Pins jeweils eine Nummer zugeordnet. Gezählt wird ab 0.
Je nach Chip müssen die Buchstaben nicht bei A beginnen und die Zahlen nicht mit 7 enden (was schon alleine wegen der unterschiedlichen Pinzahl nicht möglich ist)
PA0 bis PA7 bezeichnet den kompletten Port A.
Man kann ohne viel Aufwand ein LCD an den AVR anschliessen. Aber! Je exotischer der LCD-Controller, desto aufwendiger die Programmierung!
Text-LCDs mit einem weit verbreiteten HD44780 haben schon viele schnell zum laufen gebracht. Der Vergleichstyp KS.... bedarf etwas Anpassung, und das kann nerven kosten.
Für grafische-LCDs mit einem T6963C-Controller gibt es auch schon fertige Routinen.
Text-LCDs brauchen mindestens 6 Leitungen am AVR. Diese müsste man dann schonmal von seinen freien I/Os abziehen. Es ist aber fast egal, welchen Pin wo ran kommt. Man muss es nur im Programm richtig einstellen.
Bei grafischen-LCDs braucht man schon 14 Leitungen! Und 8 davon belegen einen Port. Und da geht das genaue planen schon los. Bei kleineren AVRs wird man selten eine zusammenhängenden Port finden, weil man von jedem Port bestimmte, feste Funktionen gebrachen kann. Sei es der ADC oder RS232 oder ein Interrupt.
Man sollte sich also gut überlegen, 'was das Teil später mal können soll'.
- Wieviele Taster brauche ich?
- Wieviele Taster müssen unabhänig davon wo das Programm grade steht sofort eine Aktion ausführen können? (z.B. ein Not-Halt für Motoren, wo man warten kann bis das Programm mal grade zufällig den Taster abfragt.) Dafür braucht man externe Interrupts (INT0, INT1, ...)
- Muss ich analoge Spannungen messen (das geht mit den ADCs. Da muss man aber noch die Auflösung beachten. 10 Bit bedeutet eine Auflösung von 1024 Schritte für 5V. 8 Bit 256 Schritte für 5V. Sofern die Betriebsspannung und Referenzspannung auf 5V beträgt.)
- Wieviele analoge Spannungen will ich messen? (Durch Umwege können so auch Ströme gemessen werden.)
- Will ich viele Sensoren abfragen? Wenn ja, ist es dann sinnvoll Sensoren über einen Bus laufen zu lassen? (1Wire, I2C I²C, TWI) Hat der AVR diesen Bus?
- Wieviele Ausgänge brauche ich? Bietet mir der AVR genug I/Os? Wenn nein, kann ich sie multiplexen?
- Was will ichan die Ausgänge anschliessen? LEDs? Motoren? Sollen die nur an/aus kennen oder auch geregelt werden können? (Wenn geregelt wird PWM benötigt. Diese ist entweder fest eingebaut, benötigt aber Timer. Wenn kein Timer mehr frei ist weil der letzte z.B. für Infrarot gebraucht wurde, reicht mir dann Software-PWM?)
- Will/muss ich mehrere AVRs miteinander kommunizieren lassen? Wenn ja, was für einen Bus verwende ich? Wie schnell muss er sein?
- Welche Spannungen stehen mir zur Verfügung? Die 'normalen' AVRs arbeiten idr mit 4,5-5,5V. Es gibt/gab auch Varianten mit 4,0-6,0V. Alle mit einem L abreiten schon ab 2,7V. Haben idr aber nur 8MHz. AVRs die mit V enden haben immerhin schon 10MHz und brauchen minimal nur 1,8V und sind somit für Akkubetriebene Geräte hervorragang geeingnet.
Das soll für heute mal wieder genug sein. In den nächsten Tagen werde ich die Stichpunkt vervollständigen und die Handhabung der Übersicht auf AVR Freaks erläutern.
Bezugsquellen:
Für alle hier genannten URLs gibts leider keine Prämie für mich :( Wer weitere Quellen kennt kann sie gernen mitteilen. Auch die Reihenfolge ist ohne Wertung.
Deutschland
Reichelt Elektronik (www.reichelt.de)
elektro-Nix.de (http://www.elektro-nix.de)
Conrad Elektronik (www.conrad.de)
Österreich
-
-
-
Schweiz
-
-
-
Das ganze soll nur einen kleinen Eindruck vermitteln, an was man denken muss wenn man sich in die Welt der Mikrocontroller begeben will.
Es soll aber nicht abschrecken, auch wenn es auf dem ersten Blick eine Menge Stoff ist.