Cursus microcontrollers, hier op CO?

In navolging op de post van R.Hermans
https://www.circuitsonline.net/forum/view/136246/last

bedacht ik: zou het geen goed idee zijn om een cursus microcontrollers te geven, hier op CO ?

Stel, je kent iets van analoge electronica, en wil nu beginnen met het serieuzere werk, met name microcontrollers.

Volgens mijn ervaring kom je er niet met boeken, youtube, internet, elektuur,... als je een leek bent.
Let op... er zijn uitzonderingen en dit zijn volgens mij echt de slimmerikken onder ons, de hoogbegaafden (1 op 50 mensen is hgbgfd) die het zichzelf hebben aangeleerd. Proficiat als u daarbij hoort, maar het is onnodig om hiermee ook uit te pakken in dit topic. Meer nog, blijf gewoon weg van mijn buurt en blijf met je fikken van deze post ;-p
Nee, serieus...de doelgroep zijn de gewone mensen (zoals ik vroeger in mijn pré-controller leven). Maw. de eenvoudige man of vrouw met een gezonde basis boerenverstand die iets wenst op te steken van microcontrollers en er hopelijk een paar of meerdere, leuke projectjes mee kan bouwen. 49 van de 50 mensen dus in theorie.

Vragen die rijzen zijn bvb.:

1. Zijn hier mensen in geïnteresseerd? R.Hermans misschien wel, maar zijn er nog kandidaten ?
2. Wie wil zijn tijd hierin steken ?
3. Welke controller komt aan bod, welke programmeertaal: assembly of C of...? (Bij C haak ik af, want daar snap ik de ballen van).
4. Kan deze cursus in 1 topic ? Mag iedereen hierin antwoorden en vragen stellen (gaat een zootje worden zo denk ik) of kan er een read-only topic gemaakt worden, waarbij enkel de 'lesgever' in mag posten ? (Is maar saai, plus, je krijgt geen feedback en geïnteresseerden kunnen zo geen vragen stellen.)
5. Hoe geraakt de cursist aan zijn broodnodige hardware om zelf te experimenteren?

Op vraag 2, wie wil er zijn tijd insteken, heb ik alvast een antwoord: als niemand anders zich geroepen voelt, wil ik dat wel doen.
Daar zijn wel voorwaarden aan verbonden.
1. Ik werk met goedkope Atmel controllers die 8051 compatibel zijn
2. Ik wil er wel tijd, maar geen geld insteken, dus er wordt geëxperimenteerd met de controller die ik momenteel bezit en die (weeral) goedkoop kan geprogrammeerd worden. Dit gaat waarschijnlijk een AT89C51CC03 zijn in smd uitvoering.
3. Ik programmeer in 8051 assembly en NIET in C, echt niet
4. Verwacht van mij geen high tech toestanden of kant en klare oplossingen voor uw probleem met uw bepaald complex project. Ik wil enkel de basis aansnijden zoals bepaalde oefeningen met ledjes, looplichtjes, een 24h klok, interfacen met een I2C temperatuur sensor, karakters in ASCII naar de seriele poort sturen, een lichtdimmer bouwen dmv faseaansnijding, kortom gaandeweg opbouwen dmv voorbeelden.
5. Ik stel mezelf nu vragen over hoe ik dit het best kan doen, dus ik zal fouten maken, het is niet eenvoudig om iets aan te leren over controllers irl, laat staan over het internet... tips zijn hier zeker welkom.
6. Indien nodig, kan ik gerber files doorsturen van experimenteer printjes. Indien echt nodig, lever ik een print en soldeer ik er reeds de smd controller op.
7. Wat heeft u nodig: een pc met win7 of win10, een usb to serial converter, een experimenteer print die we dus zelf maken, met mijn hulp, kunnen solderen, soldeerbout, voltmeter, 5 volt voeding, basiskennis elektronica. Kent u bvb de wet van ohm niet, sorry maar dan kan je er beter niet aan beginnen.

