Schlagwort-Archive: AVR

BitBastelei #465 – Mikrocontroller-Taktquellen: Quarz, Resonator, RC-Oszillator

BitBastelei #465 - Mikrocontroller-Taktquellen: Quarz, Resonator, RC-Oszillator

(2 GB) 00:33:37

2021-11-28 11:00 🛈

Eigentlich alle aktuellen Systeme arbeiten ihre Aufgaben mit einem mehr oder weniger festen Takt ab. Bei Mikrocontrollern üblicherweise im Bereich einiger 10 bis 100 MHz. Aber wo kommt der Takt überhaupt her? Und kann man durch geschickte Wahl der Bauteile vielleicht bei Platz oder Preis etwas sparen?

Inhalt

  • 00:00 Prozessoren und Takt
  • 01:06 Taktquellen: Quarze
  • 02:42 Teiler und Multiplikatoren
  • 05:19 Taktquellen: Resonatoren
  • 08:52 Taktquellen: Interner RC-Oszillator
  • 12:06 Takteinstellungen AVR ATMega (Arduino)
  • 20:54 Takteinstellungen AVR ATTiny (Arduino)
  • 21:49 Takteinstellungen STM32 (Arduino)
  • 23:19 Takteinstellungen STM32 (STM32CubeMX)
  • 32:14 EOL

Links zum Thema

Transparenz

Die gezeigten Geräte wurden selbst gekauft und bezahlt.

BitBastelei #402 – TuxCon Kitty PCB Badge

BitBastelei #402 - TuxCon Kitty PCB Badge

(1 GB) 00:37:11

2020-09-13 10:00 🛈

Vor einiger Zeit hatte ich eine Platinen-Lötübung in Eulenform gebaut. Ein Ähnliches Lötkit mit freier Lizenz gab es vor einigen Jahren auf der bulgarischen Linux-Konferenz „TuxCon„: Das TuxCon Kitty. Besonders interessant: Diese Badge besitzt einen Mikrocontroller, welcher sich per USB programmieren lässt. Und das, obwohl der verwendete Controller eigentlich gar kein USB kann. Also ran an den Lötkolben – das will ich sehen.

Links zum Thema

Inhalt

  • 00:00 Badges?
  • 01:14 TuxCon Kitty: Aufbau
  • 05:00 Löten
  • 27:06 Was nicht passt…
  • 30:02 Bootloader ohne Programmieranschluss
  • 31:29 ArduinoISP
  • 33:08 Attiny per USB mit Arduino unter Windows
  • 35:30 It’s alive.

BitBastelei #229 – ICStation.com RF24 Funkmodule

BitBastelei #229 - ICStation.com RF24 Funkmodule

(32 MB) 00:15:01

2017-02-05 11:00 🛈
RF24-Module sin ein guter Kompromiss um günstig und einfach Daten mit einem Mikrocontroller wie dem Arduino per Funk zu übertragen. Das Modul übernimmt dabei viele Aufgaben zur Sicherstellung einer korrekten Übertragung, sodass der µC weniger Aufgaben erledigen muss.

Mit dem Rabattcode: bitics gibt es 15% Rabatt auf das Sortiment von ICStation

BitBasics: Funk-Datenübertragung per Mikrocontroller

BitBasics: Funk-Datenübertragung per Mikrocontroller

(36 MB) 00:15:02

2017-02-05 11:00 🛈
Nicht immer kann ein ein Kabel legen um Daten eines Mikrocontrollers wie dem Arduino zu ihrem Ziel zu bringen. Hier zeige ich die bekanntesten Möglichkeiten um mit Mikrocontrollern Daten drahtlos zu übertragen.

Arduino: boolean vs. byte

Möchte man einen einfachen Status im an/aus-Format notieren ist üblicherweise ein Boolean der Dateityp der Wahl. Technisch gesehen unterstützt der bei Arduino verwendete ATMega jedoch immer nur 8-Bit-Register, sodass auch ein Boolean (1-Bit-Wert) intern meist als Byte (8-Bit-Wert) abgespeichert wird. Klingt nicht sehr effizient, aber kann man per Hand tatsächlich „besser“ arbeiten?

Gehen wir von einem einfachen Beispiel aus: Wir möchten mehrere dieser Zustände speichern und auf deren Basis eine Entscheidung treffen. Für dieses Beispiel wird der Wert immer invertiert – in diesem Fall könnte man es auch kompakter Lösen, aber da es nur als Platzhalter für komplexeren Code gilt lasse ich das mal so stehen. Alle Beispiele sind Auszüge eines größeren Programms, die absoluten Größen also ohne weitere Aussagekraft.

Erster Versuch: Mit Boolean

boolean dir1 = false;
boolean dir2 = false;
boolean dir3 = false;
//[...]
if(dir1) {
  //Aktionen
  dir1 = false;
}else{
  dir1 = true;
}

//23.644 Byte Flash, 1.537 Byte RAM

Zum Vergleich mit einem einzigen „byte“-Wert, dessen einzelne Bits als Informationsspeicher verwendet werden sollen:

byte dir = 0x00;
//[...]
if(dir & 0x01) {
  //Aktionen
  bitSet(dir, 0x01);
}else{
  bitClear(dir, 0x01);
}

