Zurück

(C) Christof Ermer, Regensburg
http://homepages.uni-regensburg.de/~erc24492/ Gästebuch

 

 

03.05.2018



Mikrokontroller Crash Kurs

schwerpunkt ANSI-C Programmierkonzepte, Software Strukturen,
externe Elektronik und IN-Out Aktoren ( Servo/Sensor/Motor ...)


Dies & das: Sonstige Links:


Piepser Zusammenbau.pdf

Basteln


Logische_Wahrheitstablle

Software Schreib Konventionen

Aufzählung_versus_Bit-Maske

USABASP_Driver_installieren mit ZADIG

EAGLE_Eigene_Bauteile_definieren.pdf



Ich möchte den Kurs zukünftig andes gestalten.
Grund sind die veherrend unterschiedlichen Niveaus der Teilnehmer zu beginn, was man bis zum Kursende merkt.
Leider wird der begriff Fortgeschrittenenkurs nicht von allen Ernst genommen,m wa sdan zu frustrationen der Teilnehmer wie des Dozenten führt.

1.:  Einrichten des Kurs Filseservers:


2. WinAVR  Compiler Installation:
WINAVR_Installation
       Simple  Problembehebung für Windows 8/10 (Childwindows Fehler beim Compilieren)
        das erkläre ich einfach ... ganz Easy:  die Extra-Datei   "msys-1.0.dll"   in den  C:\Winavr\utils\bin\  Ordner kopieren. Und alles ist gut.
Windows_10_Problem_mit_Compiler  
      "msys-1.0.dll  ist für das 64Bit Windows direkt auch hier zu finden :
 ....msys-1.0-vista64/msys-1.0.dll
         Copy this file to \C:\WinAVR\utils\bin\  


Zentrales und vollständiges Kursskript:   in PDF Form. Immer etwas in  Bearbeitung, 19.04.2018--> V1.54):

Mikrocontroller-Crash-Kurs-CE.pdf

das sollt eüberarbeietet werden:    ANSI-C-fuer-Mikrokontroller.pdf     lokal Downloaden.


Arduino UNO ATMega328p Prozessor Manual:

ATMega328p_PDF

       Wird oft gebraucht!  lokal Downloaden.
Kleines Hardware Merkzettel Skript
Elfort Bauteile und Merkzettel.pdf



Noch wichtig:
Lege einen Link auf "Programmers Notepad" auf dem Desktop
Programmers Notepad Quicklink
So sollen eigene Dateien abgelegt werden: Lokaler_Speicherort
Arduino COM-PORT_einrichten



LabView Basics: LabView Basics.pdf LabVIEW-Benutzerhandbuch.pdf
Lerne Löten.pdf
Diplomarbeit_BLiehr.pdf nichtssogut: Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie.pdf


Diese Seite ist ausschließlich für den internen Gebrauch zum "Fortgeschrittenen Kurs Elektronik"
gedacht


Die meisten Abschnitte sind nur intern im Zusammenhang des Kurses benötigt und haben nur eine Merkzettel Funktion.

Serveradressen, Ordnerpositionen etc.

Kursleiter: Christof Ermer         Tel Uni-intern: 943-2140,     Mobil: 017695678800, (für alle Fälle)

Meine Homepage ( Christof Ermer ) http://homepages.uni-regensburg.de/~erc24492/


Mein Büro ist zu finden im Raum 2.0.10  (Lst. Lupton Erdgeschoss, Physik 2)

Kursverantowortlicher: Dr.     Fritz.Wuensch@ur.de    Telefon   943-2069 oder 943-2161

 

Ergebnisse:
SS2014 :  C-Files vom KURS SS 2014 : C-Files SS2014_AT16-USBASP.zip, Eagle Files: Eagle_Kurs_filesSS 2014.zip
SS2015 Arduino-Kurs: ATM328-WINAVR-Kurs Files 2015.zip 
SS2016 Arduino-Kurs
: Kurs2016_WINAVR-Progs-03-2016.zip
SS017 WinAVR C-Module Elfort-Kurs2017 ZIPs/Kurs2017_WINAVR-Progs.zip SS017       Kursprojekte: KursProjekte.html


 

Für interssierte und zum Üben zuhause:
Kostenloser C-Compiler zum Üben von ANSI-C:   DEV-C++.html

            Downloaden bei : http://www.bloodshed.net/dev/devcpp.html