Op de rest van de vragen hoop ik op jullie input, liefst nog van een mod of twee ook, als dat niet teveel gevraagd is :)

PS. Ik hoor u vast denken OH MY GOD, wat haalt die idioot zichzelf nu op de hals ? Wel... ik denk dat ook ;) Maar bon, baat het niet, dan schaad het niet.

ik lees hier ook al jaren mee, en zag her en der van die PIC toestanden passeren. ik ben er een 2tal keer mee begonnen, en het lukte toch echt niet hoor. dus dat online leren.... nah.

als jij hier nu van die 8051 atmel controllers wil uitleggen, zal ik het met veel zin ook volgen. ik zou graag compacter willen gaan dan een arduino. mede omdat ik vaak dingen bouw waar ik niet alle functionaliteit van een arduino nodig heb. een simpele RS232 logger bv, ik heb slechts 2 pinnen nodig, RX/TX en de usb kabel. beetje nutteloos als daar dan nog 16 I/O inputs in de weg zitten.

om arduino te leren, heb ik er gewoon 1 gekocht, heb 3 pdf boeken afgeprint (eerst mijn moo laserprinter moeten herstellen ervoor) en ben dan de hele boek (van de simpelste knipperled) gaan volgen waarbij ik elke oefening in de arduino stak. de leercurve ging heel snel toen.
probleem is dus vooral als je een online cursus geeft, dat er 10mensen aan het volgen zijn met ervaring, en die ene beginneling kan niet mee (hetgeen ik hier al had als ik die PIC toestanden zag passeren). er werd dan een hoop code online gegooid dat voor mij chinees leek.

je wil ook al gerber files leveren (ik kan geen printen maken) of je wil zelf printen sturen. het gaat dus al vlot een week duren voor iedereen kan beginnen. en dan rookt er ene zijn controller op. die moet wachten op een nieuwe print...
volgende maand komt er iemand op het topic, dat ook nog wil volgen... en de miserie begint. die haakt in no time af.
dat is het voordeel van een school. elk jaar opnieuw beginnen de lessen vanaf 0.
met een boek bepaald je zelf het leertempo, bij een online cursus zoals jij wil doen, bepaald de leraar dat.

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

Op 19 maart 2017 02:34:32 schreef fcapri:

je wil ook al gerber files leveren (ik kan geen printen maken) of je wil zelf printen sturen. het gaat dus al vlot een week duren voor iedereen kan beginnen. en dan rookt er ene zijn controller op. die moet wachten op een nieuwe print...
volgende maand komt er iemand op het topic, dat ook nog wil volgen... en de miserie begint. die haakt in no time af.
dat is het voordeel van een school. elk jaar opnieuw beginnen de lessen vanaf 0.

Ik denk dat het 'real time' volgen van een aantal posts niet echt nodig is. Wat de printen betreft, ik heb webruimte waar ik permanent data zoals gerber files, programma's, etc kan zetten. Iemand die er later aan wil beginnen kan dus de posts nalezen en de gerber files downloaden en naar een pcb boer sturen

Wat mijn vraag 4 betreft.
Zou ik het opsplitsen over meerdere posts.

Post 1: Cursus microcontrollers 8051: De hardware+schema
Post 2: Cursus microcontrollers 8051: Inleiding
Post 2.1: Cursus microcontrollers 8051: Instructie set
Post 3: Cursus microcontrollers 8051: Software: schakelaar en led
Post 4: Cursus microcontrollers 8051: Software: knipperled
Post 5: Cursus microcontrollers 8051: Software: looplicht
Post 6: Cursus microcontrollers 8051: Software: 24h klok
Post 7: Cursus microcontrollers 8051: Software: Seriele poort
Post 8: Cursus microcontrollers 8051: Software: Timers
Post 9: Cursus microcontrollers 8051: Software: Interrupts
Post 10: Cursus microcontrollers 8051: Software: I2C temperatuur sensor
Post 11: Cursus microcontrollers 8051: lichtdimmer
....?

