hallo

ik wil mijn eerste stapjes zetten in het programmeren van micro controllers. hiervoor zou ik graag een programmeertaal leren waarmee ik op termijn zowel PIC's als AVR's mee kan programmeren.
ik een beetje ervaring in C++ van op school.C++ is dacht ik niet bruikbaar.
het progamma en de compiler moeten gratis en onbeperkt zijn (student)
ik heb ook de PIC tutorial vanop deze site eens goed bekeken, maar van dat taaltje snap ik niets.

welke programmeertaal kan ik dan best leren?

hartelijk dank
White ghost

C++ kan zeker wel bruikbaar zijn, tenminste voor AVR's, of er ook C++ compilers zijn voor PIC's dat weet ik niet.

Als je een programmeertaal wilt leren die voor zowel AVR's als PIC's bruikbaar is, dan kan je niet om C heen. Beide microcontrollers kunnen in C geprogrammeerd worden.

Vraag me trouwens af of er compilers bestaan die C voor PIC's en AVR's kunnen compileren. Je hebt wel SDCC maar ondersteund geen AVR's meer.

Voor AVR's heb je de gratis compiler avr-gcc en voor PIC's onder andere de C18 compiler, alhoewel deze niet helemaal gratis is.

Assembly, dat is wat gebruikt wordt in die PIC tutorial, zou je ook kunnen proberen, maar dan moet je voor beide microcontrollers de verschillende instructies leren.

het kunnen 2 afzonderlijke progammas zijn

als ze maar dezelfde taal verstaan en een HEX bestand kunnen aanmaken :)

welk progamma kan ik dan gebruiken om in C te programeren voor PIC?
(wil met PIC beginnen aangezien ik er hier eentje liggen heb)

hartelijk dank

Voor avr kun je het beste gewoon avrstudio van atmel gebruiken. avrstudio werkt met de gnu compiler collectie GCC. Daarmee kun je geen c++ programmeren voor avr. Als je c++ code gebruikt dan lijkt veel in eerste instantie te werken. Ik heb dat in den beginne als zeer lastig ervaren, maar alles went.
Ik heb geen flauw idee of pic ook met c kan worden geprogrammeerd.
Als dit wel mogelijk is dan is met jouw ervaring c de beste optie.

EDIT: ik type niet snel genoeg.

je kan voor zowel avr als voor pic een C-compiler downloaden bij mikroelectronica: www.mikroe.com

verder zijn er nog genoeg alternatieven maar geen crosscompiler dus dan werk je altijd met 2 verschillende programma's en gui's

C is idd het beste voor jou denk ik aangezien je al ervaring hebt.
Voor AVR is AVR studio beschikbaar.
Op deze site http://www.mikroe.com/eng/home/index/ staan er C-compilers voor avr als voor pic. (niet gratis maar er zijn demo's)

Timmie was me net voor.

het zijn wel allemaal zeer kostelijke progammas voor een student hoor
maar bedankt

AVR Studio samen met winavr en MPLab met C18 zijn gewoon gratis hoor! (Alleen zitten er wat haken en ogen aan die C18-compiler)

Op 3 juni 2010 10:13:25 schreef white ghost:
als ze maar dezelfde taal verstaan en een HEX bestand kunnen aanmaken :)

Je kunt niet zomaar een C bestand van een AVR compilen met een PIC compiler en dat in een pic zetten.

Een PIC en AVR zijn daarin compleet verschillend. De talen lijken op elkaar, maar iets simpels als een ledje laten knipperen is al anders.
Als je daarna begint met timers en interrupts heb je een compleet andere structuur.

Vergelijk het met een sinaasappel en een banaan. Je kunt ze beide met een mesje (= C) pellen, maar een banaan in een sinaasappelpers gaat mis. :P

(Ernie! ERNIE! Er zit een banaan in je oor! Doe dat maar eens met een sinaasappel..)

C voor een PIC en C voor een AVR zijn vrijwel hetzelfde.

Het enige is dat als je een AVR gaat programmeren, er al snel iets met de hardware moet gebeuren. En de hardware binnen een PIC en AVR zijn verschillend.

Nu heb ik zelf een programmatje gemaakt dat van:

LED PD3

iets maakt waarmee ik LED_HIGH(); en LED_OUTPUT(); kan roepen. Als je dat ook zou maken voor een PIC, dan kan je het knipperen van het ledje al portable maken.

Maar ik had niet de indruk dat de TS daarnaar op zoek was. Wat ik begrijp is dat ie niet wil dat ie iedere week een nieuwe programmeer taal moet leren.

Dus als je je realiseert dat de hardware van PICs en AVRs anders zijn, kan je de taal C prima gebruiken. En dat sluit heel mooi aan bij je C++ ervaring. Er zijn in C een paar C++ constructies die je niet kunt gebruiken.

De reden dat C++ op AVR en PIC niet werkt is dat deze processoren vrij klein zijn. En C++ levert vaak al voor een "hello world" of "knipper led" programma al iets op wat groter is dan er in past.

dank aan iedereen

ik ge nu eens op zoek naar een nederlandstalige C tutorial

whiteghost

Op 3 juni 2010 10:48:06 schreef rew:
Er zijn in C een paar C++ constructies die je niet kunt gebruiken.

@rew, Weet jij (of iemand anders) of er ergens een overzicht is van de c++ functies die wel beschikbaar zijn?
Toevallig liep ik deze week tegen een probleem aan dat ik thuis werkend had gezien en dat ik bij een vriend niet door de compiler kreeg.
Ik moest deze regel

for(int i=0; i<10; i++ ) ...

terugzetten naar

int i;
for( i=0; i<10; i++ ) ...

Ik probeer nu C++ in avrstudio te vermijden maar duidelijkheid zou wel wenselijk zijn.

Dat de regel for(int i=0; i<10; i++) niet werkt ligt aan de C versie. Als je bij Project->Configuration Options->Custom Options kijkt dan moet er bij Custom Compulation Options -std=gnu99 staan. Als dit er niet staat dan krijg je dat probleem. Heeft dus niets met C++ te maken.

Ik heb het boek: http://www.elektor.nl/products/books/microcontrollers/avr-nl.709201.ly….
Het kost wel 40 euro maar alles staat er zeer mooi in uitgelegd van A tot Z.
Ook voorbeelden zoals met toetsenbord, RTC, ...

Mvg Bart

hoe noemt men "compile" in MPLAB?

ben er voorlopig wat in aan het klungelen,
hoop snel iets in die pic te krijgen zodat ik snap hoe het werkt in en outputs configureren

build all. of ctrl + F10 zo uit het hoofd.

Tsja kom ik weer met mijn Arduino :-)

op http://arduino.cc vind je een board voor 26 euro dat je via nederlandse kanalen kan bestellen. Een compleet gratis ontwikkel omgeving. Werkt out of de box heel simpel. Is feitelijk een subset van C maar gewoon ook C programmeren. Instap is bijzonder laag en een leuke start. Ben sinds 4 maanden er mee bezig en de hordes die ik zag van programmeren programmer fuses enz enz heb ik nu niet. Leuke laagdrempelige instap, complexer maken kan altijd nog :-)

Succes

ik heb heb al vele zaken geprobeerd in MPLAB met C maar krijg altijd
"build failed"

als we er van uitga dat die programmas juist zijn, moet het wel aan de ene of andere instelling liggen.

ook de instellingen heb ik veranderd zoals sommige tutorials beschrijven

altijd maar "build failed"

wat kan ik daar aan doen?

whiteghost

Voor welke microcontroller ben je eigenlijk bezig?
MPlab is vrij uitgebreid, ik kan er ook enkel mee werken als er enkele stukjes voorgekauwd gegeven worden. Heb je MPlab en vervolgens de C18 compiler geinstalleerd? Normaalgezien verwerkt die zichzelf erin.

Vervolgens, geeft de compiler nog extra fouten? (een bepaalde regel?) Door te dubbelklikken op een fout ga je vaak naar de desbetreffende fout.

In het Output venster staan de foutmeldingen, inclusief de regelnummers. Dubbelklikken brengt je bij die regel. De foutmelding geeft aan wat er fout is.
"build failed" zegt dus niets als je niet aangeeft wat de foutmeldingen zijn.

ik probeer met de PIC 16F628

MPLAB en de C18 compiler zijn geïnstalleerd.

wil er soms iemand een proagrmma schrijven om bvb 1 LED te laten knipperen op de A.2 poort voor de PIC 16F628

dan is iedereen zeker dat het programma correct is.

ik zal het dan compileren en de foutmeldingen posten.

dank!

Voor de 16F reeks heb je volgens mij geen (gratis) C compiler bij microchip. Daarom dat ik het vroeg.
Als je MPlab wilt gebruiken, met de C18 compiler (voor de 18F reeks), zal je moeten overstappen op een dergelijke microcontroller.

Heb je al eens C geprogrammeerd? Indien niet, is C in MPlab naar mijn bescheiden mening toch niet de geweldigste instap.

ik dacht al zo iets met die "18"
ik heb geen ervaring in C wel een beetje in C++.

waarmee kan ik een PIC 16F8XX dan wel gratis compileren?

Ik zou gewoon starten met Picbasic welke gratis is tot een bepaald aantal lijnen, en waarvoor een zeer mooie nederlandse tutorial is uitgeschreven. http://www.picbasic.nl/

gratis C compilers voor de 16f reeks zijn niet talrijk.