Nieuwe Code Flitspaalmelder

Postby joeri fr » Thu Mar 11, 2010 12:00 am

Ik bedoelde de formule om van decimalen naar seconden te gaan;
unsigned char dummy = (unsigned char) ( ( ( gps.gps_lat.minute * 60 ) + 50 ) / 100 );
if ( dummy < 10 ) lcd_putc( '0' );
lcd_value_uchar( dummy );
lcd_putc( 39 ); // '
dummy = (unsigned char) ( ( ( gps.gps_lat.decimal * 60 ) + 50 ) / 100 );


bij het berekenen van 'dummy' heb je dan geen int nodig?

Groeten
joeri fr
 
Posts: 87
Joined: Thu Jan 02, 2014 3:27 pm

Postby schueler » Thu Mar 11, 2010 12:00 am

Ja, daar had int moeten staan...
Zeer terechte opmerking.

Ik heb het nu opgelost in "gps.c" en "search_eeprom.c" zelf.
In "gps.c" wordt de decimaal ook in seconden omgezet en in "search_eeprom.c" wordt de seconden uit de eeprom ook nog in decimal omgezet. Zo blijft de rest van de code compatibel en kun je in "display.c" de variabelen gps.longitude.seconde en gps.laitude.seconde gebruiken.
Beschikbaar vanaf versie 1.26c dus...

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

Postby joeri fr » Thu Mar 11, 2010 12:00 am

ik wacht ongeduldig af
joeri fr
 
Posts: 87
Joined: Thu Jan 02, 2014 3:27 pm

Postby joeri fr » Thu Mar 11, 2010 12:00 am

i = ( (int) read_ext_eeprom( EEpromAddr, ( unsigned int ) i2c_addr ) );
i = i - 128;

Dit moest ik in 2 regels zetten in search_eeprom.c. bij 1 regel krijg ik een onstabiel lopend programma... (gecompileerd met een andere build van 9.65 en met 9.7).
joeri fr
 
Posts: 87
Joined: Thu Jan 02, 2014 3:27 pm

Postby schueler » Thu Mar 11, 2010 12:00 am

Ik kreeg allerlei foutmeldingen bij versie 9.7 waar ik geen wijs uit kon. Er werd ook niet aan gegeven wat er fout gingen kreeg regelnummers terug die ver buiten het bereik van mijn bestand lagen.

Ik zal het morgen eens proberen.
Versie 1.26c werkt overigens goed maar heb nog iets vreemds ontdekt wat ik nog even wil uitzoeken of dat klopt of niet. Kom er later op terug.

Bedankt voor de tip!


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

Postby joeri fr » Fri Mar 12, 2010 12:00 am

Ik krijg geen foutmeldingen bij het compileren, nadat ik bovenstaande heb veranderd. De display is ook correct, maar ik krijg geen detectie van een flitspaal!
Ik compileer wel onder windows7. Misschien moet ik de compabiliteitsmode windows xp of zo aanzetten...
Wat draai jij van OS?
joeri fr
 
Posts: 87
Joined: Thu Jan 02, 2014 3:27 pm

Postby schueler » Fri Mar 12, 2010 12:00 am

Joeri Fr... maar ik krijg geen detectie van een flitspaal!

Dat is vreemd...
Dat zou niets uit moeten maken...
Is je flitspaal database in de eeprom nog wel intakt?

Joeri FrIk compileer wel onder windows7. Misschien moet ik de compabiliteitsmode windows xp of zo aanzetten...
Wat draai jij van OS?

Ik gebruik XP maar dat mag niet uitmaken.
Het is compiler afhankelijk, niet operatingsystem...

Ik zal dit weekeinde eens kijken.
Versie 1.26c was overigens geen succes.
Ergens iets niet lekker waardoor ik denk ik seconden met decimalen vergelijk of zo...
Kom ik ook dit weekeinde op terug.


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

Postby joeri fr » Sun Mar 14, 2010 12:00 am

ja, de flitspalen staan allemaal mooi in de eeprom. (8143 palen).

Het volgende gebeurde;
- ik compileerde de 1.26b versie zelf
- inladen in 876A
- opstarten: groene led knipper onregelmatig ('radartje' beweegt ook onregelmatig)
- bij een 'fix van de gps gaat het alarm verschillende keren af

Dan heb ik opnieuw gecompileerd met de regel i=i-128 apart.
Nu loopt het programma mooi, maar vindt geen enkele flitspaal, buiten 1tje op een plaats waar absoluut geen staat.

Misschien zitten er nog te lange regels of teveel bewerkingen in 1 regel?
joeri fr
 
Posts: 87
Joined: Thu Jan 02, 2014 3:27 pm

Postby schueler » Sun Mar 14, 2010 12:00 am

Joeri FrMisschien zitten er nog te lange regels of teveel bewerkingen in 1 regel?

Dat betekend dus dat ze een paar kritische dingen aan de compiler veranderd hebben. De code mag niet zomaar "functioneel" ander zijn bij een nieuwe release van een compiler. Zie het eigenlijk als een bug in de compiler.
Hoe een compiler omgaat met lange berekeningen heb je zelf in de hand. De ene compiler is de andere compiler en kan uit dezelfde vergelijking een andere uitkomst komen. Om dit voor te gebruik je dan de haakjes om prioriteit te geven.

bijvoorbeed c is van het type char.

Wat is de uitkomst van c = 45 * 4 / 11 ?

De meeste zullen meteen 16 roepen.
Ik denk dat er 0 uit zal komen.
Waarom?
De meeste compiler werken van rechts naar links. Dus eerst "4 / 11" wat resulteert in 0 en dan de vermenigvuldiging wat 45 * 0 = 0 geeft.
Als het gewenste resultaat 16 was moet je dus haakjes aangeven zodat de compiler weet wat je wilt...

Dus : c = ( 45 * 4 ) / 11


Joeri Frja, de flitspalen staan allemaal mooi in de eeprom. (8143 palen).

Het volgende gebeurde;
- ik compileerde de 1.26b versie zelf
- inladen in 876A
- opstarten: groene led knipper onregelmatig ('radartje' beweegt ook onregelmatig)
- bij een 'fix van de gps gaat het alarm verschillende keren af

Beats me.
Zal inderdaad dan wel op meerdere plekken fout gaan.

Joeri FrDan heb ik opnieuw gecompileerd met de regel i=i-128 apart.
Nu loopt het programma mooi, maar vindt geen enkele flitspaal, buiten 1tje op een plaats waar absoluut geen staat.

Lijkt inderdaad op dat een berekening fout gecompileerd is...
Zou bij de compare functie kunnen zijn.


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

Postby joeri fr » Sun Mar 14, 2010 12:00 am

Wil jij zo virendelijk zijn om dan even de 1.26 te compileren met de bijgevoegde display.c file?
Dan krijg ik op m'n schermpje wat ik graag wil (gps-coordinaten met snelheid en hoogte erbij).
Misschien neem je het over in jouw programma?
Groeten
Attachments
display.1.c
(7.51 KiB) Downloaded 67 times
joeri fr
 
Posts: 87
Joined: Thu Jan 02, 2014 3:27 pm

PreviousNext

Return to 2008-11 Flitspaalmelder

Who is online

Users browsing this forum: No registered users and 0 guests