Proefvertalingen HiTech PIC C Bit-bang programma

E

ericmar

Guest
Hi guys,

I'hv een ernstig probleem waar ik HV om het op te lossen binnen 1 week, zodat iedereen kan mij helpen?Ik schrijf voor mijn PIC gebruik van HiTech PIC C en I cant get it werken met de monster-bits codering bang verstrekt.I'hv al gebruikt mijn USART interface voor een operatie en dus moeten emuleren een andere USART interface voor het aanvaarden van GPS-gegevens van mijn GPS-ontvanger.Maar ik krijg steeds ongewenste berichten hoewel I'hv de baudsnelheid correct.I couldnt achterhalen wats het probleem sinds ik dont echt begrijpen de codering!Mijn PIC 16F877 is en mijn GPS-ontvanger Garmin GPS 18LVC.Ik heb gemerkt dat de ongewenste berichten die ik heb is een of andere manier te herhalen met een licht defferent, die moet de tijd en controlesom dat houdt veranderende elke seconde in de GPS-bericht.Het patroon lijkt recht, maar dan ga ik gewoon couldnt get de juiste gegevens.Ik vraag me af welk deel in de codering er mis is gegaan!Ik heb proberen te ontvangen van de GPS-gegevens rechtstreeks hoewel seriële COM-poort en het werkt goed hoor.Dus ik denk dat het moet mijn GPS-ontvanger probleem, maar de PIC programma.

Ik stel voor alle hulp!Thanks a lot!

Groeten,
Eric

 
Hoi,

bitbanged ontvangst is bijna altijd een probleem ...

In geval van uw GPS kunt u proberen om de GPS op een lagere baudrate (1200 baud bijvoorbeeld) bitbanging misschien gemakkelijker dan want de timing is minder kritisch.

Wat is de klokfrequentie van je pic en die code gebruik je voor bitbanged ontvangst?

Voor welke andere taak heb je nodig de ingebouwde USART?
Als het alleen voor het doorgeven of als het draait op een laag baudrate je zou kunnen gebruiken bitbanging voor deze taak en het gebruik van de ingebouwde USART voor uw GPS.

Als uw bitbanging code is niet te groot te plaatsen en ik zal hier een kijkje nemen

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Lachten" border="0" />met vriendelijke groet

 
C-Man schreef:

Hoi,bitbanged ontvangst is bijna altijd een probleem ...In geval van uw GPS kunt u proberen om de GPS op een lagere baudrate (1200 baud bijvoorbeeld) bitbanging misschien gemakkelijker dan want de timing is minder kritisch.Wat is de klokfrequentie van je pic en die code gebruik je voor bitbanged ontvangst?Voor welke andere taak heb je nodig de ingebouwde USART?

Als het alleen voor het doorgeven of als het draait op een laag baudrate je zou kunnen gebruiken bitbanging voor deze taak en het gebruik van de ingebouwde USART voor uw GPS.Als uw bitbanging code is niet te groot te plaatsen en ik zal hier een kijkje nemen
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Lachten" border="0" />

met vriendelijke groet
 
Elke goede optimaliseren C compiler zal dit doen niets verklaring:
Code:

while (- dly);
 
echo47 schreef:

Elke goede optimaliseren C compiler zal dit doen niets verklaring:Code:

while (- dly);
 
Hi ericmar,

nam een kijkje in uw code, sorry maar dit is erg primitief.

Ik dacht dat het zou onderbreken gedreven, wanneer u zitten te wachten op een teken te ontvangen uw MCU kunnen niets anders doen dit is onbruikbaar voor uw project ...

U moet ook overthink de 4 MHz kristal, ik zou ten minste 8 of zelfs beter 16MHz, omdat bij gebruik van een RS232-software de CPU kan alleen 208 commando's in de tijd die nodig is om een enkele bit.

Mijn advies zou zijn: gebruik een 16MHz kristal (de meeste 16F877 zijn opgegeven voor 20MHz) en ook gebruik maken van een interrupt gestuurde zachte RS232, zodat de CPU niet hangen terwijl ontvangen over de zachte RS232.

Als u niet vinden een interrupt gedreven aanpak voor zachte RS232 PM me en ik zal proberen om u te helpen.

met vriendelijke groet

 
Ik had hetzelfde probleem bij het gebruik van de HiTech monster seriële bitbanging routine op een PIC16F84.Het was duidelijk een timing probleem, dus het duurt een beetje tweaken voor de TX_overhead en RX_overhead waarden.

Trial and error

 
Citaat:

Die een do u betekenen?De een binnen de putch of getch of beide?
 
Ik vond dat een interrupt aangedreven BitBang routine (sorry voor de AVR) in C hier:
http://www.hpinfotech.ro/softuart.zip

Misschien kunt u vast aan uw behoeften, ziet er OK om me ...

met vriendelijke groet

 
Ik blijf proberen de HiTech bit-bang voorbeeldcode en nu kan ik het werk gedeeltelijk op 9600bps met 4Mhz kristal.Maar ik blijf het verlies van de tweede daaropvolgende karakter.Bijvoorbeeld, als ik ABCDEFG, wanneer het wordt echo terug Ik kan alleen maar ACEG!Wat kan het probleem?Is dat de code huicheltaal worden gebruikt om een reeks continue tekens?

 
,