Ik denk dat het overgrote deel van de hobbyisten die iets met microcontrollers doet dat heeft geleerd met online tutorials. Je leert het dan "zelf", als in, zonder docent die je iets uitlegt en corrigeert.

Er is tegenwoordig zoveel te vinden online, voor goedkope en eenvoudig verkrijgbare hardware (voor ~3 euro heb je een prima Chinese Arduino kloon), en juist over de Arduino omgeving en libraries is heel veel te vinden. Voor een groot deel van de mensen is dat ook best te volgen, zo blijkt uit het grote aantal gebruikers hier en op diverse andere fora.

Ik denk dat je met de combinatie die je voorstelt heel weinig publiek zult krijgen; assembly is echt niet meer van deze tijd, en voor de meeste mensen veel moeilijker te begrijpen dan C, en de 8051 is een antiek ding waarvan ik zo snel geen leuk ontwikkelboard voor een leuke prijs kan vinden. Hoeveel mensen gaan de moeite nemen om PCBs van jouw board te bestellen en zelf te bestukken, voordat ze ook maar iets kunnen proberen? Daarbij hebben ze ook nog een aparte programmer nodig, wat bij de Arduino e.d. niet het geval is; USB kabel erin en binnen 5 minuten knippert het eerste LEDje.

Waarom denk je hiermee te kunnen concurreren tegen de enorme hoeveelheid prima toegankelijk Arduino materiaal? Begrijp me niet verkeerd, ik wil echt niet de negatieveling uithangen, maar ik denk dat het met de gestelde randvoorwaarden weinig kans van slagen heeft.

Hoe je assembly kan begrijpen en C niet is me overigens een raadsel; C is echt niet moeilijk, veel overzichtelijker, en je hoeft veel minder details van de controller te kennen (memory model en zo). Daarbij is de code veel gemakkelijker mee te nemen naar een andere controller; ik schrijf regelmatig libraries die op meerdere platforms moeten kunnen draaien, en zolang je de periferal interfaces gescheiden houdt, kan dat prima. Dat gaat je met assembly niet lukken. Als je C kent, kun je in een paar dagen met een andere familie microcontrollers leren werken. Heb je ooit iets anders gedaan dan die 8051?

Ooit geprobeerd als assembly programmeur aan het werk te komen? Er is een reden dat bijna niemand dat nog doet...

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Op 19 maart 2017 08:17:14 schreef SparkyGSX:
Daarbij hebben ze ook nog een aparte programmer nodig,

Dat klopt niet Sparky, een AT89C51CC03 programmeer je via Atmel Flip, software die gratis is te vinden. Het enige wat je nodig hebt is een seriële poort op je computer en aangezien tegenwoordig pc's geen seriële poort meer hebben (uitwendig), heb je enkel dus een usb naar seriële converter nodig en een experimenteer print.
Ik heb geen ervaring met Arduino of Raspberry, gewoon omdat ik met Atmel voldoende kon en kan verwezenlijken.

Wat C betreft, het is mijn ding niet en nooit geweest. Al die If then else lussen, voorgekauwde libraries enzo, nee, ik was daar dus niet goed in op school.

High met Henk

Special Member

Volledig met sparky eens. Probleem wat ik zie tegenwoordig is dat men problemen heeft om efficiente code te schrijven (laatst iemand die zijn snelheidsmeter met 7 segment display deed en bij 50 km/h al stopte, omdat zijn code het neit meer bijhield!)

enfin een arduino is snel zat om tot zeker 200 km/h goed te meten... (en sneller ook wel.) Je moet dan iets gaan vertellen over interrupts, stack etc...

het zou handig zijn daar eens een artikel over te maken, zodat de arduino programmers een beetje verder kunnen komen.

