Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Programmieren der Atmel AT89-Serie über Arduino

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
LED (generisch)
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)

Apps und Onlinedienste

Arduino-IDE
8051 SPI-Programmierer

Über dieses Projekt

In diesem Tutorial zeige ich Ihnen, wie Sie Ihre Hex-Datei mit Arduino Uno in wenigen einfachen Schritten auf AT89c52 brennen. Dazu müssen wir AT89c52 an Arduino Uno anschließen und ihm LED-Anzeigen über die Schnittstellen-LED an At89c52 geben.

Schritt 1:Stückliste

  • Arduino UNO
  • AT89C52 Mikrocontroller
  • 10uF Kondensator
  • Überbrückungsdrähte
  • 8,2 kOhm Widerstand
  • 510-Ohm-Kondensator
  • LED
  • 12-MHz-Kristall
  • 2 x 33pF Kondensator

Schritt 2:Mikrocontroller anschließen

Schließen Sie den Mikrocontroller wie unten beschrieben an:

  • At89c52 Arduino Uno
  • Pin 6 Pin 5
  • Pin 7 Pin 4
  • Pin 8 Pin 3
  • Pin 9 Pin 2

Schritt 3:Kristall

Verbinden Sie einen Quarz über Pin 18 und 19 von Atmel und verbinden Sie dann zwei 33pf-Kondensatoren von Pin 18 und 19 mit Masse von Atmel. Den vollständigen Schaltplan finden Sie im Abschnitt „Schaltpläne“.

Schritt 4:VCC und GND

Verbinden Sie den 5V-Pin von Arduino Uno mit dem 40. Pin von Atmel und den GND-Pin mit dem 20. Pin von Atmel.

Schritt 5:Schnittstellen-LED

Schnittstellen-LED mit Hilfe des im Schaltplan bereitgestellten Schaltplans.

Schritt 6:Software

Wir benötigen einen 8051 SPI-Programmierer, um eine Hex-Datei auf 89c52 zu brennen. Der Link wird im Abschnitt Software bereitgestellt. Laden Sie den für Arduino UNO bereitgestellten Code hoch und Ihr Programmierer ist bereit.

Code

  • Unbenannte Datei
Unbenannte DateiC/C++
#define dummyData 0xAA#define RDY 75#define NRDY 76const int _MISO =4;const int _MOSI =5;const int _CLK =3;const int RST =2;/* Variablendefinitionsblock */byte data;byte AL ,AH; // 16-Bit-Adressbyte lockByte; // Lockbits einbetten Herebyte SigH,SigL; // Signatur Bytesvoid setup(){pinMode(_MISO, INPUT);pinMode(_MOSI, OUTPUT);pinMode(_CLK, OUTPUT);pinMode(RST, OUTPUT);Serial.begin(115200); // hängt von der Einstellung des Host-PCs ab}void loop(){ while (!Serial.available()); // auf Zeichen warten, wenn (Serial.available ()> 0) switch (Serial.read ()) { case 'p':Serial.write (progEnable ()); brechen; Fall 'r':readProgmem(); Serial.write (Daten); brechen; Fall 'a':while(!Serial.available()); AL =Serial.read(); brechen; Fall 'A':while(!Serial.available()); AH =Serial.read(); brechen; case 'd':while(!Serial.available()); Daten =Serial.read (); brechen; Fall 'S':AH =0; AL =0; SigH =readSign(); Serial.write (SigH); brechen; Fall 's':AH =2; AL =0; SigL =readSign(); Serial.write (SigL); AH =1; AL =0; SigL =readSign(); Serial.write (SigL); brechen; // SigL-Fall 'o' lesen:digitalWrite(RST,1);break; Fall 'c':digitalWrite(RST,0);break; Fall 'e':deleteChip(); Serial.write (RDY); brechen; Fall 'j':Pause; Fall 'w':writeProgmem(); brechen; }} unsigned char SendSPI (unsigned char data) {uint8_t retval =0; uint8_t intData =Daten; int t; for (int ctr =0; ctr <7; ctr++) { if (intData &0x80) digitalWrite(_MOSI,1); sonst digitalWrite(_MOSI,0); digitalWrite(_CLK,1); VerzögerungMikrosekunden(1); t =digitalRead(_MISO); digitalWrite(_CLK,0); wenn (t) retval |=1; sonst retval &=0xFE; retval<<=1; intDaten<<=1; VerzögerungMikrosekunden(1); } if (intData &0x80) digitalWrite(_MOSI,1); sonst digitalWrite(_MOSI,0); digitalWrite(_CLK,1); VerzögerungMikrosekunden(1); t =digitalRead(_MISO); digitalWrite(_CLK,0); wenn (t) retval |=1; sonst retval &=0xFE; Rückholzeit; }Byte progEnable(){ SendSPI(0xAC); SendSPI(0x53); SendSPI(DummyData); sendSPI(dummyData) zurückgeben;}void deleteChip(){ SendSPI(0xAC); SendSPI(0x9F); SendSPI(DummyData); SendSPI(DummyData); Verzögerung (520);}void readProgmem(){ SendSPI (0x20); SendSPI(AH); SendSPI(AL); data =SendSPI(dummyData);}void writeProgmem(){ SendSPI(0x40); SendSPI(AH); SendSPI(AL); SendSPI(Daten);}void writeLockBits(){ SendSPI(0xAC); SendSPI(lockByte); SendSPI(DummyData); SendSPI(dummyData);}void readLockBits(){ SendSPI(0x24); SendSPI(DummyData); SendSPI(DummyData); lockByte =SendSPI(dummyData);}byte readSign(){ SendSPI(0x28); SendSPI(AH); SendSPI(AL); sendSPI(dummyData) zurückgeben;}

Schaltpläne


Herstellungsprozess

  1. Programmieren der Atmel AT89-Serie über Arduino
  2. Lesen des RC-Empfänger-PPM-Signals mit Arduino
  3. Arduino - Temperatur über eine serielle Schnittstelle an das Web senden
  4. ThimbleKrox - Maussteuerung mit den Fingern
  5. Bewegungsempfindliche Schaltungssteuerung über Intel Curie
  6. BLUE_P:Drahtloses Arduino-Programmierschild
  7. Arduino - Überwachung der Türöffnung über Facebook Messenger
  8. Arduino - Zeichnen über das Web mit Schrittmotorsteuerung
  9. Arduino-Rechner
  10. 25-kHz-4-Pin-PWM-Lüftersteuerung mit Arduino Uno