Hi ericmar,Citaat:Bijvoorbeeld, als ik ABCDEFG, wanneer het wordt echo terug Ik kan alleen maar ACEG!
Wat kan het probleem?

 
Humber555 schreef:

,
Hi ericmar,
Citaat:Bijvoorbeeld, als ik ABCDEFG, wanneer het wordt echo terug Ik kan alleen maar ACEG!
Wat kan het probleem?

 
ericmar schreef:

Ik blijf proberen de HiTech bit-bang voorbeeldcode en nu kan ik het werk gedeeltelijk op 9600bps met 4Mhz kristal.
Maar ik blijf het verlies van de tweede daaropvolgende karakter.
Bijvoorbeeld, als ik ABCDEFG, wanneer het wordt echo terug Ik kan alleen maar ACEG!
Wat kan het probleem?
Is dat de code huicheltaal worden gebruikt om een reeks continue tekens?
 
Hi ericmar,Bit-banging zachte handler voor het ontvangen van een lange reeks gegevens is niet de beste manier om te beginnen met
Als uw uiteindelijke doelstelling is om de volledige GPS-pakket.Ik sterk aanbevelen gebruik te maken vanof the 16F877, AND
a circular buffer
.

de hardware UART
van de 16F877, EN
een circulaire buffer.beste wensen,

humber555

 
C-Man schreef:ericmar schreef:

Ik blijf proberen de HiTech bit-bang voorbeeldcode en nu kan ik het werk gedeeltelijk op 9600bps met 4Mhz kristal.
Maar ik blijf het verlies van de tweede daaropvolgende karakter.
Bijvoorbeeld, als ik ABCDEFG, wanneer het wordt echo terug Ik kan alleen maar ACEG!
Wat kan het probleem?
Is dat de code huicheltaal worden gebruikt om een reeks continue tekens?
 
ericmar schreef:hi C-Man,Ik bedoel ik stuurde de gegevens van de computer naar de PIC en vervolgens PIC geprobeerd echo terug van de gegevens.
Ik heb geen probleem met het versturen van het gehele voorgedefinieerde string uit PIC naar computer.
In plaats van het ontvangen van GPS-bericht, ik ben met behulp van een seriële communicatie programma voor het verzenden en ontvangen van gegevens atm voor het proberen om de code correct werkt 1st.
Zou u pls show me voorbeeld van een interrupt gecontroleerde BitBang routine?Thanks a lot!Groeten,

Eric
 
C-Man schreef:ericmar schreef:hi C-Man,Ik bedoel ik stuurde de gegevens van de computer naar de PIC en vervolgens PIC geprobeerd echo terug van de gegevens.
Ik heb geen probleem met het versturen van het gehele voorgedefinieerde string uit PIC naar computer.
In plaats van het ontvangen van GPS-bericht, ik ben met behulp van een seriële communicatie programma voor het verzenden en ontvangen van gegevens atm voor het proberen om de code correct werkt 1st.
Zou u pls show me voorbeeld van een interrupt gecontroleerde BitBang routine?Thanks a lot!Groeten,

Eric
 
ericmar,

Ik heb niet genoeg vrije tijd in het moment, maar zal proberen je te helpen zo spoedig mogelijk.

In de tussentijd zou ik geïnteresseerd zijn waarom je geen gebruik maken van de hardware USART wat is aangesloten op het?

Waar is uw software usart aangesloten en is het noodzakelijk voor het verzenden en ontvangen?

met vriendelijke groet

 
Ongelofelijk!Ik heb het werkt nu door het veranderen van de vertraging voor de ontvangst van elke bit na de start bit RX_OHEAD = 12 tot RX_OHEAD = 3.Ik denk met RX_OHEAD = 3 zou dan alleen gelijk aan 1 bit tijd.En ik heb coz buffer het hele bericht voordat ik print it!

Echter, de code
doesnt werken toen ik mijn PIC 16F877 uit te 18F452.Voor een aantal redenen, ik couldnt zelfs het eerste teken correct.

I couldnt gebruik maken van de hardware UART becoz HV ik geen tijd voor de vervaardiging van een ander PCB dus ik HV te emuleren een software-UART op de huidige PCB's heb ik met enige reserve-poorten beschikbaar.

 
Excuseer mijn onwetendheid u uw code gecompileerd met PICC18?

Heeft u een blik werpen op hoe de zaken anders zijn gedefinieerd voor PIC16 en PIC18?

PIC16:
statische vluchtige unsigned char PORTB @ 0x06;

statische vluchtige unsigned char bank1 TRISB @ 0x86;

/ * PORTB bits * /
statische vluchtige beetje RB7 @ (unsigned) & PORTB * 8 7;

PIC18:
statische vluchtige buurt unsigned char PORTB @ 0xF81;

statische vluchtige buurt unsigned char TRISB @ 0xF93;

/ / PortB
statische vluchtige buurt beetje RB0 @ ((unsigned) & PORTB *

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Koel" border="0" />

0;

Dus je moet op zijn minst gebruik maken van de "nabije" zoekwoord in de definities voor PIC18.

U kunt ook een kijkje nemen in de compilers assembler lijst uitgang is er een groot verschil tussen PIC16 en PIC18 architectuur en je moet misschien tweaken uw parameters opnieuw voor een gelijke vertraging.

met vriendelijke groet

 

Welcome to EDABoard.com

Sponsor

Back
Top