GPS-en GSM-interrupt handling

E

emkay

Guest
Momenteel probeer ik te ontwikkelen tracking systeem, waarbij gebruik wordt gemaakt van dubbele USART met behulp PIC16F628A, ik gebruikte hardware USART en ook software USART.De software USART behandelen de gegevens ontvangen van GPS-hardware, terwijl het voor het ontvangen en doorgeven van de gegevens naar / van GSM-modem.

Het systeem stroom is om gegevens te ontvangen van GPS en opslaan in EEPROM (24LC512), dan stuurt de gegevens via GSM-modem na gewijd periode (misschien 24hrs).Ik kom u het interval voor de ontvangst van de GPS-gegevens vormen een minuut (kan veranderen later).

In plaats van de overdracht van de gegevens voor bepaalde tijd, de server / gebruiker kan verzoeken om de gegevens op elk gewenst moment.

Zowel van mijn USART routinematig gebruik onderbreekt om de taak, maar ik heb een probleem voor het beheer van dit ding.Mijn plan is na het onderbreken voor GPS, I ll filter de gegevens om te voldoen aan mijn eisen (tijd en locatie alleen), en vervolgens opslaan / schrijven dat de gegevens aan de 24LC512 en het systeem zal wachten op het onderbreken van hardware USART (een oproep van de user) voor een minder dan een minuut (omdat mijn interval te ontvangen van de GPS-gegevens is een minuut Ik wil niet te verstoren mijn verzameling van gegevens).

Mijn vraag is, wat zal er gebeuren als tijdens het ontvangen van de GPS-gegevens, de tweede onderbreken (hardware USART)
is opgetreden, wat zou PIC doen?Doorgaan met het verzamelen van gegevens (want nog in de externe interrupt) OF zal reageren op de tweede?

Ik wil mijn PIC, klaar bent met de eerste opdracht (ontvangst-filter   slaan naar 24LC512) voordat een antwoord op de tweede onderbreken.Dus hoe dit te doen?Hoe om prioriteit te geven aan de eerste onderbreken?

En het zal dezelfde zaak als mijn hardware USART onderbreken opgetreden eerste vervolgens plotseling de gegevens van de GPS die ik wil mijn hardware USART vestigen de baan eerst overgaan tot de ontvangst van de GPS-gegevens.De taak onder USART hardware (ontvangen oproep vorm gebruiker  pickup de telefoon  lezen van gegevens uit 24LC512  het doorsturen van de gegevens)

Beide geval nodig om de eerste vóór te gaan tot de tweede onderbreken

Uw commentaar en advies worden zeer gewaardeerd

Als er soortgelijke verwijzing project,
stuurt u naar mij.

Thanks in advance

 
Hoi,
Als u met een standaard GPS-ontvanger,
kunt u het uitschakelen van alle berichten, behalve degenen die je nodig hebt.(RMC, en een voldoende moeten zijn) en dan is er geen behoefte aan het filteren.Zoals u wellicht weet, USART onderbreken wordt kritischer dan de GPS.
hoop dat dit helpt,
brmadhukar

 
Citaat:Als u met een standaard GPS-ontvanger, kunt u het uitschakelen van alle berichten, behalve degenen die je nodig hebt.
(RMC, en een voldoende moeten zijn) en dan is er geen behoefte aan het filteren

 
Ik begrijp waarom je moet interupts?

Ik wil wijzen op een verschillende approch dat het kan helpen (ik ben geen ervaring met interrupts of zeer goed in de programmering)

-
Ten eerste ding om te doen is de GPS-query (vraag de GPS te sturen aan de PIC van de huidige gegevens) en bewaar deze gegevens aan eeprom.Dit zou kunnen plaatsvinden op elk predefine interval.
- Dan vraagt de mobiele telefoon voor een (eventuele) nieuwe inkomende SMS.Decoderen de sms om te zien of het verzoek iets.Zo ja dan lees eeprom en stuur het naar SMS receipient.
- Herhaal de fiets of iets anders doen.

In Picbasic pro dit commando werkt als:
HSerout [ "AT CMGL = 0", cr] Lees Ontvangen en Ongelezen Binnenkomende berichten alleen.

Als er geen nieuw bericht vervolgens niets gaat PIC.

Ik hoop dat het helpt een beetje.
Groeten

 
Ja, u kunt de opdracht aan GPS om te selecteren welke commando wenst u te ontvangen of te onderdrukken.
Mogelijk moet u kijken in de GPS-handleiding.Het hangt af van de fabricage en welk protocol u NMEA, SiRF enz.

 
Hoi

Ik heb een eenvoudige oplossing alles wat je hoeft te doen is colect de gegevens in de buffer is tijdens inerrupt en verwerken van de gegevens in de belangrijkste lus - de belangrijkste lus is mutsje sneller dan elke inerruptAll the best

