velxio/frontend/src/pages/AtmegaSimulatorPage.tsx

189 lines
8.6 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
* /atmega328p-simulator — SEO landing page
* Target keywords: "atmega328p", "atmega", "atmega 328p", "atmega328p arduino"
*/
import React from 'react';
import { Link } from 'react-router-dom';
import { AppHeader } from '../components/layout/AppHeader';
import { useSEO } from '../utils/useSEO';
import { getSeoMeta } from '../seoRoutes';
import { trackClickCTA } from '../utils/analytics';
import './SEOPage.css';
const META = getSeoMeta('/atmega328p-simulator')!;
const FAQ_ITEMS = [
{
q: 'What is the ATmega328P?',
a: 'The ATmega328P is an 8-bit AVR microcontroller by Microchip (formerly Atmel). It is the heart of the Arduino Uno and Arduino Nano, running at 16 MHz with 32 KB flash, 2 KB SRAM, and 1 KB EEPROM.',
},
{
q: 'Can I simulate ATmega328P register-level code?',
a: 'Yes. Velxio\'s AVR8 emulation faithfully executes all ATmega328P registers: DDRB/C/D, PORTB/C/D, PINB/C/D, TCCR0/1/2, OCR0/1/2, UBRR, UDR, ADCL/ADCH, and all interrupt vectors — including direct register manipulation without the Arduino abstraction layer.',
},
{
q: 'Does it emulate ATmega328P timers correctly?',
a: 'Timer0 (8-bit), Timer1 (16-bit), and Timer2 (8-bit) are all emulated with full prescaler support, PWM modes, overflow interrupts, and Output Compare Match interrupts. millis(), delay(), analogWrite(), and tone() all work correctly.',
},
{
q: 'Can I use analogRead() and analogWrite() in the simulator?',
a: 'Yes. The 10-bit ADC (analogRead) and PWM output (analogWrite on pins 3, 5, 6, 9, 10, 11) are fully emulated. You can connect simulated sensors, potentiometers, and any wokwi-elements analog component.',
},
{
q: 'Can I simulate USART / Serial on ATmega328P?',
a: 'Yes. USART0 is fully emulated. Serial.begin(), Serial.print(), Serial.println(), and Serial.read() all work. The built-in Serial Monitor shows TX output and lets you send RX data to the running program.',
},
];
const JSON_LD: object[] = [
{
'@context': 'https://schema.org',
'@type': 'SoftwareApplication',
name: 'ATmega328P Simulator — Velxio',
applicationCategory: 'DeveloperApplication',
operatingSystem: 'Any (browser-based)',
description:
'Free browser-based ATmega328P simulator. Full AVR8 emulation at 16 MHz — PORTB, PORTC, PORTD, Timer0/1/2, ADC, USART, PWM — with 48+ interactive components. No install required.',
url: 'https://velxio.dev/atmega328p-simulator',
offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
author: { '@type': 'Person', name: 'David Montero Crespo' },
license: 'https://www.gnu.org/licenses/agpl-3.0.html',
},
{
'@context': 'https://schema.org',
'@type': 'FAQPage',
mainEntity: FAQ_ITEMS.map(({ q, a }) => ({
'@type': 'Question',
name: q,
acceptedAnswer: { '@type': 'Answer', text: a },
})),
},
{
'@context': 'https://schema.org',
'@type': 'BreadcrumbList',
itemListElement: [
{ '@type': 'ListItem', position: 1, name: 'Velxio', item: 'https://velxio.dev/' },
{ '@type': 'ListItem', position: 2, name: 'ATmega328P Simulator', item: 'https://velxio.dev/atmega328p-simulator' },
],
},
];
export const AtmegaSimulatorPage: React.FC = () => {
useSEO({ ...META, jsonLd: JSON_LD });
return (
<div className="seo-page">
<AppHeader />
<main>
{/* Hero */}
<section className="seo-hero">
<h1>
ATmega328P Simulator<br />
<span className="accent">Free AVR8 Emulation in Your Browser</span>
</h1>
<p className="subtitle">
Simulate ATmega328P firmware exactly as it runs on Arduino Uno and Nano real AVR8 instruction execution at
16 MHz with full GPIO, timer, ADC, and USART emulation. No hardware, no install.
</p>
<div className="seo-cta-group">
<Link to="/editor" className="seo-btn-primary" onClick={() => trackClickCTA('atmega-simulator', '/editor')}>Open ATmega328P Simulator </Link>
<Link to="/docs/emulator" className="seo-btn-secondary">Technical Details</Link>
</div>
<p className="seo-trust">Free &amp; open-source · Genuine AVR8 emulation · Runs 100% in your browser</p>
</section>
{/* ATmega328P specs */}
<section className="seo-section">
<h2>ATmega328P specification fully emulated</h2>
<p className="lead">
Everything about the ATmega328P is emulated: registers, peripherals, interrupts, and timing. Write bare-metal
firmware or use the Arduino core library both work identically in the simulator.
</p>
<div className="seo-grid">
<div className="seo-card">
<h3>CPU Core</h3>
<p>AVR8 (8-bit RISC), 16 MHz, 135 instructions, 32 general-purpose registers, 2-stage pipeline.</p>
</div>
<div className="seo-card">
<h3>Flash Memory</h3>
<p>32 KB program flash. Upload any sketch compiled by arduino-cli. Supports self-programming via SPM instruction.</p>
</div>
<div className="seo-card">
<h3>GPIO Ports</h3>
<p>PORTB (pins 813), PORTC (A0A5), PORTD (07). DDR, PORT, PIN registers all emulated. Interrupt-on-change via PCINT.</p>
</div>
<div className="seo-card">
<h3>Timers 0 / 1 / 2</h3>
<p>8-bit Timer0 &amp; Timer2, 16-bit Timer1. All PWM modes. Prescaler 11024. CTC, Fast PWM, Phase-correct PWM.</p>
</div>
<div className="seo-card">
<h3>10-bit ADC</h3>
<p>6 analog input channels (A0A5). Single conversion and free-running modes. Analog voltage from simulated components.</p>
</div>
<div className="seo-card">
<h3>USART0</h3>
<p>Full duplex serial with configurable baud rate. TX, RX, and UDRE interrupts. Works with the built-in Serial Monitor.</p>
</div>
</div>
</section>
{/* Compatible boards */}
<section className="seo-section">
<h2>ATmega328P boards in Velxio</h2>
<p className="lead">The ATmega328P powers several popular Arduino boards all selectable in Velxio. The broader AVR8 family also includes ATmega2560 (Mega) and ATtiny85.</p>
<div className="seo-grid">
<div className="seo-card">
<h3>Arduino Uno R3</h3>
<p>The classic board. 14 digital I/O pins (6 PWM), 6 analog inputs, 32 KB flash. The most widely used ATmega328P board.</p>
</div>
<div className="seo-card">
<h3>Arduino Nano</h3>
<p>Same ATmega328P in a compact 45×18mm form factor with mini-USB. Same pin count as Uno.</p>
</div>
<div className="seo-card">
<h3>Arduino Pro Mini</h3>
<p>Bare-bones ATmega328P without USB chip. Available at 3.3V/8MHz and 5V/16MHz variants.</p>
</div>
<div className="seo-card">
<h3>ATtiny85</h3>
<p>Ultra-compact 8-pin AVR. 8KB flash, 6 I/O pins (PB0PB5), USI (Wire), Timer0/1, 10-bit ADC. Ideal for embedded minimal projects.</p>
</div>
<div className="seo-card">
<h3>Arduino Mega 2560</h3>
<p>ATmega2560 with 256KB flash, 54 digital pins, 16 analog inputs, and 4 hardware USART channels.</p>
</div>
</div>
</section>
{/* FAQ */}
<section className="seo-section">
<h2>Frequently Asked Questions</h2>
<dl className="seo-faq">
{FAQ_ITEMS.map(({ q, a }) => (
<React.Fragment key={q}>
<dt>{q}</dt>
<dd>{a}</dd>
</React.Fragment>
))}
</dl>
</section>
{/* Bottom CTA */}
<div className="seo-bottom">
<h2>Simulate your ATmega328P code now</h2>
<p>Open the editor, paste your sketch, and click Simulate no setup, no hardware purchase required.</p>
<Link to="/editor" className="seo-btn-primary" onClick={() => trackClickCTA('atmega-simulator', '/editor')}>Launch ATmega328P Simulator </Link>
<div className="seo-internal-links">
<Link to="/arduino-simulator">Arduino Simulator</Link>
<Link to="/arduino-emulator">Arduino Emulator</Link>
<Link to="/esp32-simulator">ESP32 Simulator</Link>
<Link to="/raspberry-pi-pico-simulator">RP2040 Simulator</Link>
<Link to="/examples">Example Sketches</Link>
</div>
</div>
</main>
</div>
);
};