Hallo an die Wissenden,
ich mache derzeit meine ersten Gehversuche mit Mikrocontrollern, genauer
gesagt mit einem ATTiny13A, einem Steckbrett, einem einfachen
ISP-Programmer und softwareseitig unter C mit dem Atmel Studio 7.
Meine wichtigsten Informationsquellen sind das Datenblatt und viel
nachlesen im Internet. Das sieht auch schon für meine bescheidenen
Anfänge recht gut aus.
Der nächste Schritt für mich wäre der Anschluß eines einfachen Displays
(diese OLED-Dinger mit 128x64 Pixeln, wie man sie für kleines Geld
kaufen kann).
Ziel ist es, den ADC-Wandler mal experimentell zu erkunden und die
Messwerte direkt auf dem Display anzeigen zu lassen.
Was ich bisher rausgefunden habe: Mein ATTiny13A kann das nicht, ein
ATTiny85 wäre wohl das Minimum.
Jetzt meine Frage: Welche AVRs kommen in Frage? Ich hätte für später
gerne ein paar mehr GPIOs als der ATTINY85 bietet. Was wäre die
nächstgrößere Empfehlung? Bzw. was sind die Kriterien, nach denen ich
entscheiden kann, wenn i2c ins Spiel kommt? Ich würde gerne bei der
kleinstmöglichen MCU bleiben.
Auf der Website
https://en.wikipedia.org/wiki/ATtiny_microcontroller_comparison_chart
steht i2c bei vielen ATtinys dabei, aber ich habe im Internet praktisch
ausschließlich den ATtiny85 für konkrete Beschaltung und Beispiele
finden können. Sind die anderen ATtinies dafür nicht geeignet und falls
ja - warum? Oder geht mein Vorhaben mit allen ATtinies, die in der
Tabelle mit i2c gelistet sind?
Was den Anwendungsfall angeht: Es geht nicht um konkrete Projekte,
sondern ausschließlich um learning by doing für einen Anfänger.
Hallo,
man findet als größer AVR die Familie der atmega328p,(mega48p, mega88p
und mega168p) und der atmega1284p (mega644p, mega324p oder mega164p).
Das sind nur sehr gut beschaffbare und schon länger erhältliche AVRs.
Natürlich hat die Entwicklung weitere AVRs hervor gebracht.
http://www.microchip.com/design-centers/8-bit/avr-mcus
Nicht alle sind einfach über den den Handel preiswert und in kleinen
Mengen beziehbar.
Zum I2C,
ob dies per Hardware unterstützt wird, steht wie immemr im Datenblat des
Herstellers.
Anderen falls, lässt sich I2C auch reil mit Software implementieren.
> Anderen falls, lässt sich I2C auch reil mit Software implementieren.
Auf sowas würde ich als Anfänger gerne erst mal verzichten. Ich bin noch
bei den Grundlagen, eine Implementierung einer Schnittstelle traue ich
mir noch nicht zu.
Hallo,
Noch ist es wichtig zu wissen, dass I2C (Phillips) in der Atmel-Welt
als TWI zu finden ist.
Wie willst Du denn die ATMEL AVR programmieren, konkret mit welcher
Programmiersprache?
Assembler, C, C++, LunaAVR, Pascal, Basic, Forth usw.
Anfänger schrieb:> Auf sowas würde ich als Anfänger gerne erst mal verzichten. Ich bin noch> bei den Grundlagen, eine Implementierung einer Schnittstelle traue ich> mir noch nicht zu.
Das ist nicht schlimm, dazu gibt es Vorlagen.
Anfänger schrieb:> Was den Anwendungsfall angeht: Es geht nicht um konkrete Projekte,> sondern ausschließlich um learning by doing für einen Anfänger.
Nimm einen Arduino Uno, Arduino Nano, oder wenn du später mal
debuggen willst, einen Arduino Mega2560. Die sind untereinander
sehr kompatibel und du brauchst nicht die Arduino IDE benutzen
um mit ihnen zu arbeiten.
Anfänger schrieb:> Ich bin noch> bei den Grundlagen, eine Implementierung einer Schnittstelle traue ich> mir noch nicht zu.
Du musst ja das Rad nicht neu erfinden (ich mache das manchmal)
Hier gibt es eine gute Vorlage:
Beitrag "Re: Soft I2C Master"
Man muss sie nur minimal erweitern für den eigenen Chip den
man ansteuern will.
Danke schonmal für die Antworten.
Zusammengefaßt heißt das - ich kann jeden beliebigen ATtiny nehmen, der
in der Liste
(https://en.wikipedia.org/wiki/ATtiny_microcontroller_comparison_chart)
mit i2c gekennzeichnet ist, wenn ich ein Beispiel für den ATtiny85 nehme
und die Ports entsprechend verdrahte?
Anfänger schrieb:> wenn ich ein Beispiel für den ATtiny85 nehme> und die Ports entsprechend verdrahte?
Sei gewarnt dass dir so ein Tiny sehr bald zu klein wird.
Daher mein Arduino Vorschlag. Nimm was Grösseres!
> Sei gewarnt ... Nimm was Grösseres!
Genau, und warum nicht gleich den größten für das Steckbrett, den
ATmega1284P-PU?
Kostet bei Reichelt gerade mal 4.60 EUR (nanu, letzte Woche waren das
doch noch 3.99?).
> ATTiny13A> ATtiny85
Woher kommt nur bei Anfängern diese Vorliebe für die 8-Pinner? Die sind
doch nur brauchbar, wenn man schon eine konkrete Anwendung in Planung
hat und sicher weiß, dass sie ausreichend sind. Ansonsten sind sie wie
ein zu enger Anzug - man ärgert sich schwarz und gerät ständig ins
Schwitzen.
Woher die Vorliebe für die 8-pinner? Weiß ich auch nicht, aber ich halte
das für schön übersichtlich und für die ersten Gehversuche für
vollkommen ausreichend. D.h. - fast. Ein "14- oder 16-Pinner" wäre mir
lieber.
Deshalb nochmal die Eingangsfrage: Kann ich jeden ATtiny nehmen, der
laut Datenblatt eine i2c-Unterstützung bietet und warum finde ich
praktisch nur Anleitungen für genau den "8-Pinner" ATtiny85 und nicht
für die vielen anderen ATtiny-Typen?
Moin,
Für solche Experimente drängt sich der Arduino Nano auf.
Mega328, der grösste aus der populärsten Familie ab Mega88.
Der hat alle Standard-Peripherie, 16MHz Quarz, 5V Regler (gibts auch in
3,3V), USB-Uart-Wandler, strategische Debug-LED, ISP-Stecker. Alles
fertig und Steckbrettkompatibel.
Den bekommst Du im 5er-Pack vom Chinamann für einen ähnlichen Preis wie
sonst blanke µC bei Reichelt.
Von negativen Erfahrungen mit der Hardware der Nanos aus China liest man
eigentlich nichts. Naja, manchmal ist da der Arduino-Bootloader nicht
drauf aber das kratzt Dich ja nicht.
Der Vorteil der Mega88/168/328 Familie ist, daß sie praktisch alle
Standardregister haben. Alle anderen Controller sind eher als
Spezialisten zu betrachten, also abgespeckt, mit Spezialfunktionen oder
einfach aufgebohrt.
Da würde ich mich am Anfang nicht mit Tinys und ihren Limits oder
irgendeinem Boliden mit 6 Timern quälen.
Wenn Du damit fit bist, kannst Du Dich mit Spezialisten für einen
bestimmten Zweck befassen. Da ist dann mal dies oder das anders aber
alles was sie gemeinsam haben, findest Du genau so in den 88-328.
Gruß,
Norbert
> ... und nicht für die vielen anderen ATtiny-Typen?
Weil die 'i2c-Unterstützung', also die TWI-Handhabung, bei allen AVR8
(nahezu) identisch ist. Und ja, das gilt auch für die ATmega.
S. Landolt schrieb:> Weil die 'i2c-Unterstützung', also die TWI-Handhabung, bei allen AVR8> (nahezu) identisch ist.
Nur der Vollständigkeit halber: Das gilt, solange I2C/TWI nicht in Form
der USI daher kommt. Damit geht es zwar aber es ist ein Albtraum.
Gruß,
Norbert
PS:
Für TWI muss man sich bei den kleinsten AVR8 mit dem 'USI' herumärgern,
wenn man Hardwareunterstützung haben will, das ist etwas lästig - dann
lieber gleich in Software.
Mitlesa schrieb:> Sei gewarnt dass dir so ein Tiny sehr bald zu klein wird.
Hinzu kommt dass mit so einer Display-Lib vielleicht schon bald
das Ende des Tiny-Speichers erreicht wird. Man will ja noch etwas
aussen herum programmieren und nicht nur die Display-Ansteuerung
in den Speicher quetschen. Ich sag jetzt nix mehr ....
Anfänger schrieb:> Der nächste Schritt für mich wäre der Anschluß eines einfachen Displays> (diese OLED-Dinger mit 128x64 Pixeln, wie man sie für kleines Geld> kaufen kann).
Anfänger schrieb:> Zusammengefaßt heißt das - ich kann jeden beliebigen ATtiny nehmen, der> in der Liste
Wer hat dir den Floh mit den ATtinys in den Kopf gesetzt?
Ein ATmega168 als fertig aufgebautes Modul kostet über eBay 1,50€ oder
ein ATmega328 mit USB-Wandler vielleicht 2,50€
Wolfgang schrieb:> Wer hat dir den Floh mit den ATtinys in den Kopf gesetzt?
Ich hab's schon gemerkt, bei Betonköpfen hilft halt einfach
gar überhaupt nix mehr .....
S. Landolt schrieb:> Für TWI muss man sich bei den kleinsten AVR8 mit dem 'USI' herumärgern
Falls dann doch mal echte TWI hardware vorhanden ist, kann die oft nur
den Slave mode.
Manche va. neue Tinys unterstützen zwar auch master, aber viele davon
müssen per UPDI programmiert werden, was nicht jeder Programmer
unterstützt.
Mitlesa schrieb:> Nimm einen ArduinoAnfänger schrieb:> C mit dem Atmel Studio 7
Der TO will seinen µC kennenlernen und OHNE das Arduinoframework
programmieren.
zum abgucken gibts z.B. das hier:
Beitrag "SSD1306/1309 Library zum Darstellen von Text auf OLED Displays"
Wenn das Display im Grafikmode mit Framebuffer betrieben werden soll
braucht der schon 1 kB RAM und Fonts brauchen auch Platz.
Ich würde nicht mal mit einem 8 Bitter ein Display betreiben wollen.
InFo schrieb:> Der TO will seinen µC kennenlernen und OHNE das Arduinoframework> programmieren.
Das kann er mit jedem beliebigen Arduino... . Die lassen sich alle
(soweit mir bekannt) über das Atmel-Studio (und ISP) als "ganz normale
Atmel-MCU" programmieren. Oft Steckbrett-tauglich und mit der
minimal-Beschaltung versehen. Aus meiner Sicht ideal für einen Anfänger
- auch für Steckbrett-Versuche manch etwas Fortgeschrittenen.
InFo schrieb:> Der TO will seinen µC kennenlernen und OHNE das Arduinoframework> programmieren.
Ein Arduino ist eine Hardware mit meist einem ATmega µC drauf, was
kommst du jetzt mit dem Arduino Framework?
Anfänger schrieb:> warum finde ich praktisch nur Anleitungen für genau den "8-Pinner"> ATtiny85 und nicht für die vielen anderen ATtiny-Typen?
Filterblase mit eingebauter Mitkopplung. Wobei hier nicht nur ein
Einzelner gefangen wurde, sondern die Gruppe der Hobby-uC-Programmierer.
Warum findet man überhaupt soviel AVR, es gibt doch uC, die
übersichtlicher und einfacher zu programmieren sind?
Qemu emuliert einen Cortex-M3 von TI (lm3s811), der ist auch nicht
komplexer als ein AVR, aber eben auch nicht viel fähiger. UART und
Display sind in der Emulation auch mit drin.
S. R. schrieb:> Qemu emuliert einen Cortex-M3 von TI (lm3s811), der ist auch nicht> komplexer als ein AVR, aber eben auch nicht viel fähiger. UART und> Display sind in der Emulation auch mit drin
Schön - und ?
Das ist ein übersichtlicher, einfacher Mikrocontroller, der zur
Abwechslung mal kein AVR ist. Und dank großem Adressraum auch einfacher
zu programmieren.
S. R. schrieb:> Das ist ein übersichtlicher, einfacher Mikrocontroller, der zur> Abwechslung mal kein AVR ist.
Habe ich etwas verpasst - das ist ein Emulator - kein MC oder ?
> ... großem Adressraum ...
Es wäre ja schon ein Erfolg, wenn wir den 'Anfänger' von seinem ATtiny85
mit den 8 KiB Flash und 512 Bytes SRAM weggebracht hätten (vom ATtiny13
ganz zu schweigen).
S. Landolt schrieb:> Es wäre ja schon ein Erfolg, wenn wir den 'Anfänger' von seinem ATtiny85> mit den 8 KiB Flash und 512 Bytes SRAM weggebracht hätten (vom ATtiny13> ganz zu schweigen).
Wohin - und zu welchem Zweck?
An dieser Stelle schon mal Danke für die zahlreichen Antworten.
Wie InFo richtig geschrieben hat:
> Der TO will seinen µC kennenlernen
Ich bin der Meinung, daß man erst mal laufen lernen sollte, bevor man
sich an das Rennen wagt - deshab erst mal eine Nummer kleiner.
Und ich werde es jetzt ganz pragmatisch lösen - ich bestelle mir einfach
ein paar verschiedene Typen, sowohl größere ATTinies als auch ein, zwei
Atmegas. Bedenken, daß mir sowas mal zu klein wird, habe ich keine. Ich
bin sehr weit entfernt davon, so ein Ding auch nur ansatzweise
auszureizen.
Es gibt eine Menge Argumente, die für oder gegen den ATTiny sprechen,
wenn Du ihn aber nutzen willst, spricht nichts dagegen.
Schnapp Dir einfach die oben angeführte Liste, der verfügbaren Bausteine
und such Dir einen aus, Deine gewünschte Peripherie hat.
Vereinfacht gilt hier: Ein Einheitskern (was den ATTiny ausmacht) und
eine variierende Peripherie. Also eine unterschiedliche Anzahl an
I/O-Ports und verschiedene Goodies rund-herum.
Ist die Peripherie bekannt so kannst Du die Beispiele auch von anderen
ATTinies verwenden. Ein paar Indexe können allerdings variieren.
Anfänger schrieb:> Jetzt meine Frage: Welche AVRs kommen in Frage?
Das hängt von Speicherbedarf deines Programmes ab. Du kannst ja mal ein
Hello-World Programm mit printf() für den ATtiny85 compilieren und
schauen, wie groß das wird.
1
intmain()
2
{
3
displayinitialisieren
4
printf("Hello World %i",ADC);
5
}
Plane dann noch etwas Reserve für deinen persönlichen Code ein. Da Du
nicht allzu viel vor hast schätze ich, dass du mit weiteren 4kB
auskommen wirst.
> Ich hätte für später gerne ein paar mehr GPIOs als der> ATTINY85 bietet. Was wäre die nächstgrößere Empfehlung?
ATtiny841. Ich würde aber gleich einen ATmega328P nehmen, falls der
nicht zu groß ist. Eventuell in Form eines "Arduino Nano compatible"
Modul.
> Bzw. was sind die Kriterien, nach denen ich> entscheiden kann, wenn i2c ins Spiel kommt?
I²C ist nicht kritisch, das kann man notfalls durch eine
Software-Routine emulieren.
> Auf der Website ... steht i2c bei vielen ATtinys dabei, aber> ich habe im Internet praktisch ausschließlich den ATtiny85 für> konkrete Beschaltung und Beispiele finden können.
Das liegt daran, dass die meisten Bastler entweder einen 8 Pinner als
Minimal-Lösung verwenden wenn es besonders klein werden soll, oder
gleich auf einen wesentlich größeren Wechseln.
Die "Arduino Nano compatible" Module bieten sich zum Experimentieren an,
weil sie einen USB-UART, Quarz und ISP-Stecker mit drauf haben. Und sie
passen auf Steckbretter ebenso, wie auf Lochraster-Platinen.
Bei der Wahl solltest du berücksichtigen, dass nicht alle ATtinies eine
Debugger Schnittstelle (Debug Wire, DW) haben. Debugger können bei der
Fehlersuche extrem hilfreich sein, denn damit kannst du quasi in den
Chip hinein schauen und sehen, was er gerade macht. Der ATtiny26 hat zum
Beispiel keine, der ATtiny261 aber schon.
Wenn du auf einem großen AVR das Programm fertig hast, kannst du in
einem zweiten Schritt immer noch auf einen kleineren AVR wechseln. In
der Regel muss man nur wenige Zeilen anpassen, wenn das Programm
ordentlich strukturiert ist. Du weißt dann auch, wie viele Pins und
Speicher benötigt werden.
Anfänger schrieb:> Bedenken, daß mir sowas mal zu klein wird, habe ich keine. Ich> bin sehr weit entfernt davon, so ein Ding auch nur ansatzweise> auszureizen.
Wir schon. Sehr sogar.
Mitlesa schrieb:> Hinzu kommt dass mit so einer Display-Lib vielleicht schon bald> das Ende des Tiny-Speichers erreicht wird. Man will ja noch etwas> aussen herum programmieren und nicht nur die Display-Ansteuerung> in den Speicher quetschen.
Wenn du es jetzt noch nicht kapiert hast dann muss ich leider
den dringenden Troll-Verdacht aussprechen.
Anfänger schrieb:
> Bedenken, daß mir sowas mal zu klein wird, habe ich keine. Ich> bin sehr weit entfernt davon, so ein Ding auch nur ansatzweise> auszureizen.
Wir schon. Sehr sogar.
Mein Name ist Programm. Ich mache das einzig und allein als reines Hobby
in der Freizeit, einfach, weil es mich interessiert und Spaß macht. Da
habe ich natürlich ganz andere "Anforderungen" als die Profis.
> Das liegt daran, dass die meisten Bastler entweder einen 8 Pinner als> Minimal-Lösung verwenden wenn es besonders klein werden soll, oder> gleich auf einen wesentlich größeren Wechseln.
Danke, das könnte das mit dem ATTiny85 erklären.
> Die "Arduino Nano compatible" Module bieten sich zum Experimentieren an,> weil sie einen USB-UART, Quarz und ISP-Stecker mit drauf haben. Und sie> passen auf Steckbretter ebenso, wie auf Lochraster-Platinen.
Ich habe meine Anregungen vorwiegend aus dem Buch von Stefan Frings
(hier im Forum gefunden) - "Einstieg in die Elektronik mit
Mikrocontrollern" (Band 1). Ich hielt mich zunächst sehr eng an das
Buch, aber inzwischen schweife ich ab und fange an, selbst zu
experimentieren. Genau das ist es, was für mich den Reiz ausmacht.
Natürlich kann und will ich mich nicht mit den Profis vergleichen,
deshalb auch lieber erst mal ganz klein anfangen. Die Ratschläge mit
"nimm lieber gleich was richtiges" sind für mich erst mal nicht
zielführend, weil ich die "richtigen" sowieso nicht mal im Ansatz nutzen
würde.
Wie gesagt - ich stehe noch am Anfang und habe auch nur eine
dementsprechende Ausstattung. Meine "Programmierplatine" ist Marke
Eigenbau exakt nach dem Buch, das reicht mir auch völlig aus. Aber jetzt
glaube ich, daß ich einen Schritt in Richtung "nächste Größe" gehen
kann.
Anfänger schrieb:> Ich hielt mich zunächst sehr eng an das Buch, aber inzwischen schweife> ich ab
Guter Weg, bleibe dabei. Das Forum hier hat seine eigenen Regeln und
macht dich nur kirre.
Stefanus F. schrieb:> ATtiny841.
Super Scheissidee. Das ist ein Spezialist mit viel Kommunikation aber
z.B. keinem ADC.
Was soll der Quatsch?
Ein Nano ist genau richtig.
Gruß,
Norbert
Stefanus F. schrieb:> ATtiny261
Nächste Scheissidee.
Schau Dir mal die PCI-Register genau an. Das tut man sich nur an, wenn
man die 6 PWM-Ausgänge braucht. (Welche allerdings ziemlich geil sind,
wenn man es im Griff hat)
Die PCI-Register sind da total zerwürfelt, das sollte sich ein Anfänger
nicht wirklich antun.
Gruß,
Norbert
Norbert S. schrieb:> Stefanus F. schrieb:>> ATtiny841.> Super Scheissidee. Das ist ein Spezialist mit viel Kommunikation aber> z.B. keinem ADC.> Was soll der Quatsch?
Da habe ich gepennt. Ohne ADC hätte ich den nicht vorschlagen sollen.
Was soll überhaupt der AVR Quatsch. Nimm was moderneres und ärgere dich
nicht mit dem alten scheiss rum.
Beim AVR ist der Weg das Ziel. Das geht heute viel einfacher, pnp, keine
teueren Adapter, kein verfusen!
Anfänger schrieb:> Ich habe meine Anregungen vorwiegend aus dem Buch von Stefan Frings> (hier im Forum gefunden) - "Einstieg in die Elektronik mit> Mikrocontrollern" (Band 1).
Da habe ich einen ganz heißen Tipp für dich: Auf den letzten Seiten des
Buches findest du eine Auflistung von AVR Mikrocontrollern, die man im
DIP Gehäuse kaufen kann. Da steht auch, wie viele analogen Eingänge sie
haben, und welche das von Dir gewünschte TWI Interface haben.
Meine Meinung zum TWI Interface ist allerdings, dass es nicht einfacher
zu handhaben ist, als eine selbst geschriebene Software-Emulation.
Dieser ominöse Stefan (kenn ich den? -:) ) hat in seinem Buch Kapitel
12.2 Quelltext für die TWI Schnittstelle veröffentlicht.
In diesem Arduino Projekt
(http://stefanfrings.de/esp8266/WIFI-Kit-8-Test2.zip) findest du C++
Code, um so ein Display über eine per Software emulierte I²C
Schnittstelle anzusteuern. Von dort kannst du abgucken.
Finger weg schrieb:> Beim AVR ist der Weg das Ziel.
Das sehe ich anders. Und wenn schon? Bei einem Hobby ist eigentlich
immer der Weg das Ziel.
> Das geht heute viel einfacher, pnp, keine teueren Adapter
Programmieradapter für AVR bekommt man ab 1,50 Euro inclusive
Versandkosten. Abgesehen davon, hat der TO bereits einen.
> kein verfusen!
Man kann AVR Mikrocontroller auch ohne herumfummeln an den Fuses
sinnvoll einsetzen. Bei mehr als der Hälfte der Modelle kann man sogar
die Taktfrequenz per Software ändern. Außerdem passiert Dir das mit dem
Verfusen höchstens zwei mal, wenn du zurechnungsfähig bist. Diese
Übungen hat der TO bereits an einem 90 Cent Controller hinter sich.
"der Anschluß eines einfachen Displays (diese OLED-Dinger mit 128x64
Pixeln, wie man sie für kleines Geld kaufen kann)."
Das ist doch nicht einfach. Nimm ein normales Text-LCD.
Tiny2313, tiny4313 sollten Deine Favoriten zu Anfang sein.
MfG
Dieter F. schrieb:>> Das ist ein übersichtlicher, einfacher Mikrocontroller, der zur>> Abwechslung mal kein AVR ist.>> Habe ich etwas verpasst - das ist ein Emulator - kein MC oder ?
Völlig überraschend emuliert der Emulator einen real existierenden
Mikrocontroller, den man sogar kaufen kann. Stell dir vor.
Was ich damit ausdrücken wollte, nachdem du mich so vollständig
absichtlich missverstehen wolltest: Es gibt auch wenig komplexe
Mikrocontroller jenseits von AVR. Zum Beispiel den LM3S811 von TI (64 KB
Flash, 8 KB RAM, Cortex-M3). Der wird sogar von Qemu emuliert (inklusive
I2C-Display).
Verstehst du jetzt, was ich von dir wollte?
Norbert S. schrieb:>> ATtiny261> Nächste Scheissidee. Schau Dir mal die PCI-Register genau an.
Meinst du die Pin-Change Interrupts?
Falls dich diese Pillepalle erschreckt, solltest du vielleicht besser
was ganz anderes machen, als µC zu programmieren. Für die oben genannte
Aufgabe benötigt der TO keine Pin Change Interrupts.
Ich hoffe, du meinst etwas anderes.
Stefanus F. schrieb:> Meinst du die Pin-Change Interrupts?>> Falls dich diese Pillepalle erschreckt, solltest du vielleicht besser> was ganz anderes machen, als µC zu programmieren. Für die oben genannte> Aufgabe benötigt der TO keine Pin Change Interrupts.>> Ich hoffe, du meinst etwas anderes.
Doch, genau das meinte ich.
Du willst doch nicht behaupten, daß die PCI-Register bei den 261-861
kein Problem sind? Schau mal ganz genau ins Datenblatt.
Das ist komplett anders als üblich, ein paar Bits sind per Default
gesetzt usw..
Ich komme damit klar und ich brauche die 6 PWM-Ausgänge aber das sollte
man keinem Anfänger empfehlen.
Warum zum Teufel sollte er einen TinyX61 nehmen?
Da hat man auch gleich den Spaß mit der USI.
Läuft alles, USI als TWI-Slave, 3-Phasen PWM mit Deadtime. Das kann das
Ding aber bitte nicht für Anfänger!
Gruß,
Norbert
Norbert S. schrieb:> Das (Pin Change Interrupts) ist komplett anders als üblich,> ein paar Bits sind per Default gesetzt usw..
Finde ich nicht schlimm. Wenn man nicht nur eine µC Serie programmiert,
gewöhnt man sich daran, immer das jeweilige Datenblatt zu Rate zu
ziehen.
Im 32bit Umfeld kämpft man mit ganz anderen Sachen. Schau Dir mal die
I²C Schnittstelle vom STM32F103 und die dazugehörige Application Note
an. Oder dessen USB Interface. Dann darfst du gerne kotzen.
> Da hat man auch gleich den Spaß mit der USI.
Die USI Schnittstelle finde ich auch ätzend.
Peter schrieb:> Hallo Stefanus> Hast du dir mal den SAM D21 und I2C angesehen? Finde ich fast einfach.
Nein habe ich nicht. Ich sehe, dass Conrad ein Evaluation Kit mit Namen
ATSAMD21-XPRO hat. Ziemlich teuer und unhandlich für den Einbau in eine
Bastelei, finde ich.
Da sind mir Module im Format des Arduino Nanos sympathischer. Mehr Pins
brauche ich ohnehin nur selten.
Stefanus F. schrieb:> Norbert S. schrieb:>> Das (Pin Change Interrupts) ist komplett anders als üblich,>> ein paar Bits sind per Default gesetzt usw..>> Finde ich nicht schlimm. Wenn man nicht nur eine µC Serie programmiert,> gewöhnt man sich daran, immer das jeweilige Datenblatt zu Rate zu> ziehen.>> Im 32bit Umfeld kämpft man mit ganz anderen Sachen. Schau Dir mal die> I²C Schnittstelle vom STM32F103 und die dazugehörige Application Note> an. Oder dessen USB Interface. Dann darfst du gerne kotzen.
Moin,
Daß mal was anders ist mag ja ok sein aber bei den X61 ist die
Bezeichnung der PCI-Register teilweise wirklich unlogisch und daß da
(einige, nicht alle!) Bits per default gesetzt sind ist auch sehr
überraschend.
Daß das bei 32bittern alles noch viel schlimmer sein kann glaube ich
gerne aber das ist doch keine Entschuldigung.
Wenn man von den M88-328 kommt sind vieleicht mal die Timer anders, der
WDT und so Zeug aber dann sind das andere Features, mehr oder weniger
Modi usw.. Aber so komisch anders wie die PCI bei den X61 habe ich bei
den AVR8 sonst noch nicht erlebt. Das ist auch in sich unlogisch. Im
Datenblatt liest sich das fast wie ein C&P-Fehler.
Wie auch immer, einen Anfänger sollte man nicht gleich in diese Richtung
schubsen. Die x61 braucht man nur, wenn man die PWM zwingend braucht.
Sonst sind die Dinger nur Mist.
Wenn man auf den 88-328 lernt, also einem Nano, dann ist das wie VW-Golf
als Fahrschulwagen. Alles da, wo man es erwartet. Bei allen anderen
Autos ist das meiste auch so. Details weichen ab aber so grob bleibt das
Prinzip. Was allen gemeinsam ist, ist im Golf komplett so abgebildet.
Auf einem Auto zu lernen, bei dem die Handbremse ein Fußpedal ist und
der Scheibenwischer mit Knöppen auf dem Armaturenbrett bedient wird ist
eben nicht sinnvoll.
Wenn der Hobbybastler dann irgendwnn mit dem M328 auf dem Nano an
Grenzen stösst, kann er sich immer noch umsehen. Dann ist er aber auch
fit genug, um die Fallen beim Umstieg zu meistern.
Gruß,
Norbert
> einen Anfänger sollte man nicht gleich in diese Richtung schubsen.
Hat ja auch keiner gemacht. Der ATtiny261 wurde nur im Vergleich zum
ATtiny26 genannt und zu zeigen, dass nicht alle Modelle einen Debug Wire
Pin haben.
Empfohlen wurde der ATmega328.
Du hast Recht, das Teil kostet so ca 58 Euro. es handelt sich um das
Emtwicklungsboard des Herstellers, also original. Es gibt noch ein parr
zusätzliche Platinen dazu. Egal.
Habe mir bei Rodenhausen eine Platine mit dem SAM D21 geholt, da kostet
es ca. 25 Euro. Noch ein paar Steckerleisten dazu und es kann losgehen.
Es ist aufwendiger und braucht noch ein paar zusätzliche Teile. Einen
Arduino packst du aus und los geht es. Kann aber die kastrierte
Programmierung nicht leiden. Mache alles mit C
Peter
Peter schrieb:> Kann aber die kastrierte> Programmierung nicht leiden. Mache alles mit C
Ich benutze inzwischen nur Arduino(-Klone), habe aber die Arduino-IDE
noch nie angefasst. Funktionierende Hardware in der Hand zu haben macht
vieles einfacher, und AVR ist mir trotz allem sympathisch.
Schade das du jeden Thread enterst und nur Geschwafel schreibst:
Beitrag "Re: Welcher Microcontroller für i2c-Display"
Aber du bestätigst, dass die avr alte Kamellen sind. Und das die Dinger
einfach abzuschießen sind, verfusen.
Also ist der beste Tipp: Nimm einen modernen uC und lass die Finger von
dem alten Scheiss. Die Zeit der avr ist vorbei.
Norbert S. schrieb:> Wenn der Hobbybastler dann irgendwnn mit dem M328 auf dem Nano an> Grenzen stösst, kann er sich immer noch umsehen.
Ich lese immer Nano - für Anwendungen ohne Arduino-IDE scheint mir
doch der Pro-Mini passender. Einen AT328 mit Quarz dran und einem
Spannungsreglerchen davor bekommt man nicht billiger hin, von der
Bauform her passt auch der sehr gut in die Lochrasterplatte.
Im Gegensatz zum Nano kann man den ProMini sinnvoll schlafen legen, weil
eben kein USB-Interface drauf ist. Ich nutze beide, allerdings mit der
A*-IDE.
Peter schrieb:> Ich nutze auch den Atmega 1284p. Der hat genug Platz für mich
Wenn ich etwas baue, mache ich zuerst die Mechanik, Gehäuse, Display,
Taster ..., bevor auch nur ein einziges Bauteil auf der Lochrasterkarte
ist. Dann kommt die Elektronikhardware, bevor ich beginne, die Software
zu schreiben - einfach "über den dicken Daumen geguckt", dass es schon
passen wird.
So begab es sich, dass die Hardware komplett fertig war, als Hirn ein
A*-Nano drin und der Compiler "135%" Speicherbedarf meldete :-(
Ja, hätte ich es erahnt, hätte ich einen A*-Mega-Clone draufgepackt.
Umbau unmöglich, also anderer Weg: Ich schaue mal, wie beschissen ich
denn eigentlich programmiert habe! Ich werfe redundante Programmteile
weg und rufe mit Parametern auf, ich ermittele den Platzbedarf
verschiedener Variablentypen und und und - das Gerät ist seit ein paar
Monaten in Betrieb, der Speicher vom AT328 genügt und ich habe viel
dabei gelernt!
Wenn nun der TO 'Anfänger' mit kleinen AT-Tinys loslegt, wird er
sicherlich auch vor die Wand fahren, weil die Hardware knapp wird. Das
kann er umgehen, indem er mit einem größeren µC losmacht. Es bietet ihm
aber auch die Chance, von Anfang an zu lernen, effektiv zu programmieren
- welchen dieser beiden Wege soll man ihm nun empfehlen?
Manfred schrieb:> welchen dieser beiden Wege soll man ihm nun empfehlen?
Den Führerschein der Klasse B macht man üblicherweise auf einem Auto der
Mittelklasse, nicht auf einem Trabant oder einem Porsche. Aus gutem
Grund.
S. R. schrieb:> Manfred schrieb:>> welchen dieser beiden Wege soll man ihm nun empfehlen?>> Den Führerschein der Klasse B macht man üblicherweise auf einem Auto der> Mittelklasse, nicht auf einem Trabant oder einem Porsche. Aus gutem Grund.
Also empfehlen wir einen AT-168?
Den Auto-Vergleich sehe ich hier leider nicht als passend, der Umstieg
auf ein größeres Fahrzeug bei mangelnder Erfahrung birgt ein erhebliches
Risiko. Ein größerer / schnellerer µC rechnet dann eben schneller, aber
bringt meine Schaltung nicht um.
Peter schrieb:> Einen Arduino packst du aus und los geht es. Kann aber die kastrierte> Programmierung nicht leiden. Mache alles mit C
Was hindert dich daran, ein Arduino Board in C zu programmieren?
Auf den Boards sind ganz normale Atmel Prozessoren drauf und den
Bootloader darf man, wenn er einem nicht passt, überschreiben.
Anfänger schrieb:> Der nächste Schritt für mich wäre der Anschluß eines einfachen Displays> (diese OLED-Dinger mit 128x64 Pixeln, wie man sie für kleines Geld> kaufen kann).
Es gibt nicht das eine OLED. Daher immer den konkreten Typ oder besser
einen Link auf das Datenblatt posten.
Ein Grafidisplay überfordert den ATtiny13 völlig, Du brauchst viel Platz
für Schriftarten. Selbst mit 8kB Flash (Attiny85) ist kaum mehr als ein
5*7 Font drin. Da kannst Du auch gleich ein Textdisplay nehmen.
Manfred schrieb:>>> welchen dieser beiden Wege soll man ihm nun empfehlen?>>>> Den Führerschein der Klasse B macht man üblicherweise auf>> einem Auto der Mittelklasse, nicht auf einem Trabant oder>> einem Porsche. Aus gutem Grund.>> Also empfehlen wir einen AT-168?
Den wirst du schwerlich irgendwo finden. Auch 286er sind sowohl
unpassend wie historisch. Den Führerschein macht man schließlich auch
nicht auf einem Ford Model T.
> Den Auto-Vergleich sehe ich hier leider nicht als passend, der Umstieg> auf ein größeres Fahrzeug bei mangelnder Erfahrung birgt ein erhebliches> Risiko.
Ich wollte damit ausdrücken, dass ein Atmega328p eine gute Balance ist.
Es ist nicht der größte AVR (mit dem man verschwenderisch umgehen
würde), es ist nicht der kleinste AVR (mit dem man ständig gegen Wände
rennt) und es ist nicht der seltsamste AVR.
> Ein größerer / schnellerer µC rechnet dann eben schneller, aber> bringt meine Schaltung nicht um.
Innerhalb der AVR-Klasse sind die Rechenleistungen alle ziemlich gleich.
Ein Atmega328p ist nicht schneller oder langsamer als ein Atmega88 oder
Atmega1284p, und auch nur geringfügig schneller als ein Attiny (dank
HW-Multiplizierer).
Einen anderen Mikrocontroller-Typen (z.B. ARM) bekommst du in die
gleiche Schaltung vermutlich nicht rein, die sind hier aber auch nicht
Thema.
Warum eigentlich unbedingt mit dem kleinsten MCU beginnen? Also ich gehe
seit jeher so vor, dass ich eher zum Größten (oder eine Stufe darunter)
greife und damit anfange ein Projekt umzusetzen. Wenn ich dann
abschätzen kann, mit wieviel Speicher/SRAM/Pins/etc. bzw. Peripherie ich
auskomme, steige ich bei Bedarf auf einen entsprechend kleineren,
ausreichenden MCU um. Den Code, in C, muss man dafür oft ja nur
geringfügig anpassen. Wobei ich mich momentan auch eher weg von AVR hin
zu ARM bewege. So ein SAM D21 kostet im Vergleich zu einem z.B.
mega328PB in etwa dasselbe und man macht damit einen ersten Schritt in
die (u.U. durchaus komplexe) "moderne" ARM-Welt.
Wenn ATtiny, dann bitte einen mit modernerem Kern, z.B. einen 1616er.
Der bringt hardwareseitig echtes UART, I2C und SPI mit (die alten haben
ja oft nur ihr seltsames USI) und den gibt es als 20-SOIC - noch nicht
zu groß und relativ einfach auf ein entsprechendes Breakout-Board
(SOIC-zu-DIP) gelötet kann man ihn gut auf dem Steckbrett einsetzen. Die
externe Beschaltung hält sich auch sehr in Grenzen, man braucht nur den
üblichen Abblockkondensator an VCC, einen externen Taktgeber benötigt
man für einfache Sachen nicht unbedingt. Der Pullup für den Reset ist
bereits integriert. Einziger Nachteil ist die zwingende Programmierung
über die UPDI-Schnittstelle. Das können noch nicht so viele OSS-Adapter.
Wenn man aufs Debugging verzichten kann, reicht aber u.U. schon ein
USB-UART-Umsetzer und Python-Skript (pyupdi, mit Anpassung) aus.
Florian S. schrieb:> Warum eigentlich unbedingt mit dem kleinsten MCU beginnen? Also ich gehe
Ich fühle mich wohler, mit kleinen Brötchen zu beginnen. Je weniger
Features und Pins das Ding hat, umso sicherer fühle ich mich am Anfang.
Direkt danach habe ich dann ganz ohne Probleme einen ATmega644
verwendet.
Die Unterschiede zwischen den ATmega und ATtiny Modellen sind gering.
Man könnte sagen: Wenn du einen kennst, kennst du alle.
Wegen der wenigen Pins sind in einer realen Schaltung die Debugging
Möglichkeiten beim ATtiny13 recht beschränkt. Aber bei den ersten
Versuchen freue ich mich schon, eine LED blinken zu lassen und einen
einzigen Eingang abzufragen. Dafür reicht es dann doch (incl.
Debugging).
Im Nachhinein denke ich, dass ich ebenso gut z.B. mit einem Arduino Nano
Modul hätte anfangen können. Damals gab es die aber noch nicht im Laden
vor Ort, und im Versand hatte ich nur selten Bauteile eingekauft. Auch
das hat sich in den letzten 10 Jahren drastisch verändert.
Die Diskussion AVR versus 32bit halte ich an dieser Stelle für
unangebracht, dafür gibt es genug eigene Threads. Der TO hat sich für
AVR entschieden und das ist ganz sicher kein Griff ins Klo. Man kann sie
problemlos kaufen, sie funktionieren tadellos, sie sind preisgünstig und
die Entwicklungstools dazu sogar kostenlos.
Es wird immer irgendwelche "besseren" Controller geben. Auch dein
zweifellos guter SAMD21 ist nicht das ultimative Maß aller Dinge.
Stefanus F. schrieb:> Ich fühle mich wohler, mit kleinen Brötchen zu beginnen. Je weniger> Features und Pins das Ding hat, umso sicherer fühle ich mich am Anfang.
Das gilt gerade bei den AVR8 eigentlich eher nicht. Hier ist es
sicherlich am einfachsten, mit einem üppig ausgestatteten Mega zu
beginnen, wenn auch nicht unbedingt mit den allergrößten. Ideal wäre
meiner Meinung nach der 644/644P. Da hat der Anfänger einerseits erst
mal lange Zeit Ruhe vor Resourcenmangel, andererseits braucht er sich
aber auch noch nicht mit den Spezifika "übergrößer" ;o) Speicherbereiche
rumzuschlagen. Und er kann so ziemlich alles an Peripherie ausprobieren,
was es bei einem AVR8 üblicherweise so gibt. Er muss es aber nicht. Wenn
er irgendwas davon noch nicht benutzt, bleibt's halt einfach tot und
stört nicht weiter (bekannteste und wohl auch einzige Ausnahme von
dieser Regel: die paar JTAG-Pins an PortC).
> Wegen der wenigen Pins sind in einer realen Schaltung die Debugging> Möglichkeiten beim ATtiny13 recht beschränkt.
Der Mangel an Pins macht nicht nur das Debugging schwieriger, sondern
generell das Anbinden von Hardware. Gerade, wenn einer nicht nur keine
Ahnung von der AVR8-Programmierung hat, sondern außerdem auch nicht
gerade erfahren bezüglich des Elektronik-Designs ist, was ihm eigentlich
erst ermöglichen würde, z.B. die ISP-Pins zu sharen. Und ohne die
bleiben beim Tiny13 nur noch zwei GPIOs. Damit kann man dann endgültig
nicht mehr wirklich viel anfangen...
Nö, der Tiny13 ist sicher nicht das, was ich einem Anfänger empfehlen
würde.
c-hater schrieb:> Nö, der Tiny13 ist sicher nicht das, was ich einem Anfänger empfehlen> würde.
Volle Zustimmung!
Der gut gemeinte Rat "fang erstmal klein an!" ist hier gründlich daneben
gegangen.
Mit Klein ist nicht die Bauform gemeint!
Florian S. schrieb:> Warum eigentlich unbedingt mit dem kleinsten MCU beginnen? Also ich gehe> seit jeher so vor, dass ich eher zum Größten (oder eine Stufe darunter)> greife und damit anfange ein Projekt umzusetzen.
Ich empfehle einen Mittelwert, um ein Gefühl für Größe,
Leistungsfähigkeit und Projektbedarf zu bekommen. Wenn man direkt mit
der Oberklasse anfängt, kann man sich relativ schnell in eine Ecke
manövrieren, aus der man nur schwer wieder herauskommt - oder sich
unnütze Probleme aufhalsen.
Ein m328p (oder m644p) ist eine angemessene Einstiegsgröße und dank
vielen Arduino-Projekten kann man auch die (als Anfänger erreichbare)
Leistungsfähigkeit besser abschätzen. Zudem gibt's Boards billig en
masse zu kaufen.
Finger weg schrieb:> Interessant, es gibt nur ARM oder AVR?
Natürlich nicht, aber für diese sind zahlreiche Evaluation Kits und
Boards für Endverbraucher preisgünstig bis billig verfügbar. Außerdem
gibt es zahlreiche Präsentationen von Hobbyprojekten mit AVR, von denen
sich andere Hobbyelektroniker inspirieren lassen.
Das ist so ähnlich, wie bei Whatsapp. Kaum jemand nutzt die
Alternativen, obwohl sie auch gut sind.
> Ihr lebt in einer sehr kleinen Welt. :'(
Na und, ist das etwa schlecht? Der Mikrocontroller ist Mittel zum Zweck,
nicht der Weg. Wenn ich mit einem einzigen auskäme, was wäre daran
falsch, nur einen einzigen zu verwenden?
Wenn ich im Supermarkt Margarine kaufe, ist mir auch egal, dass sie nur
eine Sorte haben, solange diese gut ist.
Anfänger schrieb:> ich mache derzeit meine ersten Gehversuche mit Mikrocontrollern, genauer> gesagt mit einem ATTiny13A, einem Steckbrett, einem einfachen> ISP-Programmer und softwareseitig unter C mit dem Atmel Studio 7.
Hmm. Das Sprichwort vom "klein anfangen" sollte man besser korrigieren
in "einfach anfangen".
Also:
Wenn dein Atmelstudio gut funktioniert, du damit auch zurecht kommst und
dein Programmiergeschirre dazu paßt und funktioniert, dann ist das OK
und du kannst dabei erstmal bleiben.
Ich selber habe für kleinere Dinge bislang PIC's genommen, da geht
manches ganz anders - und sonst bei µC der ARM-Riege nehme und empfehle
ich bevorzugt solche, die man über einen fest eingebauten Bootlader
programmiern kann, weil dadurch das Programmiergeschirre wesentlich
vereinfacht ist. Die Alternative wäre JTAG/SWD und das bedeutet
spezielle Adapter, die entweder teuer Geld kosten oder auf bestimmte
µC-Sorten eingeschränkt sind oder mit Lizenzproblemen behaftet sind oder
in der Benutzung wackelig und hakelig sind, so daß man entweder zahlen
darf oder sich mit der Programmiersoftware herumschlagen muß, bis es
passabel läuft.
Wenn du dir nun schon die Atmel-AVR's ausgesucht hast, dann wähle dir
eine Sorte, die pin- und inhaltsmäßig im Mittelfeld liegt.
Und fange nicht als allererstes mit einem Grafik-OLED an, sondern fange
an mit einem klassischen 2 zeiligen Alpha-LCD und mit einer seriellen
verbindung zum PC.
Du mußt nämlich auch erstmal lernen, deine noch zu erfindende Firmware
strukturiert aufzubauen und nicht zu allererst wild drauflos zu
programmieren.
W.S.
Finger weg schrieb:> Interessant, es gibt nur ARM oder AVR?> Ihr lebt in einer sehr kleinen Welt. :'(
Ob AVR, PIC oder 8051 ist relativ egal.
Ich bevorzuge AVR (kenne die PICs aber kaum).
Ob ARM, MIPS32 oder Renesas ist relativ egal.
Dort ist ARM aber am weitesten verbreitet.
Habe ich (außer MSP430) noch irgendwas Relevantes vergessen?
Hallo,
Stefanus F. schrieb:>> Da hat man auch gleich den Spaß mit der USI.>> Die USI Schnittstelle finde ich auch ätzend.
Darf ich mal fragen warum?
rhf
Roland F. schrieb:>>> Da hat man auch gleich den Spaß mit der USI.>> Die USI Schnittstelle finde ich auch ätzend.> Darf ich mal fragen warum?
Weil sie im Grunde genommen nur aus einem Schieberegister besteht.
Daraus wird erst mit Software eine vollwertige serielle Schnittstelle.
Man muss in der ISR einiges "zu Fuß" programmieren, was sonst die
Hardware von alleine macht.
Stefanus F. schrieb:> Weil sie im Grunde genommen nur aus einem Schieberegister besteht.
Das ist sicher eine Tatsache. Zumindest, wenn man mal die
OD-Pincontrolle in der TWI-Betriebsart außen vor läßt. Und die
Möglichkeit, den Takt direkt in Hardware von einem Timer serviert zu
bekommen.
> Daraus wird erst mit Software eine vollwertige serielle Schnittstelle.
Ja, klar: Deswegen auch das U in USI. Die Hardware unterstützt alles
denkbare soweit, wie es halt in einer universellen
Hardware-Implementierung möglich ist.
> Man muss in der ISR einiges "zu Fuß" programmieren, was sonst die> Hardware von alleine macht.
Oh Schreck, oh Grausen. Man muß tatsächlich selber etwas
programmieren...
Ich lach' mich tot. Was sind das nur für "Programierer"?
c-hater schrieb:> Ich lach' mich tot. Was sind das nur für "Programierer"?
Je mehr die Software machen muss, umso aufwändiger ist die
Programmierung und umso mehr Performance kostet das. Man muss bei
Verwendung der USI auch sehr vorsichtig mit dem (temporären) Sperren von
Interrupts umgehen, damit das Timing nicht versaut wird.
Ich habe nicht gesagt, dass es unmöglich ist. Aber wer die USI toll
findet, der sollte auch C toll finden, meinst du nicht?
Moin,
Ich musste die USI bisher nur als I2C/TWI-Slave nutzen und das ist ein
ziemliches Gefrickel.
Als Uart mag das gehen aber warum haben wir das dann nicht gemacht? Der
Gegenpart war ein AVR8-Bolide (Mega2560 oder 1) und jetzt ein STM32,
daran kann es nicht gelegen haben.
Vielleicht war das noch ekliger. Egal, ich mache einen Bogen drum wenn
es geht.
Gruß,
Norbert
Ich möchte einmal resumieren (auch wenn der TO schon lange nichts mehr
geschrieben hat):
Er wollte (ursprünglich) auf einem ATiny13, dann auf einem ATtiny85 per
I2C ein OLED Display mit 128x64 Pixeln ansprechen, einen ADC auslesen
und diesen Wert auf dem Display anzeigen.
Tatsache ist, dass es nicht so wirklich geschickt ist mit den kleinsten
der kleinen anzufangen, aber er wollte ja auch den Chip klein halten
(ich denke mal er meinte die äußeren Abmessungen) und wahrscheinlich
wollte er keinen SMD Baustein verwenden (dann wäre wohl die
Standardaussage, einen ATmega48-328 zu nehmen, wohl wirklich nicht
schlecht).
In Abmessungen klein wäre ein STM8S103 (der aber als SMD und müßte erst
noch auf einen Adapter gelötet werden)... aber es soll ja AVR sein (und
prinzipiell nicht wirklich schlecht, weil es sehr große Unterstützung im
Netz gibt und der kostenfreie AVR-GCC Compiler von einer sehr guten
Qualität ist).
Wenn er also wenig Pins mag, aber dennoch ein paar mehr GPIOS und es AVR
sein soll:
ATTiny44
Das USI (egal was oben geschrieben ist), ist wirklich zum abgewöhnen.
Und ja, ich hab das schon programmiert... als UART. Eine I2C
Implementation habe ich mir gespart und das mittels Bitbanging gemacht.
Für ein 128x64 OLED reicht es jedenfalls, zumindest als Textdisplay
(Grafik ist aufgrund des sehr geringen RAMS nicht oder nur sehr
eingeschränkt machbar.
Der ATtiny44 hat:
DIP14 oder SOIC14 Gehäuse (schnuckelig klein)
4 kByte Flash
256 Byte RAM
256 Byte EEProm
10 Bit
läuft bei internem Taktgeber mit 8MHz
kostet bei Reichelt 1,15 Eur (DIP14) oder 0,62 Eur (SOIC14)
Aus China gibts das 5er Pack in SMD für 2,86 EUR
https://www.ebay.de/itm/5PCS-New-Original-ATTINY44A-SSU-SOP-14-IC/201539508026?epid=1504665788&hash=item2eecb0d73a:g:c1wAAOSwr7ZW4pLa
(Hab ich jetzt einfach mal bestellt, sollte mir bei meinem Basteltrieb
den ich jetzt im Kopf habe mein einziger verfügbarer Tiny44 zerstört
werden)
Hat, wenn man den Resetpin nicht als GPIO verwendet (was man nicht tun
sollte, da dann kein ISP-Flashen mehr geht) bei internem Takt noch 11
GPIO's übrig. Hiervon würden 2 für das I2C des Displays benötigt werden
wonach nach Adam Riese 9 GPIOs zur freien Verfügung, wobei 8 davon als
analoge Eingänge verwendet werden können (wenn bspw. PB0 und PB1 für ein
Bitbanging I2C verwendet werden könnten).
Opfert man 2 weitere GPIOs, könnte man daran auch ein OLED Display mit
SPI-Interface anschließen (und sich dann, wenn es denn sein muß auch
noch einmal mit dem USI beschäftigen).
Die Aussage dass auf einem Tiny der Font des Displays zuviel Speicher
fressen würde stimmt nur bedingt:
Auf diesem Display ist ein 8x8 Font noch gut lesbar. Geht man davon aus,
dass man die Ascii Zeichen 0-31 wegläßt und mit dem Leerzeichen (Ascii
32) bis Ascii 127 den Zeichensatz abbildet, hat man 96 Zeichen zu je 8
Byte was einen Speicherbedarf von 768 Bytes für den Zeichensatz
bedeutet.
Ein Programm hat also noch mehr als 3 kByte zur Verfügung.
Reicht der Flash-Speicher nicht, kann auf den ATtiny84 mit 8 kByte Flash
umgestiegen werden (der dann auch 512 Byte Ram anstelle von 256 Byte
hat, was aber immer noch nicht für den Grafikbetrieb reicht).
----------------------------------------------------
Am We werde ich mich mal dran setzen und sehen, wie gut so etwas
implementierbar ist.
Ralph S. schrieb:> Am We werde ich mich mal dran setzen und sehen, wie gut so etwas> implementierbar ist.
Meine Library für ein OLED-Display mit SSD1306 oder SH1106 Controller
braucht incl. Font weniger als 2 kByte Flashspeicher im Textmode. Sollte
also eigentlich auch für ein Attiny44 noch gut gehen.
http://www.github.com/Sylaina/OLED-Display/
> Das ist so ähnlich, wie bei Whatsapp. Kaum jemand nutzt die Alternativen, obwohl
sie auch gut sind.
Nö, what's App ist einfach bedienbar. Ein avr im Vergleich mit modernen
uCs nicht. Der AVR hat zuviele unnötige Stolperfallen.
M. K. schrieb:> Meine Library für ein OLED-Display mit SSD1306 oder SH1106 Controller> braucht incl. Font weniger als 2 kByte Flashspeicher im Textmode. Sollte> also eigentlich auch für ein Attiny44 noch gut gehen.
Smile, Dankeschön, ich kenne deine .c *.h Software. Ich hatte hier zuvor
meine eigene veröffentlicht gehabt (für STM8) die, zugegebenerweise,
irgendwie wenig Beachtung fand. Ich werde mich für die Versuche daraus
bedienen und bspw. die Grafikfähigkeiten natürlich strippen.
Prinzipiell glaube ich nicht, dass das für einen Tiny44 lange dauern
wird (es sei denn, ich will unbedingt I2C mit USI machen - irgendwann
hatte ich das mal gemacht gehabt für einen 2313, muß ich sehen, ob ich
das in meinem Datenwust wieder finde).
S. R. schrieb:> Ob ARM, MIPS32 oder Renesas ist relativ egal.> Dort ist ARM aber am weitesten verbreitet.>> Habe ich (außer MSP430) noch irgendwas Relevantes vergessen?
Auf jeden Fall alles von Motorola aka Freescale aka NXP. Die
UARTs/SPIs/ADCs/... der 8-Bitter sind wirklich übersichtlich und machen
genau, was man erwartet.
Peter D. schrieb:> Womit programmiert man die?> Gibt es da was zum selber bauen?
Als Compiler für die 8051 verwende ich den SDCC. Es gibt von Nuvoton ein
paar Beispielprogramme für die Keil IDE, die habe ich mir angepasst. Als
IDE habe ich momentan die MCU_8051_IDE. Die verpackt mir den
SDCC-Compiler und erleichtert somit das compilieren. Den FLASH schreibe
ich mit einem Programmer von Nuvoton, den gab es mal recht günstig.
Debugging mache ich im Moment nur über eine serieller Schnittstelle die
praktischerweise auf der Programmierleitung liegt.
Einen Programmer kann man sich imho auch aus den Demo-Boards
rausbrechen.
https://en.wikipedia.org/wiki/MCU_8051_IDEhttps://en.wikipedia.org/wiki/Small_Device_C_Compilerhttps://github.com/OpenNuvoton/N76E003-BSPhttps://direct.nuvoton.com/de/nu-link-pro
... der Nuvoton hört sich (extrem) interessant an (aus nostalgischen
Gründen... irgendwie habe ich den MCS51 Core immer gemocht).
Das Datenblatt jedoch gibt nichts darüber her, wie das Teil programmiert
wird... und einen Programmer habe ich schlicht nicht gefunden.
Ralph S. schrieb:> Das Datenblatt jedoch gibt nichts darüber her, wie das Teil programmiert> wird... und einen Programmer habe ich schlicht nicht gefunden
Einen Programmer habe ich gerade oben verlinkt, der nu-link-pro. Weiter
kannst du auch ein Developer-Board schlachten. Programmiert wird über
die 3 Leitungen SDA[P1.6],SCL[P0.2],Reset[P2.0].
stromverdichter schrieb:> Einen Programmer habe ich gerade oben verlinkt, der nu-link-pro.
Ui, der ist ganz schön teuer bis der hier wäre... Für mich nicht
einsehbar, warum im Datenblatt nichts davon steht, wie der geflasht
wird, aus einem AVR oder ein STM32 könnte man sicherlich einen Flasher
machen wenn man die Infos hätte... schade.
Zum eigentlichen Thread: Hab ich mich hingesetzt und für den Tiny44 das
OLED-Display implementiert (mittels Bitbanging I2C), dem Tiny44 mittels
USI Uart und SPI beigebracht und meine eigene, rudimenträre printf
Funktion (die kein float kann, aber einen "neuen" Formater bekommen hat:
%k. Der zeigt eine Dezimalzahl an - wie %d - nur, dass an einer
wählbaren Stelle ein Punkt eingefügt wird, sodass auf einer Anzeige eine
Festkommazahl darstellbar ist).
ADC-Funktion ist ebenfalls implementiert.
Und weil ich dabei bin, wird auch noch ein N5110 SPI-Display
implementiert. Wenn ich alles beschrieben hab, kann ich das bei Bedarf
hier (oder in Projekte & Code) als "Miniframework" einstellen.
Irgendwie hatte das mit der mickrigen MCU Charme (und mein gerade erst
fertig gestelltes Flashershield war auch im Einsatz)
PS: das Demoprogramm, dass den Spannungswert (ueber einen
Spannungsteiler) einliest, in einen Spannungswert umrechnet und diesen
via "kastriertem" printf auf dem OLED anzeigt ist 3389 Bytes groß.
Smile, mann hätte also noch gut 700 weitere Bytes um das zu erweitern.
Norbert S. schrieb:> Moin,>> Der.Fragesteller.ist.Anfänger>> Alles schön und gut aber was soll er damit?> I2C per Bitbanging? Ganz klasse für den Anfänger.>> Gruß,> Norbert
... und warum nicht? I2C werde ich mit USI wohl doch noch machen, aber
immer Sinn macht das nicht.
Bitbanging ist immer dann gut, wenn man das erste mal einen neuen Chip
evaluiert. In diesem Falle hier hab ich ein I2C Busscanner gemacht, der
mir die Busbelegung mittels UART mitgeteilt hat ... und hierfür war dann
das USI schon belegt.
Beides gleichzeitig geht mit USI nicht.
Außerdem: für einen Anfänger ist doch die Schnittstelle wichtig (hier
zum OLED) und nicht, wie die Schnittstelle mit dem Device kommuniziert.
Ein Anfänger sieht nicht ob ein OLED_init() über Hardware I2C oder
Software I2C ausgeführt wird. Er verwendet init, clrscr, gotoxy, putchar
etc.
Ralph S. schrieb:> Außerdem: für einen Anfänger ist doch die Schnittstelle wichtig (hier> zum OLED) und nicht, wie die Schnittstelle mit dem Device kommuniziert.
Das sehe ich genau anders herum. Da muss er sich um nix kümmern und das
ist für den lernenden Anfänger zielführend? Wohl kaum.
Per Bitbanging rappelt die Software da herum, mit echter Hardware kann
das im Hintergrund per Interrupts laufen.
Kann man machen aber da kommt der Tiny schnell an die Grenzen wenn es
ums Timing geht und das Problem wird mit einem STM32 beworfen, der
schafft das dann ja. Der Anfänger weiß ja gar nicht, daß ihm das
Bitbanging das Timing versaut.
Dabei würde es ein moderater Mega mit I2C Hardware auch locker machen.
Nicht immer, das ist klar. Aber oft. Das geht auch mit der USI als
TWI-Slave aber das ist einfach eklig.
Gruß,
Norbert
Ralph S. schrieb:> PS: das Demoprogramm, dass den Spannungswert (ueber einen> Spannungsteiler) einliest, in einen Spannungswert umrechnet und diesen> via "kastriertem" printf auf dem OLED anzeigt ist 3389 Bytes groß.>> Smile, mann hätte also noch gut 700 weitere Bytes um das zu erweitern.
Das finde ich grad spannend. Mir mangelt es aktuell so dermaßen an Zeit,
wäre am Programm als Bleistift aber dennoch interessiert. Ich will ja
schon seit geraumer Zeit meine Lib erweitern sodass sie auch am
Attiny45/85 nutzbar ist. Vielleicht schau ich mir was ab ;)
Norbert S. schrieb:> Alles schön und gut aber was soll er damit?> I2C per Bitbanging? Ganz klasse für den Anfänger.
Das ist überhaupt kein Problem. Das Protokoll ist nicht sehr kompliziert
und man sollte sich ohnehin damit befassen.
> Da muss er sich um nix kümmern
Doch, er muss das TWI Interface programmieren. Und das ist weitaus
komplexer, als zwei I/O Pins "zu Fuß" zu steuern.
> Der Anfänger weiß ja gar nicht, daß ihm das Bitbanging das Timing versaut.
I²C darf man beliebig langsam betreiben. Ich kann Dir mit 100%
Sicherheit bestätigen, dass auch dieses Display mit "versautem" Timing
gar kein Problem hat.
Ich habe I²C genau auf diese Weite (allerdings mit einem A/D Wandler)
kennen gelernt. Zwei LED's dran, und schon kann man es im Debugger schön
langsam durchsteppen.
Im übrigen nutzen sogar viele kommerzielle Produkte Bitbanging, obwohl
der µC passende Hardware-Interface hat. Ein prominentes Beispiel ist zum
Beispiel der Computer von Lego Mindstorms NXT.
Norbert S. schrieb:> ist für den lernenden Anfänger zielführend?
Genau das ist die Frage! Ich bin auch Ausbilder und es ist immer die
Überlegung, was schon vorgefertigt ist und auf was didaktisch aufgebaut
werden kann um dann das vorgefertigte zu verstehen.
Ich erinnere mich noch sehr genau (wir reden von 1979) wie damals in
Maschinencode mit einem Z80 ein serielles Protokoll realisiert wurde,
nur um später einen 8250 an diesen anzukoppeln.
Als Philipps dann I2C herausgebracht hatte, war das ein 80C31 (Werkzeug
war ein EProm Emulator) und da hast du dann grundlegend gelernt (weil
selbstgemacht) was Startcondition, Stopcondition und das Ack ist. Das
war dann sehr sehr hilfreich als es erste Chips gab, die das in Hardware
konnten und du wußtest relativ schnell, was die Register der Hardware
bewirken.
Heute kannst du mittels DMA den Hardware-I2C befeuern und in deinem
Hauptprogramm steht dann nur drin: "Send via DMA und I2C". Lerneffekt ?
In der Lehre mußte ich einen LM741 mit BC107 Transistoren nachbauen
(würde heute sicherlich niemand mehr tun), der Lerneffekt und das
Verständnis für Verstärker (auch für Endstufen) war enorm.
Wie weiter oben schon geschrieben wurde: Ein ATtiny ist für einen
Einsteiger / Anfänger sicherlich nicht die beste Wahl und eignet sich
für kleine spezialisierte Aufgaben bei denen du die Software ganz
speziell auf dein Problem zuschneidest (und meist alles ohne
irgendwelche vorgefertigten Softwaremodule).
@sylaina:
M. K. schrieb:> Ich will ja> schon seit geraumer Zeit meine Lib erweitern sodass sie auch am> Attiny45/85 nutzbar ist.
Ich glaube nicht, dass du von meiner Lösung viel abgucken kannst, ich
kenne deine Lösung und sie ist, prinzipbedingt, deiner ähnlich. Meine
Initialisierung ist anderst und ich habe nichts integriert, was bspw.
den Kontrast einstellen kann. In Ermangelung von RAM habe ich sämtliches
grafisches weggelassen und meinen in anderen Controllern benutzten
Framebuffer dann ebenfalls.
Im besten Fall wäre für dich für die Ausgabe noch das my_printf
interessant welches in der derzeitigen Ausführung ca. 700 Byte vom
Codespeicher benötigt oder die von my_printf benutzte Funktion putint,
die einen Integer mit einfügbarem Komma bereitstellt und sehr sehr
schmal ist (ich glaube es waren ca. 120 Byte).
Ich werde mal das, was ich habe in ein Archiv packen und dir den Link
zum Herunterladen schicken.
Stefanus F. schrieb:> I²C darf man beliebig langsam betreiben
...wenn man der alleinige Master ist.
Dann (und nur dann) ist I2C tatsächlich trivial und auch timingmäßig
völlig unkritisch, da muss man sich eher darum kümmern, dass nix zu
schnell passiert.
Aber bei der vom TO gegebenen Aufgabe wäre ja tatsächlich das "single
master szenario" anzunehmen. Also kein Problem für eine Implementierung
in Software. Sinnvollerweise timer-driven state machine. Damit sicher
nix zu schnell passiert.
c-hater schrieb:>> I²C darf man beliebig langsam betreiben> ...wenn man der alleinige Master ist.
Du darfst es auch dann beliebig langsam betreiben, wenn du nicht der
alleinige Master bist. Die anderen Master müssen dann halt beliebig
lange warten - was je nach Anwendungsfall auch akzeptabel ist.
c-hater schrieb:> Damit sicher> nix zu schnell passiert.
... ich bin ja dabei das mit USI zu implementieren. Läuft aber noch
nicht so ganz korrekt. Wieviel schneller es werden wird, werde ich
sehen...
@sylaina:
Das was ich bisher jetzt für den T44 gemacht hab kannst in Projekte &
Code gucken... also Displays und das printf ist dort schon verfügbar
Anfänger schrieb:> Jetzt meine Frage: Welche AVRs kommen in Frage?
Die Frage wurde bereits deutlich genug beantwortet:
Atmega328p
Atmega1284p
Ein Attiny geht auch, ist aber eher ungeeignet. Der TO will das aber so
und des Menschen Wille ist nunmal sein Himmelreich. Auch wenn es nach
Kloake stinkt, zu warm ist und eklig suppt.