Bobi

 
Als u geen gebruik RTOS - u moet uitvoeren lange ring buffers te houden ongeacht ontvangen van USART er.
Als u RTOS - er is niets wat je zorgen te maken over.

 
De meeste GPS-ontvangers kan worden geconfigureerd, de periode waarin zij zullen berichten uitgang is programmeerbaar.Dit kan van 0 (geen data-uitgang) tot enkele seconden.Controleer de configuratie van berichten van de module gegevensblad.Als u de uitgang periode tot 0, dan kunt u de receiver op de output van de gegevens op elk moment.Dit is het poolen.Je kunt hetzelfde doen met de GSM-terminal, en daarmee kunt u zowel van hen, en u zal vermijden.Een andere kwestie is de 24LC geheugen waarin u wilt opslaan van de GPS-gegevens (ik veronderstel dat u proces GGA zin, of het equivalent daarvan in het binaire protocol).Als u de GPS-fix en schrijven naar het geheugen van elke minuut, zal u een veel geschriften in het geheugen.Controleer de notitie van het geheugen
van de fabrikant, om dergelijke geheugen heeft een maximum aantal schrijf cycli.Als u een brief schrijven naar het elke minuut, betekent dit approx.44.000 keer per monts.Met een geheugen van die 100.000 write cycles, heb je een probleem in minder dan drie maanden.

/ pisoiu

 
Citaat:Ik heb een eenvoudige oplossing alles wat je hoeft te doen is colect de gegevens in de buffer is tijdens inerrupt en verwerken van de gegevens in de belangrijkste lus - de belangrijkste lus is mutsje sneller dan elke inerrupt

 
100k cyclus betekent dezelfde locatie (byte-een) kan worden geschreven 100k tijden.Daarna is het niet zeker dat wat je leest is wat je terug schreef.

/ pisoiu

 
Ik besluit om geen gebruik onderbreken voor software USART (externe interrupt) meer, maar nog steeds gebruikt onderbreken voor hardware USART.

De toestand wordt als volgt; hoop kunt uw commentaar.

1.Wacht op GPS-gegevens (bit test bij ontvanger haven)
2.Na het ontvangen, verwerken de gegevens, die slaan op temp.registreren
3.Schrijf EEPROM
4.Enable interrupt (voor hardware USART)
5.Vertraging 1 minuut (interval voor de volgende GPS-gegevens)
- Hier heb ik 2 optie maar ik weet niet welke een beter
- Om gebruik te maken van vertraging door software routine (ik gebruik PICLoop)
- Om gebruik te maken van TMR1
6.Uitschakelen onderbreken
7.Herhaal

Ik weet niet welk systeem het beste is voor de post niet.5.Mijn eis is, indien USART onderbreken gebeuren, de vertraging / timer nog, zodat ik kom niet missen mijn 1-minuut interval

En als de TMR1 effectiever is te vergelijken met de vertraging routine, hoe het te doen.Ik heb nooit gebruik timer module voor dank

 
hallo
U moet weten dat de pic MC zal niet gaan om andere onderbreken zolang de huidige interrupt is nog niet klaar
dit is, want als de interrupt optreden - biit vlag van een bepaalde interrupt is de OIC zal gaan naar de interrupt vector (0x004) en de GIE wat zal worden gewist.
Omwille van dat geen andere interrupt kunnen worden behandeld, zolang de procedure van het huidige interrupt is nog bezig met het verwerken, maar ze konden worden aangevoeld en hun falg bit wordt beïnvloed
Na het einde van onderbreken, moeten we exeute de "retfie" commando hebben 2 functies:
ten eerste een regelmatige terugkeer tweede: opnieuw inschakelen van de GIE bits
op dit moment als enige andere onderbreken in behandeling is, zij zullen worden behandeld volgens de volgorde van de codering door die u kent piorty voor elke onderbreken.

 
Hallo

Als u gebruik wilt onderbreken, dus wees vlaggen
Hoe?

Wanneer het onderbreken van GPS opgetreden doen:

1 - Ontvang de NMEA Commando en opgeslagen in het RAM-geheugen.2 - Zet Flag beetje.3 - Terugkeer.in de belangrijkste programma:

1 - CHK de GPS vlag beetje.2 - indien bit:een filter van de gegevens.b-opslag van de gegevens in uw seriële EEPROMc-clr bitsen doe dit nogmaals met mobiele<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />

HO2a

 
Haytham schreef:

hallo

U moet weten dat de pic MC zal niet gaan om andere onderbreken zolang de huidige interrupt is nog niet klaar

dit is, want als de interrupt optreden - biit vlag van een bepaalde interrupt is de OIC zal gaan naar de interrupt vector (0x004) en de GIE wat zal worden gewist.

Omwille van dat geen andere interrupt kunnen worden behandeld, zolang de procedure van het huidige interrupt is nog bezig met het verwerken, maar ze konden worden aangevoeld en hun falg bit wordt beïnvloed

Na het einde van onderbreken, moeten we exeute de "retfie" commando hebben 2 functies: ten eerste een regelmatige terugkeer tweede: opnieuw inschakelen van de GIE bits

op dit moment als enige andere onderbreken in behandeling is, zij zullen worden behandeld volgens de volgorde van de codering door die u kent piorty voor elke onderbreken.
 

Welcome to EDABoard.com

Sponsor

Back
Top