Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Atmel AT89-serie programmeren via Arduino

Componenten en benodigdheden

Arduino UNO
× 1
LED (generiek)
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)

Apps en online services

Arduino IDE
8051 SPI-programmeur

Over dit project

In deze zelfstudie laat ik je zien hoe je je Hex-bestand naar AT89c52 kunt branden met Arduino Uno in slechts enkele eenvoudige stappen. Hiervoor moeten we AT89c52 koppelen aan Arduino Uno en deze led-indicaties geven via interface-LED naar At89c52.

Stap 1:Stuklijst

  • Arduino UNO
  • AT89C52-microcontroller
  • 10uF condensator
  • Jumperdraden
  • 8,2kohm-weerstand
  • 510 ohm condensator
  • LED
  • 12 MHz kristal
  • 2 x 33pF condensator

Stap 2:Microcontroller aansluiten

Sluit de microcontroller aan zoals hieronder vermeld:

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

Stap 3:Kristal

Sluit een kristal aan op pin 18 en 19 van Atmel en sluit vervolgens twee 33pf-condensatoren van pin 18 en 19 aan op aarde van Atmel. Zie de sectie Schema's voor het volledige schakelschema.

Stap 4:VCC en GND

Sluit de 5v-pin van Arduino Uno aan op de 40e pin van Atmel en GND-pin op de 20e pin van Atmel.

Stap 5:Interfacing LED

Interface-LED met behulp van het schakelschema in de sectie Schema's.

Stap 6:Software

We hebben 8051 SPI Programmer nodig om Hex-bestand naar 89c52 te branden. De link wordt geleverd in de sectie Software. Upload de code die is verstrekt aan Arduino UNO en uw programmeur is klaar.

Code

  • Naamloos bestand
Naamloos bestandC/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;/* Variabel definitieblok */byte data;byte AL ,AH; // 16-bit adresbyte lockByte; // sluit hierbij slotbits in SigH,SigL; // Signature Bytesvoid setup(){pinMode(_MISO, INPUT);pinMode(_MOSI, OUTPUT);pinMode(_CLK, OUTPUT);pinMode(RST, OUTPUT);Serial.begin(115200); // hangt af van de instelling van de host-pc}void loop(){ while (!Serial.available()); // wacht op karakter if (Serial.available()> 0) switch (Serial.read()) { case 'p':Serial.write(progEnable()); pauze; geval 'r':readProgmem(); Serieel.schrijven(gegevens); pauze; geval 'a':while(!Serial.available()); AL =Serieel.lezen(); pauze; geval 'A':while(!Serial.available()); AH =Serieel.lezen(); pauze; geval 'd':while(!Serial.available()); data =Serieel.lezen(); pauze; geval 'S':AH =0; AL =0; SigH =readSign(); Serieel.schrijven (Zucht); pauze; zaak 's':AH =2; AL =0; SignL =readSign(); Serieel.schrijven (SigL); AH =1; AL =0; SignL =readSign(); Serieel.schrijven (SigL); pauze; // lees SigL case 'o':digitalWrite(RST,1);break; geval 'c':digitalWrite(RST,0);break; geval 'e':eraseChip(); Serieel.schrijven (RDY); pauze; geval 'j':breken; geval 'w':writeProgmem(); pauze; }}unsigned char SendSPI(unsigned char data){ uint8_t retval =0; uint8_t intData =gegevens; int t; for (int ctr =0; ctr <7; ctr++) {if (intData &0x80) digitalWrite(_MOSI,1); anders digitalWrite(_MOSI,0); digitalWrite(_CLK,1); vertragingMicroseconden(1); t =digitalRead(_MISO); digitalWrite(_CLK,0); als (t) terugval |=1; anders ophalen &=0xFE; terugval<<=1; intData<<=1; vertragingMicroseconden(1); } if (intData &0x80) digitalWrite(_MOSI,1); anders digitalWrite(_MOSI,0); digitalWrite(_CLK,1); vertragingMicroseconden(1); t =digitalRead(_MISO); digitalWrite(_CLK,0); als (t) terugval |=1; anders ophalen &=0xFE; terughalen; }byte progEnable(){ SendSPI(0xAC); SendSPI (0x53); SendSPI(dummyData); return SendSPI(dummyData);}void eraseChip(){ SendSPI(0xAC); SendSPI (0x9F); SendSPI(dummyData); SendSPI(dummyData); delay(520);}void readProgmem(){ SendSPI(0x20); StuurSPI(AH); StuurSPI(AL); data =SendSPI(dummyData);}void writeProgmem(){ SendSPI(0x40); StuurSPI(AH); StuurSPI(AL); SendSPI(data);}nietig writeLockBits(){ SendSPI(0xAC); SendSPI(lockByte); SendSPI(dummyData); SendSPI(dummyData);}nietig readLockBits(){ SendSPI(0x24); SendSPI(dummyData); SendSPI(dummyData); lockByte =SendSPI(dummyData);}byte readSign(){ SendSPI(0x28); StuurSPI(AH); StuurSPI(AL); retourneer SendSPI(dummyData);}

Schema's


Productieproces

  1. Atmel AT89-serie programmeren via Arduino
  2. PPM-signaal van de RC-ontvanger lezen met Arduino
  3. Arduino - Stuur temperatuur naar internet via serieel
  4. ThimbleKrox - Muisbediening met je vingers
  5. Bewegingsgevoelige circuitbesturing via Intel Curie
  6. BLUE_P:Wireless Arduino Programming Shield
  7. Arduino - Monitoring Door Open via Facebook Messenger
  8. Arduino - Tekenen via internet met stappenmotorcontroller
  9. Arduino-rekenmachine
  10. Arduino gecontroleerde kunstmatige kaarslichten
  11. 25 kHz 4-pins PWM-ventilatorregeling met Arduino Uno