Atmega328 uit Arduino uno zelfstandig gebruiken

Voor een demonstratie van 'bare metal', zowel hard- als software, zou ik voor de eenvoud en vertrouwdheid wel in de Arduino IDE blijven, er is simpelweg geen reden om naar iets anders te gaan.

Maar dan wel een programmer gebruiken. Dat kan dan overigens wel weer een Arduino zijn.
Een kristal zoals op de boardjes zou ik vermijden omdat dat meer randvoorwaarden vereist.

Merk wel op dat dit drie niet inhoudelijk gerelateerde of opeenvolgende stappen zijn:

- Laat zien dat een lege, nieuwe Atmega 328 met de programmer te programmeren is vanuit Aduino en op 8 MHz kan draaien zonder verdere hardware behalve wat ontkoppeling (en een led op B5 om mee te zwaaien)

- Laat zien dat men zo de gebruikelijke bootloader kan branden en gebruiken via een seriële interface, maar dat het dus ook zonder gaat

- Laat zien dat men in plaats van:

code:


pinMode(13, OUTPUT);
digitalWrite(13, HIGH);

Ook iets kan roepen als:

code:

 
DDRB |= B00100000;
PORTB |= B00100000;

.. en dat het laatste veel kleiner en sneller is (maar ook zo zijn nadelen heeft :)
[edit] Ik doe het ook gelijk fout zie ik ;)

Mijn didactisch advies. Leer ze omgaan met de arduino (in de arduino omgeving). Klaar.

Dat sommige mensen "bare metal" deze of andere chips gebruiken, dat kan je eventueel laten vallen als het ter sprake komt, maar ik zou liever iets meer diepgang in het "in de arduino" deel zien dan ook nog "en hij kan ook los".

Waar het om gaat is dat (kleine) mensen gaan inzien dat je met een microcontrollertje en wat regels code zomaar iets nuttigs kan maken. Als ze dan later voor de "diepergaande" hobby een losse CPU willen gebruiken, dan leren ze dat vanzelf wel.

Voorbeeldje. Iemand die ik ken heeft zojuist een Linux computer ontworpen. Op school (TUDELFT) hebben we met een 8080 microcontroller leren werken (daar was ik bij, dat hij dat leerde: we hebben het tegelijk gedaan).... En ook toen hebben we NIET de demo: "losse CPU kan je ook gebruiken" gehad. Gewoon een uitontwikkeld demo-board.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Als je ze met registers wil leren werken zou ik dat pas na het werken met de Arduino proberen, dit om de aandacht vast te houden en als kapstok te dienen om een (relatief) complexe werkelijkheid te kunnen uitleggen. Dan kan je daarna (bijvoorbeeld) een opdracht maken die timingsafhankelijk is, een snelle 'interrupt handling' vereist of een overflow situatie mogelijk maakt om het verschil tussen een programma in C en Assembly te demonstreren.

Ik kwam door eens rond te zoeken hier een interessante discussie tegen over assembly programmeren op een Arduino: blijkbaar kan je in je C-code een blok Assembly steken en zo alsnog experimenteren met Assembly zonder de processor los te nemen (je kan dan een paar pinnen gebruiken):

c code:

void somefunction(void) __attribute__((naked))
{
 asm volatile ("

; your assembly code here

 ");
}

Dat lijkt me het gemakkelijkst om te doen als deel van je cursus. Ik zou niet meteen alles in Assembly doen, op dezelfde manier dat ik niet aan zou raden een processor op een breadboard te bouwen of met losse transistortjes in elkaar te zetten (al heb ik wel sympathie voor je doel). Dan gaat het heel erg veel tijd kosten om dingen die heel alledaags zijn uit te leggen.