SnowDude schreef op woensdag 02 september 2015 @ 09:30:
Het is heel simpel, als je een example sketch opent dan zie je dat die wire.h gebruikt. Vervolgens open je je arduino folder en doet een search naar die file naam. Je moet nooit notepad gebruiken voor dit soort files. Je kan beter een echte editor gebruiken als notepad++. Die heeft ook opmaak ingebouwd voor C en C++ Ook kan je in alle bestanden in een folder zoeken naar een specifieke tekst.
Overwegen waard. Echter, ik zie, als ik hem in wordpad open (even om te kijken of dat wel netjes gaat, doet het) nog steeds niet dat stukje init staan dat je
hier aanhaalt.
Zoek eens op Atmel in plaats van Amtel, dat kan wat helpen

Maar ik snap het wel, en soms vergeet ik wel eens dat ik al 25 jaar hobby programmeer ervaring heb. Maar C is ook voor mij relatief nieuw, tot ik met arduino's begon te spelen had ik dat nog nooit gebruikt.
Ik werk nu dus ongeveer 4 jaar zelf met C, maar met een hele basic processor: PIC16F690. Zit alleen een SSP in, geen MSSP, dus I2C masters e.d. kan je er niet mee doen zonder bitbanging. Het is pas het laatste jaar dat ik echt meer uit chips ben gaan halen en andere chips ben gaan gebruiken (zowel andere PIC's als later Arduino's). Ik heb pas sinds april Arduino's. En nu heb ik natuurlijk de mazzel dat ik niet helemaal van scratch begin, maar dat kan ook mijn pech zijn. Ik vind Arduino code nog steeds erg omslachtig, sowieso voor de programmeur.
Hier maak je alleen een cruciale denk fout. Ten eerste zijn libraries juist ontworpen om efficient met geheugen om te gaan en de code overzichtelijk te maken. Ten tweede zijn veel native libraries een stuk efficienter geschreven dan jij kan.
Even heel eerlijk, ik heb voor de PIC nog nooit een library gezien of gebruikt. Ja, standaard dingen als math.h, maar of je dat al echt libraries mag noemen?
Volgens mij gaat het bij jou vooral fout omdat je een fout maakt in je interrupts. Interrupt afhandeling is een van de aller moeilijkste dingen om te doen, omdat je via een te trage interrupt routine in een continue loop komt.
Kan, met een van de Chinese gevallen echter was ik daar niet mee bezig en die heb ik weggeflikkerd.
Dat is helemaal niet erg maar doe het stap voor stap, en hou er rekening mee dat sommige dingen voor jou efficienter lijken maar voor een compiler omslachtiger zijn en vise versa

Als je en lib gebruikt en daar maar twee regels code van gebruikt dan worden alleen die 2 regels code gecompiled en niet je hele lib. Jij bent gewoon tegen libraries in het algemeen en daar maak je het je zelf een stuk lastiger mee. Libraries zijn zo'n beetje de basis van C, het maakt je code meer onafhankelijk van de hardware. Er is denk ook bijna niemand hier die zijn serial output hard in stelt, maar gewoon de library functie Serial.Begin(baudrate) gebruikt.
Ik gebruik serial eigenlijk helemaal niet. Ja, zo nu en dan serial print met wat testen om te kijken wat ie waar in het programma doet, maar verder niet. Kan trouwens ook nog een leuke worden met de 32U4 chip, want daar moet je serial1 gebruiken om je RX/TX pinnen te gebruiken... Houdt een compiler of library daar ook rekening mee?
RobV schreef op woensdag 02 september 2015 @ 12:51:
Een van de doelen van Arduino (althans, zoals ik het zie) is volgens mij het toegankelijk maken van electronica. Niet ieder heeft de intelligentie, de tijd, of het vermogen (geld) om datasheets te doorgronden om te kijken welke bit in wel register er gezet moet worden voor een bepaalde activiteit. Koop in een webshop een Arduino met een TFT scherm en een paar draadjes, laad de example code, build, run. Iedereen kan nu dingen prototypen. Dat was daarvoor nauwelijks te doen. Ook ik heb profijt van deze laagdrempeligheid gehad. Arduino is geen rocket science, en geen 'ultimate oplossing'. Als je het beter weet / beter kan / beter wil dan houdt niemand je tegen. Maar ga niet Arduino (als concept) de schuld geven als je custom driver code niet werkt, want dat is appellen en peren vergelijken.
Het is ook niet eerlijk om arduino te bombarderen tot bullshit o.i.d., want zonder die nRF library's had ik nooit richting arduino gegaan. Echter ook daar heb ik diverse door mijn vingers gehad voordat ik er eentje had die wel werkte. En daar ben ik blijkbaar goed in, want dat heb ik met meer libraries gehad.
SnowDude schreef op woensdag 02 september 2015 @ 11:25:
De native libs die zijn over het algemeen heel compact geschreven en ze hebben het voordeel dat ze hardware onafhankelijk zijn. Op het moment dat je het juiste board selecteert dan gebruiken ze automatisch de juiste pinnen en functies. Het nadeel van deze is dat ze heel algemeen zijn geschreven, niet alle functionaliteit is altijd beschikbaar, en sommigen hebben wat standaard instellingen waar je rekening mee moet houden. De wire lib zet bijvoorbeeld standaard de pull-ups aan op de i2c interface. Dat is vaak handig, maar in een situatie waar je meerdere arduino's aan sluit op de zelfde i2c bus kan het behoorlijk vreemde problemen geven.
Dat is op dit moment wat ik wil doen, meerdere Arduino's op 1 bus, omdat ik inmiddels op de ene Micro de SPI bus al aardig vol heb gemaakt en eigenlijk niet wil dat deze constant de nRF aan het pollen is. Natuurlijk kan ik de interrupt functie van de nRF aanzetten, maar blijkt nog verdomde lastig. En die nRF lees ik wel uit met libraries.
Ik wist trouwens niet dat de wire library de intere pull ups zelf aan zet. Moet ik trouwens ook meer rekening mee houden, ik heb iedere keer al weerstanden geplaatst als iemand zegt: "Maar je kan ook de interne pull ups gebruiken!"
[
Voor 12% gewijzigd door
Pizza_Boom op 02-09-2015 13:30
]