//23.650 Byte Flash, 1.535 Byte RAM

Schaut man auf das eigentliche Programm gewinnt die Variante mit Boolean – 6 Byte kleiner. Nicht wirklich verwunderlich – hat man ein ganzes Byte müsste sich direkt ein Sprung bei !=0 durchführen lassen. Mit Byte-Teilen ist ein Vergleich oder ein vorheriges UND nötig, welches zusätzliche Befehle und somit auch Speicher und CPU-Takte verschlingt. Schaut man jedoch auf den RAM dreht sich das Bild: Hier ist das einzelne Byte sparsamer. 2 Byte kommen mir jedoch etwas klein vor – ich fürchte hier hat der Compiler mit seinen Optimierungen einiges der boolean-Logik geschmissen, denn theoretisch sollte zur ersten Variante deutlich mehr Abstand sein.

Wie auch immer: Selbst ohne große Analyse zeigt sich, was ich schon erwartet hatte: Boolean spart Flash, Byte spart RAM. Welche Variante die sinnvollere ist hängt letztendlich vom jeweiligen Projekt ab. Da mir der RAM ausging war die Umstellung auf Byte eine gute Möglichkeit etwas zu sparen. Möglicherweise hätte es auch gereicht den Compiler nicht mit -Os anzuweisen, einen möglichst kleinen Code zu generieren.

BitBastelei #125 – AVR Bauteiltester

BitBastelei #125 - AVR Bauteiltester

(297 MB) 00:39:37

2014-11-30 11:00 🛈
Bausatzzeit: Bei einem fernöstlichen Händler habe ich – neben ein paar günstigen Tastern – ein Messgerätbausatz [1] gefunden, welcher interessante Werte aufweist: Transistoren, FETs, Triacs, Dioden, Widerstände, Kondensatoren – nahezu kein Bauteil, welches das Gerät nicht messen kann.Im Falle der Kondensatoren wird auch der ESR angezeigt, im Gegensatz zu meinem ELV-ESR-Meter jedoch laut Anleitung ohne ständiges Kalibrieren.
Natürlich hat der Händler die Schaltung nicht selbst entwickelt – sie stammt von Markus Frejek und Karl-Heinz Kübbeler, alle Infos sind auf Mikrocontroller.net [2] in deutsch zu finden. Da ich mir ohnehin die CPU zeitnah gegrillt habe gibt es also auch gleich die neueste Firmware, welche noch einige neue Features bringen sollte.

0:13 Notaus-Taster
3:32 Bausatz-Überblick
6:59 Aufbau
10:17 Komponententests
22:30 Originalprojekt auf µC.net
26:26 Auslesen der Originalfirmware – oder auch nicht
29:51 Neuer µC, neue Firmware
36:05 Erstkalibrierung

[1] http://www.banggood.com/DIY-Meter-Tester-Kit-For-Capacitance-ESR-Inductance-Resistor-NPN-PNP-p-929603.html
[2] http://www.mikrocontroller.net/articles/AVR_Transistortester

BitBastelei #67 – 1-Wire Temperatursensoren am AVR-NET-IO

BitBastelei #67 – 1-Wire Temperatursensoren am AVR-NET-IO

(150 MB) 00:12:14

2013-10-27 11:00 🛈
1-Wire Temperatursensoren (DS18B20) am AVR-NET-IO mit Ethersex

Anm: Offenbar wurde die Pinning im Original dorch geändert, da mit der neuen CPU aber alles läuft wurde keine weitere Fehlersuche betrieben

BiBa #45 mit Flashanleitung

Eigenbau-MPPT – Hardware-Prototyp und ein paar Ideen

Örks – wieder kein Strom. Mein Wellsee-Regler hat (mal wieder) das Zeitliche gesegnet – guter Zeitpunkt um sich nochmal um den Eigenbau-MPPT zu kümmern.

Einige Prototypen liegen schon hier, allerdings bisher ohne passende Firmware. Das Ganze basiert grob auf dem Design von Tim Nolan und ist aus Kostengründen auf eine 5x5cm-Platine gequetscht. Bis auf einen zu gloßen Elko (geplanter Footprint war nicht lieferbar) und einem zu geringen Abstand zweier Mosfets (Kühlkörper etwas stromm, aber ohnehin elektrisch verbunden) bin ich ganz zufrieden. Von der Dimensionierung sollten ~250W drin sein. Gegenüber des Originals wird ein Halleffektsensor für die Strommessung verwendet, RS232 ist auf eine Anschlussleiste herausgeführt und das Modul ist nicht auf einen Arduino angewiesen.

Derzeit portiere ich die Arduino-Firmware auf native ATTinys. Ich bin mal optimistisch und habe fürs Erste einen ATTiny24a mit 2kb Flash verlötet, im Zweifelsfall kann ich aber mit den 44 oder 48er Typen problemlos aufrüsten. Ich denke die Firmware selbst wird kein so großes Problem, wohl aber meine Featuritis – ich hätte gerne die Möglichkeit mehrere Regler zu vernetzen um so meine unterschiedlichen Module einzel Steuern zu können – sozusagen ein Mehrphasensynchronregler. Zudem wäre ein PC-Interface nicht schlecht um für jedes Modul eigene Statistiken zu erhalten.