(eerste wat ik met en arduino doe is de ISCP programmer erop en exit met de bootloader, wat het een mooi I/O bordje maakt met een ATmega328P)

en de Atmel AT90 of ATMEGA series prog je met een SPI bus.. IS ook meteen de opvolger van je AT89 dus.

E = MC^2, dus de magnetische compatibiliteit doet kwadratisch mee???

Ik denk da @SparkyGSX het goed verwoord heeft.
Wanneer je er geen speciale reden voor hebt dan ga je niet beginnen met een 8951 processor architectuur te leren.
Zeker niet wanneer je dat in assembly wil gaan doen want zoals eerder gezegd, je beperkt jezelf dan tot één type processor.

Overigens is een Arduino ook (vaak) een Atmel processor.
De AVR serie microprocessors waar de eerste Arduinos op gebaseerd waren kun je ook gewoon "kaal" gebruiken zonder de Arduino ontwikkelomgeving.
En ook die kun je in Assembly programmeren als je wilt.
Dat is zelfs mogelijk met Flip als je de "U" serie processors neemt, en dan heb je niet eens je USB > RS232 interface meer nodig.

Op 19 maart 2017 08:44:57 schreef kohen:Dat klopt niet Sparky, een AT89C51CC03 programmeer je via Atmel Flip

Oke, dat wist ik niet. De Atmel 8-bitters die ik ken (en de talloze andere microcontrollers waarmee ik heb gewerkt) programmeer je gewoonlijk via een ICP of JTAG programmer, of via een bootloader.

Juist die bootloader maakt de Arduino voor beginners zo handig, en de enkele keer dat ik zo'n board gebruik (voor een simpel hobbyprojectje of een tijdelijke testopstelling op het werk of zo), vind ik het ook reuze handig.

@HmH: Als het echt hard gaat, nauwkeurig moet, of het inlezen van zo'n signaaltje maar een van de vele taakjes is van een drukke controller, komt je er ook niet meer met een paar interrupts; je hebt dan al snel timer/counter/input capture hardware nodig, met DMA (direct memory access), als het even kan.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Op 19 maart 2017 08:17:14 schreef SparkyGSX:
Waarom denk je hiermee te kunnen concurreren tegen de enorme hoeveelheid prima toegankelijk Arduino materiaal?

Ik wil niet concurreren met wat dan ook. Dat is mijn bedoeling niet.

Ik stel hier de vraag of er behoefte is aan wat info en Q&A ivm controllers. Zonet merkte ik pas dat er reeds een PIC en AVR introduktie bestaat op CO. Komt mooi uit, moet ik er geen tijd in steken.

En het klopt wat je zegt Sparky: assembly wordt minder of bijna niet meer toegepast in de industrie. Tegenwoordig is het merendeel in C. I know. Erg spijtig vind ik dat. Een job vinden als assemby programmeur is ook dus onbestaande.
Ook topics of vragen hier ivm assembler zijn eerder dun bezaaid.

Langs de andere kant lig ik daar niet wakker van. Voor mijn werk moet ik soms zaken ontwikkelen. En dan maak ik toch mooi gebruik van 8051 controllers. Mijn baas kent het verschil nog niet tussen een transistor of mosfet, laat staan de verschillende types van controllers. :D

PS. die AT89C51CC03 werkt ook met een bootloader, anders zou het ding niet communiceren met Atmel Flip, maar dit terzijde.

High met Henk

Special Member

@sparky: i know, maar je moet de waarde van de counter nog wel in een isr uitlezen kort na de capture... Anders mis je er een paar...

De at90 en atmega's kun je zonder bootloader proggen. Er is hw voorradig om de flash en eeprom via de spi programmer te proggen.

E = MC^2, dus de magnetische compatibiliteit doet kwadratisch mee???
Lambiek

Special Member

Op 19 maart 2017 02:12:32 schreef kohen:
bedacht ik: zou het geen goed idee zijn om een cursus microcontrollers te geven, hier op CO ?

Het idee is op zich niet verkeerd, maar ik vraag me af of dat voldoende is. Als je zo iets doet moet je ook praktijk gaan geven, als je ziet hoe vaak er vragen komen op soft en hardware gebied over de cursus van pic-basic. Dat ga je dan hier ook krijgen, en zie je dat zitten.

En wat ook een probleem is, de mensen willen vaak teveel en te snel. Er moeten gelijk motoren aangestuurd worden en andere zaken die niet bij het beginnen horen. Begin bij de bron en bouw dat langzaam uit, zodat je ook weet wat je doet.

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 19 maart 2017 09:34:34 schreef kohen:
..merendeel in C. I know. Erg spijtig vind ik dat. Een job vinden als assemby programmeur is ook dus onbestaande.

"Assembly programmeur"?! Als je jezelf zo smal gespecialiseerd hebt, doe je toch wel wat fout (zacht uitgedrukt). Het hoort bij embedded software en als software engineer moet je er wel wat mee overweg kunnen (voor die ene keer dat het voorkomt). Het meerendeel zal toch C zijn (embedded) of hogere talen voor PC software.

M.i. is er genoeg info op het net en lijkt me weer een extra "cursus" hier overbodig. En zeker als het over 8051 en assembly gaat.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
bprosman

Golden Member

Ondanks dat de 8051 nog steeds mijn favoriete "core" is zou ik er niet aan moeten denken om grotere programma's in assembly te moeten schrijven. Daar heeft Keil-C toch wel mijn voorkeur. Overigens is het hierbij wel handig om kennis van assembly te hebben om in geval van tijdskritische zaken routines zelf te kunnen schrijven en linken.

De jongere generatie loopt veel te vaak zijn PIC achterna.

@HmH: daarom ben ik dus dol op Direct Memory Access; je hoeft de registers niet meer zelf uit te lezen!

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

8051 is een zeer krachtige processor door zijn 4 registerbanken waartussen hij kan schakelen zonder zaken op stack te zetten. Ideaal voor snelle interrupts en communicatie, hij is veel sneller dan je van zo'n oude processor zou verwachten. Maar hij is maar 8 bit, 12 MHz (een enkeling 16 MHz), heeft externe eprom/flash etc nodig en logica. Gewoon code runnen gaat dan wel traag hoor. Voor de hobbyist is het veel makkelijker en goedkoper een nieuwere microcontroller te kiezen. Die zijn goedkoper, kleiner, hebben geen externe componenten nodig.

De 8051-family (ik deed oa 8044, 80C152 en hogere types) is eigenlijk de leukste processor waarmee ik ooit (en veel) gewerkt heb. De eenvoud is eigenlijk wel een van de redenen daarvoor. Instellen van registers is duidelijk en snel te doen. Iets wat eenvoudig is kun je nog foutloos maken. Probeer dat maar eens met moderne systemen en software. Maar ik gebruik hem voor nieuwe projecten al 15 jaren niet meer.

Voor de hobby heb je AVR, PIC etc. En voor de prof ARM.

High met Henk

Special Member

@sparky: moet je wel je adres swappen (of de oude waarde overschrijven)

E = MC^2, dus de magnetische compatibiliteit doet kwadratisch mee???
bprosman

Golden Member

Maar hij is maar 8 bit, 12 MHz (een enkeling 16 MHz), heeft externe eprom/flash etc nodig en logica.

@Hoeben,
Je loopt wel achter hoor, heb vrij veel met de AT89CED2 gewerkt. Die heeft dat allemaal niet nodig.

64K Flash
2K Ram
2K EEPROM
Loopt op 40 of 60 Mhz en 20/30 in X2 mode.

http://www.microchip.com/wwwproducts/en/AT89C51ED2

De jongere generatie loopt veel te vaak zijn PIC achterna.
eSe

Honourable Member

Stel, je kent iets van analoge electronica, en wil nu beginnen met het serieuzere werk...

???????

