-         

Ergebnis 1 bis 9 von 9

Thema: Teststrecke für ATMega-Prozessoren nach White_Fox (Version 2)

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    954

    Teststrecke für ATMega-Prozessoren nach White_Fox (Version 2)

    Anzeige

    Hallo

    Da immer mal wieder User anfragen wie man am Besten mit Programmieren anfängt möchte ich hier mal ein von mir entworfenes Entwicklerwerkzeug vorstellen. Ich habe diese Platine ursprünglich mal entwickelt um meine eigenen Programmierfähigkeiten zu erweitern auch ohne gleich ein konkretes Projekt dafür zu haben. Möglicherweise teilt der ein oder andere User meine Anforderungen, daher stelle ich meine Arbeit mal hier rein.
    Gleich vorweg: Ich habe das Thema EMV von Anfang an leider etwas vernachlässigt. Der Gedanke kam mir erst, nachdem ich das Allermeiste bereits fertig gelötet habe. Ich habe es allerdings trotzdem vorläufig so gelassen, der Controller läuft dadrin bisher ganz anständig. Sollte es mir mal Probleme bereiten (vielliecht beim ADW) werde ich es möglicherweise mal überarbeiten.

    Die Platine enthält:
    • Auswahl zwischen 3,3V oder 5V Spannungsversorgung
    • 8x LED
    • 8x Taster (hardwareentprellt)
    • LCD (2x16 Zeichen), steckbar
    • Hintergrundbeleuchtung des LCDs abschaltbar
    • 3 Potis zur analogen Spannungsmessung
    • Auswahl (Betriebsspannung oder externe Quelle) der analogen Referenzspannung
    • Reset-Taster
    • steckbare Quarze
    • über Zusatzplatinen zum Aufstecken nach Belieben erweiterbar (auch mit Controllern mit anderer Pinbelegung)
    • für Erweiterungen stehen alle Spannugnen (3,3V; 5V sowie die externe Versorgungsspannung) zum Abgriff bereit
    • abgreifbares Taktsignal für Controller mit Taktgenerator (z.B. Diamex All-AVR)


    Unterstützte Controller:
    • ATMega164
    • ATMega324
    • ATMega644
    • ATMega1284
    • Sonstige pinkompatible


    Mit einer entsprechenden Zusatzplatine können natürlich auch andere Controller mit anderen Pinbelegungen und anderen Gehäusen verwendet werden.

    Ein paar Hinweise zu einzelnen Komponenten:

    LCD:
    Aufgrund von Erfahrung mit einer früheren Version habe ich das LCD per Wannenstecker und passender Buchsenleiste steckbar ausgeführt um es besser austauschen zu können. Außerdem kann man den Stecker auch noch für andere Dinge verwenden. Wer will kann es ja trotzdem festlöten. In der Anleitung sind beide Versionen enthalten, die Lötvorlagen sind ansonsten völlig identisch.
    Damit ihr Lötfehler in eurem eigenen Nachbau ausschliessen könnt werde ich euch aber noch eine Hex-Datei nachliefern. Wer ein anderes LCD als das von mir verbaute verwenden will, beachte unbedingt die Pin-Belegung.
    Die Hintergrundbeleuchtung des LCDs kann man per Jumper ab- oder zuschalten. Wer will kann diese somit Dimmen, aber auch gegebenenfalls den Strombedarf reduzieren. Oder einfach abschalten weil das Licht einen stört...
    Die Position der Anschlussbuchsen ist übrigens bewusst so gewählt, dass sie mit einer kleinen Steckerplatte schnell an PortC /PortA angeschlossen werden können. Das ist praktisch und geht schnell, sollte man jedoch unbedingt diese Pins für etwas anderes brauchen, so kann man ja immer noch mit kleinen Kabeln rumhantieren.

    LCD-Controller:
    In einer früheren Version dieses Boards vor etwa zwei Jahren habe ich das gleiche LCD verwendet und festgestellt, dass kein HD44780 verbaut wurde (wie in vielen Tutorials angegeben), sondern ein KS0066U von Samsung. Tatsächlich haben damals auch nur Programme nach KS0066U-Standard funktioniert.
    Bei meinem aktuellen LCD in diesem Board stelle ich fest, dass der KS0066U-Standard nicht mehr funktioiert. Dafür aber der HD44780-Standard.
    Sollte dsa LCD also die kooperation verweigern, einfach mal die Initialisierungsroutinen des jeweils anderen Controllertyps ausprobieren.

    Taster:
    Die Taster sind, wie bereits beschrieben, über einen Tiefpass entprellt. LOW-Pegel = Taster ist gedrückt, HIGH-Pegel = Taster ist nicht gedrückt. Ich weiß dass manchem diese Art der Entprellung überhaupt nicht zusagt, allerdings hat sich dies bisher in meinen Schaltungen recht gut bewährt. Klar kann man Taster auch softwareseitig entprellen. Allerdings kann ich mir, im Gegensatz zu so mancher Firma, für 30 Cent Kondensatoren und Widerstände leisten. Und ich programmiere AVRs bevorzugt in ASM, und ich habe einfach keine Lust für sowas Banales wie Tastendrückerei lauter Flankenvergleiche und Wartezeiten zu programmieren. Bei einem guten Benutzerinterface ist der Controller sowieso den allergrößten Teil der Zeit damit beschäftigt, dem Menschen den Status Quo kund zutun, da muß das nicht auch noch sein.
    Da in anderen Foren selbst so ein profanes Thema in den Stand einer Glaubensfrage mit Ansätzen zum Sektierertum erhoben wird, verzeiht mir bitte diesen Exkurs.

    Spannungen:
    Das LCD wird konstant mit 5V versorgt, ebenso die HGB des LCDs (mit Vorwiderstand natürlich). In der Lötvorlage sind dies übrigens die grün markierten Leitungen. Die Versorgungsspannung des Controllers wird einfach über eine Steckbrücke ausgewählt. Die Referenzspannung für die Potis ist standardmäßig die Betriebsspannung des Controllers. Um eine externe Spannung zu benutzen muß die entsprechende Brücke entfernt werden, siehe Abbildung.
    Wenn ihr einen Kühlkörper montiert so achtet unbedingt darauf, dass die Anschlussfähnchen der beiden Spannungsregler nicht auf demselben Potential liegen. Das bedeutet: wenn ihr eine leitfähige Verbindung zwischen die Befestigungslöcher der beiden TO220-ICs bringt, produziert ihr einen Kurzschluss am LM317. Entweder ihr nehmt also zwei getrennte Kühlkörper, oder ihr macht es so wie ich und legt zwischen Kühlkörper und Spannungsregler ein Stück Wärmeleitmatte und befestigt den Kühlkörper mit einer Kunsstoffschraube.

    Noch ein Hinweis zum Löten:
    Die Grundbeschaltung des AVRs (Stützkondensatoren, Pullup-Widerstand an der Resetleitung, Programmierleitungen usw.) ist im Sockel untergebracht. Ich wollte den Platz an dieser Stelle möglichst optimal ausnutzen, und am Computer gestaltet sich so ein Layout weitaus einfacher als das spätere praktische Fertigen.
    In der Anleitung sind mehrere Detailansichten dieses Teils enthalten. Ich empfehle, mit diesem Teil zu beginnen und erst danach alles andere zu Löten. Wenn die Spannungsversorgung und die Grundbeschaltung des AVRs steht,sollet kurz einen AVR reinstecken und kurz testen. Wenn ihr die Controllersignatur auslesen könnte habt ihr gewonnen-wenn dies nicht gelingt solltet ihr euer Werk nochmal mit der Lötvorlage vergleichen.

    AVR-Board mit LCD:
    Klicke auf die Grafik für eine größere Ansicht

Name:	AVR-Board von White_Fox c.jpg
Hits:	119
Größe:	85,8 KB
ID:	29011

    Und ohne LCD:
    Klicke auf die Grafik für eine größere Ansicht

Name:	AVR-Board von White_Fox a.jpg
Hits:	67
Größe:	91,3 KB
ID:	29012

    Die Anleitung enthält:
    -Schaltplan
    -Lötvorlage in Farbe mit Röntgenblick
    -Lötvorlage SW
    -Lötvorlage SW mit markierten Potenzialen (grün für 5V, rot für Betriebsspannung, blau für Masse)
    -ausführliche Detailansichten des Layouts im Sockelbereich
    -Materialliste

    Download: Bauanleitung AVR-Board.pdf
    Geändert von White_Fox (12.09.2014 um 15:43 Uhr)

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.552
    Na da hast Du ja wirklich viel Arbeit reingesteckt!

    ... unbedingt zu beachten, dass das LCD KEIN HD44780-Controller hat ...
    Schade, könnte das für Anfänger vielleicht suboptimal sein? Denn vielen Bibliotheken liegen gerade die anderen Typen zugrunde. Die sind auch so ne Art Standard geworden ?

    ... vorweg: Ich habe das Thema EMV ... etwas vernachlässigt ... Eine PDF mit der Anleitung folgt gleich ...
    Anfänger sollten meines Erachtens schon zu Beginn mit nem Schaltplan anfangen (können) - eine wichtige Orientierungshilfe. Wenn der noch eine möglichst übersichtliche Schaltung präsentiert, ist dem Anfänger bestimmt optimal geholfen. Deshalb finde ich den RN-W issen-Artikel zu Einstieg_leicht_gemacht so gut!
    Ciao sagt der JoeamBerg

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    954
    Schade, könnte das für Anfänger vielleicht suboptimal sein? Denn vielen Bibliotheken liegen gerade die anderen Typen zugrunde. Die sind auch so ne Art Standard geworden ?
    Wenn man es nicht weiß, dann auf jeden Fall. Ich habe über eine Woche frustriert versucht, den entsprechenden Tutorial-Teil auf nem ATMega8 umzusetzen und bin genau diesem Problem aufgesessen. Du glaubst nicht wie wahnsinnig sowas machen kann.

    Deshalb auch "wenn man es nicht weiß". Im Datenblatt ist die Initialisierung des Controllers sehr gut beschrieben, und auch Anfänger, die zumindest den Code verstanden haben (und das ist eigentlich nicht schwer) sollten damit recht schnell in der Lage sein das LCD zum Laufen zu kriegen. Die Initialisierung unterscheidet sich nur geringfügig von der des HD44780, andere Zeiten und vielleicht ist das Bitmuster an einer Stelle noch anders.

    Ansonsten denke ich, ist die Platine auch für Anfänger gut dokumentiert. Was darin enthalten ist habe ich gerade im Eingangspost eingetragen.

    Leider ist die PDF jetzt zum Hochladen zu groß! Mist...
    Geändert von White_Fox (06.09.2014 um 16:55 Uhr)

  4. #4
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.989
    Blog-Einträge
    1

    Idee

    Zitat Zitat von White_Fox Beitrag anzeigen

    Leider ist die PDF jetzt zum Hochladen zu groß! Mist...

    So große 11 MB PDF´s können normalerweise nur unsere Premium-User hochladen (siehe http://www.roboternetz.de/community/...mitgliedschaft ). Irgendwie muss ja Speicherplatz finanziert werden!
    Aber ich mach mal ne Ausnahme, weil du dir so viel Mühe gemacht hast! Versuch es also noch einmal!
    Mit bestem Gruß
    Frank

    Admin Roboternetz.de - RN-Wissen.de - Elektronik-Blog

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    954
    Danke Frank.
    Die PDF ist jetzt drin.

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    954

    LCD-Funktionstest .hex-Datei (ATMega644)

    Die .hex-Datei zum Test des LCDs für einen ATMega644.

    Das LCD ist dazu an die Pins C0-C3 (Daten) sowie A5-A7 des Controllers anzuschliessen, die Pins des LCDs befinden sich genau gegenüber denenen des Controllers.

    Am Besten schneidet ihr euch ein paar Stück Lochrasterplatine zurecht (zweimal 3x4 Löcher und einmal 3x3 Löcher, so könnt ihr das LCD sowohl im 4- als auch im 8-Bitmodus betreiben und schnell wechseln) zurecht. Daraus baut ihr euch einfach ein paar Steckbrücken, indem ihr die Lötseite der Platinenstückchen nach oben dreht, sodaß ihr eine IC-Adapterleiste (sowas hier) von unten reinstecken und von der Oberseite aus festlöten könnt. Die gegenüberliegenden per Drahtbrücke verbinden-fertig.

    LCD-Test 4-Bit ATMega644.hex

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    954

    Steuerroutinen für das LCD (TC1602E-01 von Pollin) - 8-Bit

    So, liebe Forengemeinde

    Ich habe über die Feiertage mal etwas Zeit gehabt und ein paar Steuerroutinen für das LCD auf diesem Board geschrieben. Natürlich könnt ihr die Codeschnipsel auch in anderen Projekten nutzen.

    Auch wenn es einige User verpönen, die Steuerroutinen arbeiten mit dem 8-Bit-Modus (aber 4-Bit folgt noch), außerdem wird das BusyFlag ausgewertet. Damit braucht ihr keine weiteren Warteschleifen zu programmieren, es wird lediglich eine einzige Warteschleife von 10ms benötigt um das LCD zu initialisieren.

    Mit 4MHz laufen die Routinen bei mir prima. Bei höheren Taktfrequenzen müßt ihr evt. mehr nop-Befehle reinsetzen bei:
    • LCD_Enable
    • LCD_Befehluebergabe
    • LCD_Datenuebergabe

    Ich habe es auch mit anderen Taktfrequenzen probiert, da waren bei 16MHz jeweils sieben nop-Befehle notwendig, ansonsten hat das LCD den Enable-Puls nicht immer mitbekommen und manche Zeichen einfach verschluckt.

    Bei Fragen immer fragen...aber bitte im Forum fragen.
    Viel Spaß und gutes Gelingen damit.

    Steuerroutinen LCD TC1602E-01 8-Bit.txt
    Geändert von White_Fox (17.01.2016 um 17:50 Uhr)

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    954

    Steuerroutinen für das LCD (TC1602E-01 von Pollin) - 4-Bit

    Wie versprochen, die gleichen Routinen wie oben, nur mit 4-Bit-Ansteuerung.

    Steuerroutinen LCD TC1602E-01 4-Bit.txt

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    59
    Beiträge
    2.435
    Hallo,
    Zitat Zitat von White_Fox Beitrag anzeigen
    Taster:
    Die Taster sind, wie bereits beschrieben, über einen Tiefpass entprellt. LOW-Pegel = Taster ist gedrückt, HIGH-Pegel = Taster ist nicht gedrückt. Ich weiß dass manchem diese Art der Entprellung überhaupt nicht zusagt, allerdings hat sich dies bisher in meinen Schaltungen recht gut bewährt. Klar kann man Taster auch softwareseitig entprellen. Allerdings kann ich mir, im Gegensatz zu so mancher Firma, für 30 Cent Kondensatoren und Widerstände leisten. Und ich programmiere AVRs bevorzugt in ASM, und ich habe einfach keine Lust für sowas Banales wie Tastendrückerei lauter Flankenvergleiche und Wartezeiten zu programmieren. Bei einem guten Benutzerinterface ist der Controller sowieso den allergrößten Teil der Zeit damit beschäftigt, dem Menschen den Status Quo kund zutun, da muß das nicht auch noch sein.
    Da in anderen Foren selbst so ein profanes Thema in den Stand einer Glaubensfrage mit Ansätzen zum Sektierertum erhoben wird, verzeiht mir bitte diesen Exkurs.
    Sorry, dass ich jetzt trotzdem auf dem Punkt rumreite.

    Mi1 1k und 100nF liegt dein Tau bei 100µs.

    Je nachdem welche Qualität und Alter die Tasten haben, muss man aber mit Prellzeiten im Bereich von 5-10ms rechnen.
    Im Allgemeinen werden die Prellzeiten mit dem Alter grösser.
    Es kann also knapp werden oder zu Problemen führen.

    Man sollte also den Widerstand von 1k auf 10k oder den Kondensator von 100n auf 1µF vergrössern, evtl. auch beides.


    Im Allgemeinen frage ich Tasten so alle 20-100mS in einer Interrupt-Routine ab und hinterlege das Resultat in eine globalen Variable ab.
    In dieser ISR mache ich dann auch aus Hardware-Tastern Schalter und man kann hier auch einfach Funktionen wie >2s gedrückt implementieren.

    Diese ISR bedient dann meist auch noch diverse Timer für Timeouts usw.

    Im Prinzip schreibt man diese ISR nur einmal und passt sie für unterschiedliche Projekte nur noch an.

    MfG Peter(TOO)
    P.S. Es geht meistens weniger um die 30 Cent, als um eine sichere und stabile Lösung. Elkos verlieren mit der Zeit an Kapazität und wer weiss schon, was für billige Tasten der Einkäufer dann organisiert Nicht zu vergessen, dass Folientastaturen beim Prellen recht lange Zeiten haben können. Bei der Softwarelösung kann man sich dann problemlos an die Prellzeiten anpassen, notfalls auch noch im Feld (Firmware-Update).
    Geändert von Peter(TOO) (17.01.2016 um 19:13 Uhr)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

Ähnliche Themen

  1. ARM-Prozessoren für DIL-IC-Sockel
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 16.04.2013, 23:30
  2. [ERLEDIGT] I2C Bus läuft nach Kaltstart des atmega nicht aber nach reprogrammiert via ISP
    Von Ritchie im Forum AVR Hardwarethemen
    Antworten: 0
    Letzter Beitrag: 07.07.2012, 15:53
  3. Motorport wird nach Neustart angesteuert am ATMEGA 32 ?
    Von M.Huhnke im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 20.01.2010, 16:00
  4. Bezugsquellen für ARM Prozessoren
    Von CaptainKiwi im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 7
    Letzter Beitrag: 14.06.2009, 05:08
  5. Prozessoren
    Von Nebirosh im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 10.12.2003, 07:11

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •