Atmega328 uit Arduino uno zelfstandig gebruiken


Ik heb de schakeling getest, maar het lukte niet, waarschijnlijk omdat er nog wat ontkoppeling nodig is,zoals Hunter schrijft. Daar heb ik geen ervaring mee...
Dat datasheet is zeer lijvig...Waar kan ik de procedure vinden?

Kunt u me verder helpen?

https://www.sparkfun.com/datasheets/Components/SMD/ATMega328.pdf

[Bericht gewijzigd door Etienne51 op 7 juni 2019 22:43:19 (27%)]

Schimanski

Golden Member

https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard

https://forum.arduino.cc/index.php?topic=452291.0

https://www.youtube.com/watch?v=cebMSJrNntI

Ik gebruik i.p.v. een losse Atmega328P tegenwoordig gewoon een nano, niet veel groter, goedkoper en alle USB I/O zit erbij.

What, me worry? // Radiozendamateur - PA2HGJ // Stuff is the junk you keep -- Junk is the stuff you throw away // Tinkeo Ergo Sum

ik zal je vertellen ik heb vaak genoeg een lossed atmega chip gebruikt
met alleen een cristal en verder niks
werkt prima hoor
maar je moet wel atmega chips hebben waar de bootloader op staat anders kan je er niks mee
(als je echt wil lachen moet je de attiny85 gebruiken)

buckfast_beekeeper

Golden Member

Ik heb nog nooit een bootloader gebruikt. Ik zou ook niet weten waarom ik daar geheugen zou aan opofferen. Een goede programmer en je kan vooruit.

edit: @TS: begin eens met een schema te posten. Elke GND moet aangesloten worden. Tussen GND en VCC een c van 100n? Gebruik je geen ADC? Leg dan ook AVCC en AREF aan VCC.
Staan de fuses goed? Interne of externe klok?

Je post is wel heel summier. Kan het werken? Ja. Zet er ook eens bij wat je hebt gedaan en geprobeerd. Te veel info is zelden het probleem. Eerder moet alles eruit gepeuterd worden.

[Bericht gewijzigd door buckfast_beekeeper op 8 juni 2019 10:15:45 (58%)]

Honing kan je importeren, bestuiving niet.

Zelfs zonder een extra kristal kan het perfect werken, want een atmega328p heeft een interne RC oscillator. Ook een bootloader heb je niet nodig. Je kan het gewoon via ISP programmeren.

Maar de vraag is: is het dan nog altijd een Arduino? Waar trek je de grens?

Een arduino is het board zelf, dat er een Atmega op zit is 'toeval'. (het had ook wat anders kunnen zijn)
Een losse Atmega is gewoon... een Atmega.

(als je een wiel van je auto afhaalt, blijf je dat wiel toch ook geen auto noemen?... ;) )

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Ik gebruik tegenwoordig zo veel mogelijk STM32 chips. Die hebben een bootloader in ROM(*) zitten... :-)

(*) Ik /denk/ dat ie in FLASH zit en tijdens het testen in de fabriek er in gezet wordt. De flash-control module heeft voor normale flash een unlocking sequence: schrijf XXX naar register xxx schrijf YYY Naar register yyy, dat zal andere constantes XXX en YYY hebben om schrijven naar "system ROM' mogelijk te maken.

@arco: Je ZOU er voor kunnen kiezen om het een "arduino" te blijven noemen zolang je de arduino bootloader er in hebt zitten (en gebruikt?). Of "zolang je de arduino IDE gebruikt om hem te programmeren".

[Bericht gewijzigd door rew op 8 juni 2019 12:17:42 (20%)]

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

Golden Member

Op 8 juni 2019 12:14:48 schreef Arco:
Een arduino is het board zelf, dat er een Atmega op zit is 'toeval'. (het had ook wat anders kunnen zijn)
Een losse Atmega is gewoon... een Atmega.

(als je een wiel van je auto afhaalt, blijf je dat wiel toch ook geen auto noemen?... ;) )

Inderdaad. Zo denk ik er ook over. Een Arduino is het geheel. Toevallig een ATmega328 aan boord. Het evengoed een PIC of een ATmega48, 88 of 168 kunnen zijn. Hoeveel weten er trouwens welke ATmega er op staat?

edit: @rew ik heb nog nooit nood gehad een bootloader te gebruiken. Ik zie het alleen als extra ballast. 99,9% van mijn projecten heeft ook geen USB, ik zou het dan extra moeten implementeren. Vind ik helemaal te gek.

[Bericht gewijzigd door buckfast_beekeeper op 8 juni 2019 12:31:47 (17%)]

Honing kan je importeren, bestuiving niet.

En jij hebt nooit software geschreven waar je later een bug in vond? Hmm. Petje af!

Mijn hardware heeft de mogelijkheid voor een field-upgrade, meestal zonder extra kosten of hardware. Het voordeel boven de standaard "programmer header" is dat deze fieldupgrade vaak zonder extra hardware door de klant gedaan kan worden.

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

Golden Member

Ik bouw niet voor derden. De programmer is er. De header is ook aanwezig. Als je de PicKit 4 gebruikt kan je ook zonder PC een upgrade doen. Deze is ook bruikbaar met ATmega.

Honing kan je importeren, bestuiving niet.

Op 7 juni 2019 22:35:36 schreef Etienne51:
Ik heb de schakeling getest, maar het lukte niet, waarschijnlijk omdat er nog wat ontkoppeling nodig is,zoals Hunter schrijft. Daar heb ik geen ervaring mee...
Dat datasheet is zeer lijvig...Waar kan ik de procedure vinden?

Kunt u me verder helpen?

Ik denk dat het belangrijk is om te weten waar je de chip in hebt getest. Een Atmega kan je los gebruiken, maar met de gegeven schakeling moet het te draaien programma er reeds op geprogrammeerd zijn. In dit geval zouden er een paar dingen kunnen zijn:

  • De eerdergenoemde ontkoppeling.
    De chip is ervan afhankelijk om dicht bij de voedingspennen een laagohmige condensator te hebben, meestal gebruikt men daar een 100nF keramische condensator voor. Dat voldoet zo goed als altijd. Deze dient om te zorgen dat de voedingsspanning voor de chip door de weerstand en inductie van de voedingsrails niet zo ver zakt dat de chip disfunctioneert.
  • De kristaloscillator werkt niet.
    De oscillator werkt met een paar kleine condensatortjes naar aarde, maar op een breadboard of een slecht ontworpen gaatjesprint kunnen de capaciteiten tussen de sporen deze capaciteit domineren waardoor de chip het kristal niet aan de gang krijgt. Voor een 16MHz signaal is een paar pF snel veel. Vanaf pagina 28 staat er het één en ander over deze condensatoren, maar niet een directe link of dit in jouw specifieke ontwerp het probleem is. Zou je eens een foto van de opstelling kunnen maken? Overigens moet het Arduino-bord waar hij vandaan komt dezelfde frequentiebron hebben. Er zijn varianten met een keramische resonator, maar dan is de chip anders geprogrammeerd en zal niet werken met een kristal.

Is er overigens een reden dat je de chip apart wil gebruiken? Ik ben het met Schimanski eens dat het gebruik van een Arduino Nano misschien handiger is, zeker als je een variant kan vinden met een micro-USB (ik heb er ooit een paar op eBay gekocht, dit is er bijvoorbeeld één). Alleen als je massaproductie plant zou ik er prioriteit aan geven de chip los te kunnen gebruiken (maar dan is je vraagstelling onwaarschijnlijk). Die Nano is zo goedkoop geworden dat het niet meer loont voor de hobby moeilijk te gaan doen met zo'n losse chip.

Ik gebruik altijd dit printje ,geprogrammeerde IC er in en de pinnen bedraden klaar.
Gr Bert

Electronica is mooi als het goed werkt

Op 8 juni 2019 12:29:57 schreef buckfast_beekeeper:
[...]
Hoeveel weten er trouwens welke ATmega er op staat?
.

hmmmm... bji een arduino nano schat ik : iedereen
aangezien je in de software moet selecteren welke arduino je gebruikt.
en bij de nano moet je dan nog eens apart je atmega chip selecteren (168 of de 328)