p.s. Ik begrijp wel wat je bedoeld, maar toch. :-)

Groetjes,
eSe

CChheecckk yyoouurr dduupplleexx sswwiittcchh..

Op 19 maart 2017 12:19:48 schreef flipflop:
[...] "Assembly programmeur"?! Als je jezelf zo smal gespecialiseerd hebt, doe je toch wel wat fout (zacht uitgedrukt). Het hoort bij embedded software en als software engineer moet je er wel wat mee overweg kunnen (voor die ene keer dat het voorkomt). Het meerendeel zal toch C zijn (embedded) of hogere talen voor PC software.

Ik ben misschien dan niet ruimdenkend als ik nog steeds vasthoud aan assembly ja.

Vergelijk controllers even met muziek... de ene houdt van techno, de andere rock, en zo zijn er wel tientallen verschillende stijlen zoals house, jazz, blues, etc.

Ik hou nu eenmaal van een goeie ouwe 8051 in een nieuwer (atmel) jasje :)

Op 19 maart 2017 14:19:25 schreef bprosman:
[...]
@Hoeben,
Je loopt wel achter hoor, heb vrij veel met de AT89CED2 gewerkt. Die heeft dat allemaal niet nodig.

64K Flash
2K Ram
2K EEPROM
Loopt op 40 of 60 Mhz en 20/30 in X2 mode.

http://www.microchip.com/wwwproducts/en/AT89C51ED2

2k ram is weinig hoor. Vergelijk eens met andere controllers. Maar het ligt er ook aan wat je wil doen. Licht dimmen en andere simpele dingen, dan lukt het wel? Of meten en dataverwerking, dan heb je vast meer RAM nodig. Mijn meeste applikaties hadden de volle 64k rom en minimaal 32k ram. De 8051 heeft 128k adres ruimte, 64k code, 64k ram.

Ook met 60 MHZ, en met prefetches is het echt geen ARM. Die blaast 32 bit en een paar honderd MHz.

Het is dus gewoon de vraag: wat heb je nodig. Er is geen beste processor, alleen een beter toepassingsgebied.

Voordeel van Atmel is dat hij onder Microchip valt. Dan wordt hij niet snel obsolete.

bprosman

Golden Member

2k ram is weinig hoor. Vergelijk eens met andere controllers. Maar het ligt er ook aan wat je wil doen. Licht dimmen en andere simpele dingen, dan lukt het wel? Of meten en dataverwerking, dan heb je vast meer RAM nodig.

Heb voornamelijk machine en processbesturing gedaan en dan had ik vaak aan de standaard 256 bytes al genoeg.

De jongere generatie loopt veel te vaak zijn PIC achterna.

Mijn persoonlijke mening is, eenvoudig beginnen. Neem een bekende microcontroller, bijvoorbeeld een Arduino. Installeer de ide ervan en bekijk de voorbeelden. Loop je ergens vast bekijk dan een aantal fora. Koop daarnaast een goed boek over software architectuur cq ontwerp. Voordeel van de arduino code is dat die vrij universeel inzetbaar is. Ook voor b.v. een chipkit of esp8266 is die goed te gebruiken.
Of neem een raspberry pi. Heb tot voor kort daar geen ervaring mee maar heb een zero met wifi gekocht. Het installeren van softwaren en het aanpassen in linux gaat mij vrij gemakkelijk af. Maar goed heb er op het h.b.o. ook het een en ander van geleerd.

Op 19 maart 2017 15:18:29 schreef kohen:
Ik hou nu eenmaal van een goeie ouwe 8051 in een nieuwer (atmel) jasje :)

SM liefhebber :-)

Vergelijking met muziek vind ik niet zo raak. Techno en zo is nieuwer, maar niet bepaald een vooruitgang in kwaliteit. Nieuwere processoren zijn meestal wel een vooruitgang tov de 8051 cores. Maar goed, voor hobby mag alles uiteraard.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein