FlowCode geoptimaliseerd voor PIC16F876A ( Flitspaalmelder )

Postby schueler » Thu Apr 09, 2009 12:00 am

jaap57Jammer dat ik nu wat minder tijd heb want het vaarseizoen en het zweefvlieg seizoen beginnen weer en dan wordt het vreselijk druk


... nu valt bij mij pas het kwartje..... ( spreekwoord moet hoognodig aangepast worden )

Zweefvliegen en varen.... Nu pas begrijp ik waarom jij de nadruk legt op coördinaten en hoogte.

En collega van me had een GPS-apparaatje waarmee hij precies zijn vlucht mee kon opnemen en later terug zien op de PC.


Wil jij de gegevens later ook opslaan of puur alleen voor de fun?


Ben
schueler
 
Posts: 1433
Joined: Thu Jan 02, 2014 10:40 am

Postby schueler » Fri Apr 10, 2009 12:00 am

Nu ook datum en tijd inclusief correctie van datum!!!

Even wat gespeeld met de datum en tijd en heb nu voor mekaar als de tijd een overflow geeft dat de datum ook gecorrigeerd word. Zelfs rekening houdend met dag, maand en zelfs jaar inclusief schrikkeljaar...
Onder de puristen onder ons die de code goed bekijken zal opvallen dat ik niet volledig ben geweest. Elk 100 jaar ( 2000, 2100, 2200, etc. ) is het geen schrikkeljaar en daar test ik niet op. Lijkt me ook niet nodig aangezien dit nu nog 91 jaar duurt voordat dat voorkomt

Dus...

Om de datum en tijd op het schermpje te krijgen heb ik het beeldinformatie even wat omgegooid. Het wisselt nu tussen tijd/datum/snelheid en latitude/longitude.


Dit is een kleine aanvulling op de originele code.

Volgende stap is om dit samen met de code van Jaap te voegen.
Ben nog steeds van mening om onze west buren niet voor het hoofd te stoten door "mph" weg te laten maar wil wel de intelligentie van de code van Jaap!!!


Ben

edit: nieuwe bestanden toegevoegd
Attachments

[The extension fcf has been deactivated and can no longer be displayed.]

[The extension hex has been deactivated and can no longer be displayed.]

schueler
 
Posts: 1433
Joined: Thu Jan 02, 2014 10:40 am

Postby buckfast_beekeeper » Fri Apr 10, 2009 12:00 am

Schueler
Onder de puristen onder ons die de code goed bekijken zal opvallen dat ik niet volledig ben geweest. Elk 100 jaar ( 2000, 2100, 2200, etc. ) is het geen schrikkeljaar en daar test ik niet op. Lijkt me ook niet nodig aangezien dit nu nog 91 jaar duurt voordat dat voorkomt


Hallo Ben,

Je geeft zelf de voorzet.

Eeuwen deelbaar door 400 zijn wel schrikkeljaren. 2000 was dus wel een schrikkeljaar. Dat ligt dus achter ons en daar hoef je geen rekening meer mee te houden.

Voor de rest vind ik dat je niet echt optimistisch bent. Je denkt dus dat je software binnen 91 jaar niet meer gaat gebruikt worden.

Veel succes nog met je project. Zelf heb ik voldoende gps toestellen met sirfIII. Een domdom 910 en een Garmin Forerunner 30. Wat de eerste doet zal iedereen wel weten denk ik. De Garmin is een sport gps met track functie. Hij slaat de coördinaten op, snelheid, hoogte, hartslag, trapfrequentie, ... meer dan voldoende denk ik. Nadien kan je de gegevens dan bekijken in een programma van Garmin of Sporttracks waar je er onmiddellijk een satellietbeeld bij krijgt.

Een uitdaging om dit ook te realiseren?
Attachments
Mijn-activiteiten-29-03-2009.jpg
buckfast_beekeeper
 
Posts: 820
Joined: Thu Jan 02, 2014 3:27 pm

Postby schueler » Fri Apr 10, 2009 12:00 am

Nog een kleine toevoeging voor deze code: Compass.

Dit is nog steeds de originele code van de Franse auteurs maar dan met datum ( UTC+1 +zomer/wintertijd ) en kompas functie.

Het past nog steeds in de PIC16F876A.

Nu de paashaas aan de deur staat ga ik me eens verdiepen in de code die jaap geschreven heeft met betrekking op flitspaal detectie.
Kijken wat daar nog van bij kan in de PIC16F876A.

Ik zit er overigens aan te denken om zomer/wintertijd aan te geven via Pin A.2 en weergave ( Coördinaten of Datum/Tijd/Snelheid/Kompas ) via A.4.
Wintertijd is nu ingesteld op april tot en met oktober, wat rare situaties op kan leveren met betrekking tot de tijd correctie.
Ook niet alle landen hebben zomer en wintertijd.

In de auto ben ikzelf in ieder geval niet geïnteresseerd in de coördinaten als ik rij. Alleen als ik een nieuwe flitspaal ontdek
De nauwkeurigheid moet dan wel uitgebreid worden zoals bij de code van Jaap tot op 8/9 cijfers.


Ben
Attachments

[The extension fcf has been deactivated and can no longer be displayed.]

[The extension hex has been deactivated and can no longer be displayed.]

schueler
 
Posts: 1433
Joined: Thu Jan 02, 2014 10:40 am

Postby schueler » Mon Apr 13, 2009 12:00 am

Weer een beetje uitgebreid: Hoogte

Het past nog steeds inde PIC16F876A. Ik heb naar de code van Jaap gekeken en moet me daar goed in verdiepen. Ik weet zo even nog niet of dat ook nog in de PIC16F876A gaat passen maar anders wordt dat alleen beschikbaar voor de PIC18F2520.

De code die ik nu hier heb geeft op een 2x16 LCD de tijd, datum, snelheid, richting, hoogte en coördinaten weer.
Hiervoor is een kleine aanpassing nodig op de print. Zowel A.2 als A.4 gebruik ik om de info op het LCD te veranderen.

A.1 is nog steeds voor de keuze tussen mph of km/h
A.2 is voor coördinaten of datum/tijd, en etc.
A.4 geeft de keuze tussen kompas of hoogte.


Ben
Attachments

[The extension fcf has been deactivated and can no longer be displayed.]

[The extension hex has been deactivated and can no longer be displayed.]

schueler
 
Posts: 1433
Joined: Thu Jan 02, 2014 10:40 am

Postby jaap57 » Mon Apr 13, 2009 12:00 am

Hi Ben, ja die MPH/KMH had ik er makkelijk in kunnen laten achteraf. De hoeveelheid geheugen die dat verbruikt is eigenlijk niets en input lijnen genoeg. Maar de tijd en datum kan er naast mijn code niet meer in. Misschien kan je eens kijken naar die zoekroutine van die Fransen. Dat zoeken gaat veel te traag naar mijn zin maar ik heb nu de tijd niet om daar nog eens aan te gaan sleutelen. Bovendien ben jij daar wat vlotter in schat ik zo Succes, ik volg je vorderingen op de voet!
jaap57
 
Posts: 117
Joined: Thu Jan 02, 2014 3:31 pm

Postby schueler » Wed Apr 15, 2009 12:00 am

Heb weer wat bijgevoegd aan het systeem.
Geen extra informatie maar gebruikers gemak.
Er zit nog 1 addertje onder het gras en dat is dat je UTC momenteel nog niet op negatieve getallen mag zetten.

Door twee druktoetsen op Poort A.2 en A.4 te zetten ( geschakeld naar Vdd en een weerstand van 10k naar ground ) kun je je setting instellen en bedienen. Settings worden opgeslagen in de interne EEprom.

In normale mode
1 keer drukken op A4 ->
wissel tussen coördinaten op het scherm of datum/tijd/etc.

1 keer drukken op A2 -> Menu
Als je 4 seconde niets doet valt het automatisch terug.
Door nog een keer op A.2 te drukken ( binnen 4 seconden ) ga je naar het volgende menu item. Met A.4 kun je het wijzigen. Om de wijziging op te slaan druk je vervolgens op A.2. Mocht je de wijziging niet willen opslaan wacht je 4 seconde totdat het systeem uit het menu gaat.

Menu
2 [0]=MPH [1]=km/u
3 [0]=Winter time [1]=Summer time
4 -12 .. 12 (UTC+n)
5 [0]=Compass [1]=Degrees
6 [0]=Heading [1]=Height

Helaas kon ik in het menu geen tekst plaatsen omdat de data ruimte in de PIC nu vol is.


Ik zal niet veel meer wijzigen in deze code voor de PIC16F876A.
Op de UTC met negatieve getallen dan na, tijd en datum worden nog niet gecorrigeerd als de uren negatief worden en moet dus nog even aangepast worden. Ik verwacht niet dat dit buiten de voegen gaat lopen.

Verdere uitbreidingen zullen op de PIC18F2520 zijn wat hier ergens anders op de forum te lezen zal zijn.


Ben

edit : small init bug fixed ( als je de module aanzet )
edit : bug fix; West en East waren verwisseld...
Attachments

[The extension fcf has been deactivated and can no longer be displayed.]

[The extension hex has been deactivated and can no longer be displayed.]

schueler
 
Posts: 1433
Joined: Thu Jan 02, 2014 10:40 am

Postby schueler » Thu Apr 16, 2009 12:00 am

Kon het niet velen dat ik de tijd niet goed kon krijgen als UTC negatief was. Nu kunnen ook westerburen de code gebruiken zonder problemen.
Tel bij de UTC tijd 12 op en sla deze op in de EEprom via het menu ( of via de programmer in de EEprom schrijven kan ook... )

Voor Nederland is het dus UTC+1 +12 UTC wordt dus waarde wordt dus 13.

Voor ijsland of zo die UTC-1 hebben wordt het dus UTC-1+12 = 11.

Tevens heb ik meteen ervoor gezorgd dat de datum ook netjes wordt aangepast als deze een dag terug moet.

Er zot ook nog een slordige schoonheidsfout in de kompas code van mij. Alles werd 11,25 graden verschoven door een verkeerde link naar de string. al verder niet uitleggen hoe of wat maar het is opgelost.


Voor mij is de code nu wel zo'n beetje af en de PIC16F876A staat nu propvol ( met veel leuke uitbreidingen op de originele code!!! ).

Memory Usage Report
===================
RAM available:368 bytes, used:338 bytes (91.9%), free:30 bytes (8.1%),
Heap size:30 bytes, Heap max single alloc:29 bytes
ROM available:8192 words, used:8142 words (99.4%), free:50 words (0.6%)


Voor verdere uitbreidingen ga ik over op de PIC18F2520 zodat ik de code van Jaap erbij kan zetten. Ik heb nog gekeken of ik de Flitspaal opzoek code kon versnellen maar dat is marginaal. De bottleneck is de overhead van adressen en commando's die over I2C verstuurt moeten worden. Dat kost de meeste tijd. Met een SPI EEprom zou dit misschien wel wat versneld kunnen worden maar dan moet de boel wel op de schop.


Ben
Attachments

[The extension fcf has been deactivated and can no longer be displayed.]

[The extension hex has been deactivated and can no longer be displayed.]

schueler
 
Posts: 1433
Joined: Thu Jan 02, 2014 10:40 am

Postby schueler » Thu Apr 16, 2009 12:00 am

Nog even wat uitleg over de code:

In normale mode
1 keer drukken op A4 -> wissel display info
wisselt tussen coördinaten op het scherm of datum/tijd/etc.

1 keer drukken op A2 -> Menu
Met A.2 kun je door het menu bladeren.
Met A.4 verander je de waarde van het menu item.

Als je ~4 seconde niets doet valt het automatisch terug. De waarde van het menu item dat geselecteerd is wordt dan niet opgeslagen. Door naar het volgende menu item te gaan word de vorige automatisch opgeslagen.



Menu:
2 [0]=MPH [1]=km/u
3 [0]=Winter time [1]=Summer time
4 [0 .. 24] (UTC -12 .. +12)
5 [0]=-N- [1]=Degrees
6 [0]=Compass [1]=Height



Wijziging hardware:
Weerstand 10k van A.2 naar ground.
Weerstand 10k van A.4 naar ground.
Drukknop van A.2 naar Vdd.
Drukknop van A.4 naar Vdd.

A.1 heeft geen functie meer in deze code om compatibel te blijven met de originele code.

Ben
schueler
 
Posts: 1433
Joined: Thu Jan 02, 2014 10:40 am

Postby schueler » Tue Apr 21, 2009 12:00 am

jaap57Misschien kan je eens kijken naar die zoekroutine van die Fransen. Dat zoeken gaat veel te traag naar mijn zin maar ik heb nu de tijd niet om daar nog eens aan te gaan sleutelen. Bovendien ben jij daar wat vlotter in schat ik zo Succes, ik volg je vorderingen op de voet!


Ik heb eens goed gekeken en ben tot de conclusie gekomen dat de auteur het niet zo handig doet inderdaad. Al de coördinaten ( lattitude ) netjes gesorteerd in het geheugen zitten kun je met de butterfly techniek binnen een paar stappen tot je waarde komen of tot de conclusie komen dat die er niet in staat. Nu momenteel wordt het gehele geheugen doorzocht... jammer.

Bij 10.000 punten zou ik in de coördinaat binnen 16 pogingen kunnen achterhalen of die geldig is of niet.

Dat is een enorme snelheidswinst ten opzichte van de huidige methode. Het probleem is alleen dat het genereren van het adres van het I2C geheugen niet echt optimaal is ( veelvouden van 6 ) dus daar moet ik even een trucje voor vinden aangezien ik alleen maar unsigned byte en signed int kan gebruiken in flowcode.
Ik heb inmiddels al gevonden dat je in C-blokjes wel unsigned int en long mag definiëren. Ik ga hier eens even lekker mee aan de slag en als ik resultaten heb zal ik deze weer op het forum zetten.


Ben
schueler
 
Posts: 1433
Joined: Thu Jan 02, 2014 10:40 am

PreviousNext

Return to 2008-11 Flitspaalmelder

Who is online

Users browsing this forum: No registered users and 1 guest