ik hou van werken ..., ik kan er uren naar kijken

Sorry voor de laattijdige reactie, maar ik ben nog bezig te testen aan de hand van de antwoorden.

Ik heb een Atmega8 geprogrammeerd met mijn programmer van Fischl en het programma BASCOM.De sketch is een 6led blink test. Ik heb de Atmega8 zelfstandig gebruikt in de eerder vermelde schakeling in bijlage. Het programma werd foutloos uitgevoerd op de overeenkomstige pinnen.

Als ik een 6led blink test (digital pin 2 tot 7) in de Atmega328 invoer met de Arduino Uno en ik gebruik de 328 zelfstandig in de schakeling (pin 4,5,6,11,12 en 13) voert de Atmega328 het programma niet uit.
De gemeten spanning bij Atmega 8 of 328 aan pin 7 is telkens 5V.

Atmega328 Arduino Uno.docx

Alleszins al bedankt voor de interessante reacties. Ik zoek nog verder aan de hand van de antwoorden.

Heb je een pullup op de reset lijn? De "fuses" van de chip zullen wel op "external crystal" staan. Dat is wat er op een arduino gebruikt wordt. Als je dan geen kristal hebt dan werkt ie niet. Ofwel je moet met de fuses gaan klooien (als je het verkeerd doet, brick je de atmega) of een kristal monteren.

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

pullup = 10K external crystal = 16MHz

Ben ik de enige die de bijlage niet ziet?

Ok... werkt dat kristal? Juiste c-tjes er naast? Hoe heb je dat opgebouwd? Op een breadboard? Juiste C kan dan "niets" zijn. Ding ontkoppeld? Had je dacht ik al gezegd.

@kruimel: nee.
@etienne: plaats eens een foto.

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

Bedankt Kruimel voor je reactie. De reden voor het zelfstandig gebruik van de Atmega328 is onze CODERDOJO. Wij leren kinderen van 7 tot 17 maandelijks programmeren. Wij starten met SCRATCH, gaan verder met S4A of ARDUBLOCK en vervolgen met ARDUINO. Nu wil ik de leerlingen tonen dat de Atmega328 van de Arduino Uno zelfstandig kan werken.Zo krijgen ze meer inzicht in de werking...

REW ook bedankt,foto volgt nog ...

Op 13 juni 2019 12:16:21 schreef Etienne51:
Bedankt Kruimel voor je reactie. De reden voor het zelfstandig gebruik van de Atmega328 is onze CODERDOJO. Wij leren kinderen van 7 tot 17 maandelijks programmeren. Wij starten met SCRATCH, gaan verder met S4A of ARDUBLOCK en vervolgen met ARDUINO. Nu wil ik de leerlingen tonen dat de Atmega328 van de Arduino Uno zelfstandig kan werken.Zo krijgen ze meer inzicht in de werking...

REW ook bedankt,foto volgt nog ...

Een een oud-collega-student van me is ook actief bij Coderdojo. Hij is zeer bedreven met AVR. Misschien kan je met hem overleggen hoe je deze workshop best voorbereidt? :) (Ik kan zijn naam eventueel doorspelen via mail. Dat zet ik liever niet zomaar op een openbaar forum zonder hem eerst te vragen)

Los daarvan: Je zegt dat je in de stap die na Arduino komt de studenten inzicht wil geven in de werking van de microcontroller. Persoonlijk lijkt het mij dan zinniger om ze rechtstreeks een AVR te laten programmeren, zonder alle Arduino-meuk rond. Ze moeten dan gaan kijken hoe de registers werken, en hoe ze ingesteld moeten worden vooraleer er een pin op hoog of laag gezet kan worden. In Arduino wordt dit namelijk volledig afgeschermd.

Inderdaad Opifex, dat is ook mijn bedoeling...

Voor de duidelijkheid: ik bedoelde dus ook zonder bootloader en zonder Arduino IDE of taal. Niet zomaar de controller er uitgehaald en op een breadboard o.i.d. geprikt.

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.