Bloodsheet Dev C++ ist die Weiterentwicklung  https://sourceforge.net/projects/orwelldevcpp/



Material und Info Universität Regensburg intern GRIPS:1

E-Learning  GRIPS:   Beschreibungen , Skript , Sonstige Dateien: https://elearning.uni-regensburg.de/
Ihr DNS Login an der Universität Regensburg -->  Startseite > Kurse > Physik > IT-Ausbildung > Elektronik > Elektronik für Fortgeschrittene:   
https://elearning.uni-regensburg.de/course/view.php?id=23517

 

 

Vor dem Kurs kann die  Zusammenfassungs PDF  ANSI-C-fuer-Mikrokontroller.pdf  gelesen werden.

              Jedoch sind dies Lernziele/Bestandteiele des Kurses und damit NICHT VORRAUSETZUNG.

Lösung des "Sync Child" Compiler Problems des Compilers in WINAVR: WINAVR_unter_WIN10

Zusammenfassung und Erklärung der verwendeten Hardware:   Elfort_Bauteile_&_Merkzettel.pdf


Einstellungen und Arbeiten mit dem GNU-C++  Compiler in WINAVR   Elfort-WinAvr.pdf
    Dies ist eine Sammlung von Tipps und Erfahrungen beim µC Programmieren

   File Server Einrichten ( für den Datenaustausch ( Programmfragmente) im Kurs.
Nur über das interne Datennetz der Universität Regensburg erreichbar.. So kann prima auf Projekt-Dateien zugegriffen werden:
Die verwendeten Dateien werden nach und nach ergänzend zur Verfügung gestellt.
Unter dem Namen „Kurssoft“ stellt das Rechenzentrum einen allgemeinen Speicherplatz für Dozenten bereit.
Kurssoft ist Sinnigerweise mit dem Laufwerksbuchstaben "K" verbunden.  (logisch)


Arbeitsweise:
ALLE DIESE FILES SIND NUR EINE QUELLE:
Wenn etwas benötigt wird, immer ZUERST  in einen Lokalen Ordner Legen.
    Heisst: Was gewünscht wird, ist auf den Lokalen Ordner zu kopieren:

Am besten  im eigenen BENUTZER Ordner:
BSP:     C:\Users\Christof\Elfort_2018
Unter Ordner anlegen: z.B.
    "uCProgs"     -->ergibt  C:\Users\Christof\Elfort_2018\uCProgs Ab jetzt fleissig : Copy -PASTE

Netzwerkverbindung einrichten:
So wird es gemacht:

1. Novell Anmeldung durchführen:

TIPP: OTH Leute können sich an der Uni einloggen mit ihrem  Login : aber die Buchstaben ersetzt durch ZZZ oder ZZB-.... evtl. im RZ nachfragen
aus erc24492 wird ZZZ24492


2. Falls Laufwerk "K" noch nicht sichtbar  ist: Notwendig ist ein UNI-Regensburg Account...

Wer diesen nicht hat, meldet sich bei mir..

gut Funktonierender Weg --EXPLORER:

Im File-Explorer: Extras --> Netzlaufwerk verbinden  --> Laufwerk K wählen -->

(copy-paste)
\\TITAN-SHARE1\SHARE1\KURSSOFT\PHY\elfort

eintragen

Empfehle Häckchen setzen:


dann:

Es erscheint im Explorer ( hoffentlich ):    Kurssoft(\\TITAN-SHARE1\SHARE1)(K:)


MERKE:

Arbeits (-veränderbare) Dateien   IMMER LOKAL KOPIEREN


Pan B:

Kommandfenster mit Adminrechten --> CMD -->  ( meist mit rechter Maus auf StartSymbol ) Heute heisst es Windows Powershell (Administrator )

net use K: \\Titan-share1\SHARE1\KURSSOFT\PHY\elfort   /persistent:yes

    oder mit NDS User : ZZZ12345 ist DEIN NDS

net use K: \\Titan-share1\SHARE1\KURSSOFT\PHY\elfort  /USER: ZZZ12345  /persistent:yes

Andere temporäre Möglichkeiten:

einfach in die  Adresse Zeile des Explorers im Eingabefenster des Explorers eingeben:   (copy-paste)

\\TITAN-SHARE1\SHARE1\KURSSOFT\PHY\elfort

    dann immer mit "rechter Maustaste", Files lokal, kopieren

ordenr für die Quellfiles für das Programmieren :

In K:\

\0000 Kurs2018_WINAVR-Progs\




TERMINAL Programm  (Text senden und empfangen)

gutes altes XP Terminal Programm: XP-Termninal

Neuerdings verwende ich gerne MobaXTerm https://mobaxterm.mobatek.net/
Siehe die Programme in     K:\PHY\elfort\1F_Terminal Programme  ( IMMER LOKAL KOPIEREN )








 

Terminal Programm:
Leider gibt es in Windows 7 standardmäßig kein Terminalprogramm.
Ich nehme das von XP,
Alternativ Terminal Programm http://www.der-hammer.info/terminal/
Nach der Installation des ADRUDINO Boards: Vorher sollte jedoch das benutzte COM-PORT  ermittelt werden



Tastenkombination
WINDOWS-FENSTERTASTE + PAUSE
    =>  Geräte Manager

In diesem Fall ist es "COM8" .. Sollte die Nummer irrwitzig groß sein, kann dies unter Geräte Manager--> rechte Maustaste, Eigenschaften, Anschluss Einstellungen, Erweitert
geändert werden
Einrichten eines Terminal-Programms , das unter Win7 läuft,
dazu auf dem Fileserver den Ordner  "K:\PHY\elfort\3A_Terminal Programme  öffnen und den Ordner "HyperTermXP" auf den lokalen Desktop kopieren.
Starte darin hypertrm.exe  und öffne darin die Beispielsweise :  115200.com8.ht
dann müsste es soweit passen.



Compiler  &
Plattform:


Der Kurs, die Programme und die Compilersoftware
WinAVR, wird entweder auf Windows 7 oder 10 ausgeführt.
Programmiert wird der AVR  ( alle Typen ) mit:
Compiler WINAVR :   http://sourceforge.net/projects/winavr/files/
WINAVR Beschreibung  https://www.mikrocontroller.net/articles/WinAVR

Diesen unbedingt in den vorgeschlagenen Ordner C: \WINAVR installieren

WINAVR installieren:

    Dannach gleich

      Simple  Problembehebung für Windows 8/10 (Childwindows Fehler beim Compilieren)
        das erkläre ich einfach ... ganz Easy:  die Extra-Datei   "msys-1.0.dll"   in den  C:\Winavr\utils\bin\  Ordner kopieren. Und alles ist gut.
        Windows_10_Problem_mit_Compiler  
      "msys-1.0.dll  ist für das 64Bit Windows direkt auch hier zu finden :
 ....msys-1.0-vista64/msys-1.0.dll
         Copy this file to \C:\WinAVR\utils\bin\  

 


Quelle:

Lokal: K:\PHY\elfort\1A  WINAVR und AVR Studio Compiler

WinAVR-20100110-install.exe
oder  https://sourceforge.net/projects/winavr/
https://sourceforge.net/projects/winavr/files/latest/download

Hier sind wir fertig:

.................................................................................................................................................................

Hinweise:
WINAVR.20100110-install.exe  ist die schon sehr alte letzte Version.  03.2017

„Es wird berichtet dass die PATH Variable überschrieben wird.“ !?
  Ich hatte jedoch niemals Probleme.

aber, so findet man diese:
Systemsteuerung --> System & Sicherheit --> System --> Erweiterte Systemeinstellung --> Umgebungsvariablen
PATH -->
 da steht bei mir :
  %USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
Hier sieht man die beiden Einträge

--> und unter Systemvariablen:


 





Bei Windows 8/10 gibt es Probleme beim Compiler, die aber lösbar sind.
Siehe auch https://www.mikrocontroller.net/articles/WinAVR
und auch:   
http://www.madwizard.org/electronics/articles/winavrvista  ( Da habe ich die Informationen her )

Für 32Bit:
Download msys-rebased.zip  and overwrite the existing msys-1.0.dll in the utils\bin subdirectory of your WinAVR director

Für 64Bit W10
If you are using Vista 64-bits, you will probably have the sync_with_child or similar errors.
In that case download
 msys-1.0-vista64.zip with a modified msys-1.0.dll.
--> Lade für windows
64Bit folgenden Ordner bzw Datei  "msys-1.0.dll"
innerhalb von 
WINAVR Win10 Problem/msys-1.0-vista64.zip


oder direkt:
msys-1.0-vista64/msys-1.0.dll
msys-1.0-vista64
20:03 19.04.201620:04 19.04.2016 found solution.
http://www.madwizard.org/download... Kopiere diese in utils\bin directory (WinAVR)


Linux ist aber ebenfalls möglich. Dann ist allerdings selbstständige Rechereche notwendig. Dazu gibt es entsprechende Foren im Netz
Windows 8.1..10  macht Probleme mit dem WINAVR Compiler...

Dieses ist jedoch einfach zu lösen. Austausch einer DLL. Dazu später mehr.

Wir verwenden Win7 mit zusätzlichem Terminalprogramm.  aus (Windows XP )
Ich verwende bewußt nicht das Atmel eigene AVR Studio...weil es sehr umfangreich und kompliziert für Einsteiger ist, und so den Blick verstellt auf das Wesentliche und Notwendige.
Der Fokus soll auf dem Mikrocontroller liegen und nicht auf die vielen Möglichkeiten ( wie JTAG Debuging ) von AVR Studio
Selbstständige Recherche:
Suche in Google WINAVR und downloade die aktuelle Software.
Darin enthalten der Editor: Programmers Notepad.
Dieser Editor kann mit dem makefile Compilieren und flashen steuern.
Also alles Notwendige. WinAVR.html  
So wird der WINAVR benutzt.
  Überblick mit Downloads über grundlegende AVR Software und Werkzeuge AVR-Grundwerkzeug.html
Als Programmierwerkzeug dient der   "InSystemProgrammer" : 
ISP-ASP-China.html


 


Speicher-Ort für Programme:

Für das Arbeiten MÜSSEN die Dateien auf dem lokalen PC Liegen,


Wiederholung:

Wenn etwas benötigt wird, immer ZUERST  in einen Lokalen Ordner Legen.
    Heisst: Was gewünscht wird, ist auf den Lokalen Ordner zu kopieren:

Am besten  im eigenen BENUTZER Ordner:
BSP:     C:\Users\Christof\Elfort_2018
Unter Ordner anlegen: z.B.
    "uCProgs"     -->ergibt  C:\Users\Christof\Elfort_2018\uCProgs Ab jetzt fleissig : Copy -PASTE


Sinnvoll:

Oder, von mir aus "in einem Ordner" auf Dekstop.

Wichtig:  "nicht irgendwo"


Das Filemanagement unter WINAVR  ist simpel
Der Ordner ist der Projektname
Das war ausschlaggebend für die Wahl des WINAVR.
Vorausschreitende Entwicklungen können so unkompliziert erweitert werden

Jedem Projekt wird ein eigener Ordner zugewiesen/erstellt, worin alle zugehörigen Files liegen:

Beispiel:

    C:\uCProgs}Meine_Cs2018\AT328p-BLDC-Sauger.
   
