Sample HiTech PIC C Bit-bang programme doesnt work!

E

ericmar

Guest
Salut les gars,

I'hv un grave problème dont je hv pour le résoudre en 1 semaine pour tout le monde peut-il m'aider?J'écris pour mon PIC PIC utilisant Hitech C et I cant get it travailler avec l'échantillon de codage bit-bang prévu.I'hv déjà utilisé mon interface USART pour certaines opérations et,
par conséquent, nécessité de suivre une autre interface USART pour accepter les données GPS à partir de mon récepteur GPS.Toutefois, je continue de recevoir des messages indésirables, même si I'hv fixer la vitesse de transmission correctement.I couldnt figure out wats le problème car je ne comprends vraiment le codage!Mon PIC 16F877 est et mon récepteur GPS Garmin GPS 18LVC.J'ai remarqué que les messages indésirables que
j'ai reçu est d'une certaine manière de répéter avec un peu defferent qui devrait être le temps et de contrôle qui ne cessent de changer tous les deux dans le message GPS.La tendance semble bonne, mais je viens de couldnt obtenir les données correctes.Je me demande quelle partie de la codification a mal tourné!J'ai essayé de recevoir les données GPS directement si le port série COM et si cela fonctionne correctement.Donc, je pense que cela devrait être mon récepteur GPS, mais le problème du programme PIC.

J'apprécie de toute aide fournie!Merci beaucoup!

Observe,
Eric

 
Salut,

bitbanged récepteur est presque toujours un problème ...

Dans le cas de votre GPS, vous pouvez essayer de passer le GPS à un plus bas baudrate (1200 bauds par exemple) bitbanging peut-être plus facile parce que le calendrier est moins critique.

Quelle est la fréquence d'horloge de votre photo et qui ne code que vous utilisez pour bitbanged réception?

Pour les autres tâches qui vous avez besoin de la construction en USART?
Si
c'est seulement pour la transmission ou si elle
s'étend sur une faible baudrate bitbanging vous pouvez utiliser pour cette tâche et de l'utilisation dans la construction USART pour votre GPS.

Bitbanging Si votre code
n'est pas trop grand et après je vais y jeter un oeil

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sourire" border="0" />cordialement

 
C-Man a écrit:

Salut,bitbanged récepteur est presque toujours un problème ...Dans le cas de votre GPS, vous pouvez essayer de passer le GPS à un plus bas baudrate (1200 bauds par exemple) bitbanging peut-être plus facile parce que le calendrier est moins critique.Quelle est la fréquence d'horloge de votre photo et qui ne code que vous utilisez pour bitbanged réception?Pour les autres tâches qui vous avez besoin de la construction en USART?

Si c'est seulement pour la transmission ou si elle s'étend sur une faible baudrate bitbanging vous pouvez utiliser pour cette tâche et de l'utilisation dans la construction USART pour votre GPS.Bitbanging Si votre code n'est pas trop grand et après je vais y jeter un oeil
<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sourire" border="0" />

cordialement
 
Toute bonne optimisation du compilateur C supprimera cette déclaration ne rien faire:
Code:

while (- DLY);
 
echo47 a écrit:

Toute bonne optimisation du compilateur C supprimera cette déclaration ne rien faire:Code:

while (- DLY);
 
Salut ericmar,

a pris un coup d'oeil à votre code, désolé mais cela est très primitif.

J'ai pensé
qu'il serait interruptions, lorsque vous vous asseyez en attente pour un caractère à être reçu votre MCU ne peut rien faire d'autre ce sont inutilisables pour votre projet ...

Vous devriez également overthink de 4 MHz, je voudrais utiliser au moins 8 ou encore mieux 16MHz parce que lorsque vous utilisez un logiciel RS232 le CPU ne peut le faire 208 commandes dans le temps requis pour recevoir un seul bit.

Mon conseil serait le suivant: utiliser un cristal de 16MHz (la plupart des 16F877 sont prévues pour 20MHz) et aussi utiliser un soft RS232 interruptions de sorte que le CPU ne doit pas se bloquer lors de la réception sur le soft RS232.

Si vous ne trouvez pas une interruption d'approche soft RS232 PM moi et je vais essayer de vous aider.

cordialement

 
J'ai eu le même problème lors de l'utilisation de la série Hitech échantillon bitbanging routine sur un PIC16F84.Il a été clairement un problème de synchronisation, il faut un peu de peaufinage pour le TX_overhead et RX_overhead valeurs.

Essais et erreurs

 
Citation:

Which one do u mean?L'un dans l'putch ou getch ou les deux?
 
J'ai trouvé un interruptions BitBang routine (désolé pour l'AVR) en C ici:
http://www.hpinfotech.ro/softuart.zip

Vous pouvez peut-être adopter à vos besoins, semble OK pour moi ...

cordialement

 
Je continue d'essayer de la HiTech bit-bang exemples de code et maintenant je peux le faire travailler en partie à 9600bps avec 4MHz cristal.Mais je continue à perdre de la seconde nature.Par exemple, si
j'envoie ABCDEFG, quand il fait écho, je ne peux que vous ACEG!Wat pourrait être le problème?Est-ce que le code ne peuvent être utilisées pour recevoir une série continue de caractères?

 
,

Salut ericmar,Citation:par exemple, si j'envoie ABCDEFG, quand il fait écho, je ne peux que vous ACEG!
Wat pourrait être le problème?

 
Humber555 a écrit:

,
Salut ericmar,
Citation:par exemple, si j'envoie ABCDEFG, quand il fait écho, je ne peux que vous ACEG!
Wat pourrait être le problème?

 
ericmar a écrit:

Je continue d'essayer de la HiTech bit-bang exemples de code et maintenant je peux le faire travailler en partie à 9600bps avec 4MHz cristal.
Mais je continue à perdre de la seconde nature.
Par exemple, si j'envoie ABCDEFG, quand il fait écho, je ne peux que vous ACEG!
Wat pourrait être le problème?
Est-ce que le code ne peuvent être utilisées pour recevoir une série continue de caractères?
 
Salut ericmar,Bit-banging soft gestionnaire de recevoir une longue chaîne de données
n'est pas la meilleure façon de commencer à
si votre objectif final est de recevoir le plein GPS paquet.Je recommande fortement d'utiliserof the 16F877, AND
a circular buffer
.

le matériel
de l'UART
16F877, ET
un buffer circulaire.meilleurs voeux,

humber555

 
C-Man a écrit:ericmar a écrit:

Je continue d'essayer de la HiTech bit-bang exemples de code et maintenant je peux le faire travailler en partie à 9600bps avec 4MHz cristal.
Mais je continue à perdre de la seconde nature.
Par exemple, si j'envoie ABCDEFG, quand il fait écho, je ne peux que vous ACEG!
Wat pourrait être le problème?
Est-ce que le code ne peuvent être utilisées pour recevoir une série continue de caractères?
 
ericmar a écrit:salut C-Man,Je veux dire, j'ai envoyé les données de l'ordinateur de bord et ensuite essayé de PIC écho des données.
Je n'ai pas de problème dans l'envoi de l'ensemble de la chaîne de caractères prédéfinies PIC à l'ordinateur.
Au lieu de recevoir GPS message, je suis sur un programme de communication série pour envoyer et recevoir des données atm pour essayer d'obtenir le code fonctionne correctement 1er.
U pls pourrait me montrer un exemple d'interrompre le contrôle de routine BitBang?Merci beaucoup!Observe,

Eric
 
C-Man a écrit:ericmar a écrit:salut C-Man,Je veux dire, j'ai envoyé les données de l'ordinateur de bord et ensuite essayé de PIC écho des données.
Je n'ai pas de problème dans l'envoi de l'ensemble de la chaîne de caractères prédéfinies PIC à l'ordinateur.
Au lieu de recevoir GPS message, je suis sur un programme de communication série pour envoyer et recevoir des données atm pour essayer d'obtenir le code fonctionne correctement 1er.
U pls pourrait me montrer un exemple d'interrompre le contrôle de routine BitBang?Merci beaucoup!Observe,

Eric
 
ericmar,

Je
n'ai pas assez de temps libre dans le moment, mais va essayer de vous aider aussi rapidement que possible.

En attendant, je serais intéressé pour lesquelles vous ne pouvez pas utiliser le matériel USART ce qui est lié à elle?

Où est votre logiciel USArt connecté et
qu'il est nécessaire d'envoyer et de recevoir?

cordialement

 
Unbelievable!I got it fonctionne correctement maintenant en changeant le délai pour la réception de chaque bit après bit de démarrage de RX_OHEAD = de 12 à RX_OHEAD = 3.Je pense avec RX_OHEAD = 3 alors que l'égalité de temps de 1 bit.Et je
n'ai coz buffer
jusqu'à l'ensemble du message avant de l'imprimer!

Toutefois, le code
ne marche pas fonctionner correctement quand
j'ai changé de PIC 16F877 à 18F452.Pour certaines raisons, je couldnt même obtenir le premier caractère correctement.

I couldnt utiliser le matériel uart becoz I hv pas le temps de fabrication d'un autre CCP je hv pour émuler un logiciel uart sur le PCB que
j'ai avec un peu de ports disponibles.

 
Excusez mon ignorance vous avez compilé votre code avec PICC18?

Avez-vous un coup d'œil à la façon dont les choses sont définis différemment pour les PIC16 et PIC18?

PIC16:
static volatile unsigned char PORTB @ 0x06;

static volatile unsigned char bank1 TRISB @ 0x86;

/ * PORTB bits * /
static volatile bit RB7 @ (unsigned) & PORTB * 8 7;

PIC18:
static volatile unsigned char près PORTB @ 0xF81;

static volatile unsigned char près TRISB @ 0xF93;

/ / PortB
static volatile bit près RB0 @ ((unsigned) & PORTB *

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

0;

Donc, vous devriez au moins utiliser les "proches" dans les définitions de mots clés pour PIC18.

Vous pouvez aussi jeter un coup d'oeil à la liste de sortie des compilateurs assembleur, il ya une grande différence entre les PIC16 et PIC18 architecture et vous pourriez avoir besoin de modifier vos paramètres de nouveau pour une égalité de retard.

cordialement

 

Welcome to EDABoard.com

Sponsor

Back
Top