oder einfach ein Ordner auf dem Deskto ORDNER-Desktop -->  "MEIN_NAME"
--



Programmers Notepad

Zum sinnvollen Arbeiten brauchen wir einen schnellen Link auf dem Desktop zum Programmers Notepad


Dieser ist enthalten innerhalb des Ordners:   C:\WINAVR\PN

auf PN.exe mit rechter Maustatse klicken:  Verknüfung auf Desktop.

FERTIG!!

-------------------------------------------------------------------------------


Jetzt nicht benötigt.. Info für Advanced Users:

Speicher Ort für Grundeinstellungen des Programmer Notepad: C:\WinAVR-20100110\pn\settings   und dorthin folgende Datei(en) kopieren
UserSettings.ini -> UserSettings.ini
UserSettings.xml -> UserSettings.xml
UserTools.xml  ->  UserTools.xml
oder alle drei zusammen..im ZIP,  damit  sind zumindest die Datentypen etc. richtig implementiert: PN_Settings.zip
!! Diese Dateien in den Ordner C:\WinAVR-20100110\pn\settings kopieren !!



 

Programm flashen ( = in den Mikrocontroller laden )


Ich versuche dies mal mit dem Bootloader.. mal sehen wie sich das bewährt.
Dazu ist das Terminal imVORHER immer zu deaktivieren:!


sonst, Mit dem USBASP Dongle.
In System Programmer = ISP:    

1..Schritte: Installation eines  USB, Fischl kompatiblem, ISP-Programmers  (In System Programmers)  USB-Fischl-Programmer.html
Um  das Programm in den µC zu laden gibt es viele verschieden Wege Fuses_Avr.html    Notwendige Grundeinstellungen des AVR ( z.B. Quarz Aktivieren ):


AVR_Dude.html
  Build in ( WINAVR) Programmer verwenden (...leider etas unübersichtlich, aber funktioniert gut mit Burn-O-Mat etc. ) PonyProg.html  Eine sehr gute, aber nur mit "ECHTEN" Seriellen und LPT Ports zu nutzende Programmier-Software. Kann Fusebits lesen: ISP_Adapter.html  Paralleler In System Programmer ISP. Leider vom Aussterben bedroht.
Webseite des USB Programmers (gespeicherte Ebayseite): USBASP USBISP AVR Programmer USB ATMEGA8 ATMEGA128 New

Einstellungen mit Quarz  CKOP und BODEM
makefile Sektion:
 
Suche mit "AVRDUDE" nach Position  #---------------- Programming Options (avrdude) ----------------
dort mit # alles auskommentieren  mit udn AVRDUDE_PROGRAMMER  AVRDUDE_PORT

Dann die Zeilen einfügen

AVRDUDE_PROGRAMMER = USBasp
AVRDUDE_PORT = usb        # programmer connected to USB port

das wars...


Basteln

Das erste Projekt:   Piepser_Zusammenbau.pdf
Hier wird der extrem nützliche Test-Piepsermit Tonhöhenänderung beschreiben. !!

Siehe dazu folgende Seite vor dem Baubeginn: 
1. Platine Bohren
2. Bauteile der höhe nach Löten. ( Lötanweisung befolgen und einüben. )

FlachKabelStecker.html



Praktisch und zum Ausdrucken und neben den Monitor kleben.:
Bin    Hex
0001    1    0x01
0010    2    0x02
0011    3
0100    4    0x04
0101    5
0110    6
0111    7
1000    8    0x08
1001    9
1010    A-10
1011    B-11
1100    C-12
1101    D-13
1110    E-14
1111    F-15




  Logik  Tabelle:
http://de.wikipedia.org/wiki/Logikgatter

A

B

Y

0

0

0

1

0

0

0

1

0

1

1

1

UND
AND

A

B

Y

0

0

0

1

0

1

0

1

1

1

1

1

ODER
OR

A

B

Y

0

0

0

1

0

1

0

1

1

1

1

0

(wieder NULL wenn beide Eingänge 1 sind) EXKLUSIV ODER
EXOR

A

Y

0

1

1

0


NICHT NOT

 


 

Aufzählung versus BitMaske:

Betrachtet werden nun die Stellen in der binären Aufzählung, wo nur EIN Bit gesetzt ist:

BIT-Nr

HEX  0x

MASKE  0b

0

0x01

0b 0000 0001

1

0x02

0b 0000 0010

2

0x04

0b 0000 0100

3

0x08

0b 0000 1000

4

0x10

0b 0001 0000

5

0x20

0b 0010 0000

6

0x40

0b 0100 0000

7

0x80

0b 1000 0000

 


Konventionen zur Schreibweise von Konstanten und Variablen

Dies ist eine Beschreibung der von mir benutzen Technik  in der Programmierung.
Aber keine Vorschrift !!
Jeder kann das machen, wie er selbst will. Klar, aber....
Letztlich gelten nur die Syntaxvorschiften, 1978 erschienen von Kerningham und Ritchie  in dem Buch "Programmieren in C".

Jedoch.... ist dies nur die Beschreibung der Sparce Cm NICHt wie man damit GUT Programmiert

Es ist  der Unterschied zwischen einem "Hauruck-Basic-Programmierer" und einem "näher am Profi"..
So kann man Progrtammeesser verstehen, und !! Fehler schnell finden. Weil man "sieht", waß "was" bedeutet...!

Es ist nur eine Handvoll simpler Reglen, die auch MS/Linux Profis verwenden ( mehr oder weniger ).

1. Es gibt keine EIN-Buchstaben Variablen. Das ist unter Profis verpöhnt.  Aus gutem Grund.
    Leider so häufig wie der Aberglaube daß Schönheitscreme hübsch macht.
    Bsp:  for i =.  .... "ist Bääääääähhh".
    Besser: typisiert  und ein "sprechender Name"  wie "u8ByteCount".     Was das bedeutet gleich mehr.

2. Konstanten, und Definitionen, MAKROS werden immer nur mit GROßBUCHSTABEN geschrieben
    also typischerweise alles im Headerfile wie  #define XXXX  und Makrodefines,  aber auch alle anderen Konstanten.
    Bsp:   alles Großgeschrieben:
    const char MCA_DELIMTERSTR[] PROGMEM = { ',',0 };
    #define MOTOR_ENABLE_FLAG    0x02
    #define LED1_ON()    (LED_PORT |= LED1_MSK)
    #define LED1_OFF()    (LED_PORT &= ~LED1_MSK)

3. a   

    Variablen werden am Wortanfang mit Kleinbuchstaben  mit dem Variablentyp gebranntmarkt. "Wie ? kommt geleich"
3. b

    Variablen-Namen werden möglichst "sprechend", nach 3a-Regel mit den Typenkleinbuchstabem, zuerst mit GroßBuchStaben, dann mit jedem "Silbenanfang" einem  weiteren "GroßBuchStaben,  gefolgt von den "Kleinbuchstaben" der Silbe, geschrieben.

 

Das ist alles !!    am Besten ein Beispiel:  


char gcaUartRXBuffer;    //lese : global char array Uart RX (empfangs) Buffer (speicher)
Liste der Typen-Kleinbuchstaben-Kürzel: ( in der Reihenfolge, die ich verwende ) g = global definierte Variable.  //    Ohne "g" ist Var. also eine lokale Funktionsvariable. Simpel. p = Pointer. //    Var, ist ein Pointer s = Struct Variable u = unsigned //    signed ist default  c = char a = Array;  // Var ist ein Array ( bei Strings die zusätzliche 0 nicht vergessen ) 8, 16, 32, 64,.. // Bitbreite der Variable... praktischer als char integer word... und eindeutiger!
in WinAVR wird anstelle von char integer word usw eine ienheitliche form verwendet
int8_t ist short, char;  
uint8_t = quasi byte;
uint16_t = unsigned int;  int16_t = integer usw..

am Besten einige Beispiele: mit der "lauten Leseart"
uint32_t    u32TickCount;  //unsigned word = 32 Bit  für eine Zeitzähler
uint8_t    u8ProgMode;     //unsigned char ( BYTE ) das FlagBits des Programmmodus speichern soll;
uint8_t * pcRXBuf;   //pointer auf unsigend char,    pointer auf den Empfangsbuffer;

das war schon alles! Die paar Buchstaben zu lernen ergibt sich automatisch am Type-namem .. c=char usw..
Man gewöhnt sich schnell daran, und möchte es irgendwan nicht mehr anders..  Die Zeiten von   for( i = ..) sind bald vorbei.




USABASP Driver installieren

Dead-Simple Driver Installation for USBasp and USBtiny on Windows


http://rayshobby.net/dead-simple-driver-installation-for-usbasp-and-usbtiny-on-windows/
ZUADIG downladen
http://zadig.akeo.ie/
und dann:

Instructions

Go to http://zadig.akeo.ie/ and download the software (note that Windows XP has a separate link).

Plug in your USBasp or USBtiny device. In case your microcontroller uses a USBasp or USBtiny bootloader, enter bootloading mode, and let Windows detect the device (it will report driver not found). If a window pops up asking to search for driver, just close it or click on Cancel.

At this point, run Zadig, it should detect the USBasp or USBtiny, or any libusb device that you have. Then in the selection box (see below), choose libusb-win32 (v1.2.6.0), and click on Install Driver, and wait for the installation to complete.


That’s it! Because the drivers are digitally signed, there is no hassle installing it in Windows 7 64-bit and Windows 8.1.

I will be updating the driver installation instructions for OpenSprinkler 2.1 and SquareWear right away, as they both use USBasp bootloader. Users have often complained that it’s frustrating to install USBasp driver for Windows 7 64-bit and Windows 8.1. Those days are now past!