AVR chronographe de la conception de PCB (7 / 13 étapes)

Étape 7: Génération de la solution ; chargement du programme.

Une fois que tout le code est écrit (en fait vous feriez cela beaucoup plus tôt au cours du développement) vous avez besoin pour générer la solution.  C’est lorsque le compilateur traduit tout votre code dans un fichier HEX.  Le fichier HEX est ce qui en fait obtient chargé sur la puce et est que la seule chose que la puce peut comprendre.  Si vous avez déjà vu un fichier HEX, vous savez que c’est complètement illisible par les humains, alors je remercie le compilateur.  La première photo montre l’élément de menu, cliquer sur : Build >> générer la Solution.

À ce stade, vous verrez un tas de trucs à passer dans la fenêtre de sortie en bas, et si il y a des erreurs du compilateur vous les verrez ici aussi.  Si vous avez tapé le code exactement comme je l’ai dans la dernière étape, vous ne devriez pas avoir des erreurs.  Juste au cas où, je vais copier et coller le code dans son intégralité directement à partir de mon fichier à la fin de cette étape.  J’ai juste trouvé que je peux télécharger des fichiers aussi, c’est pourquoi j’ai inclus un fichier ZIP avec tous les fichiers d’ATMEL Studio.

À ce stade, vous devez vous connecter le Dragon au port USB sur votre ordinateur.

Sur la 2e photo, en haut à droite, vous verrez « ISP sur AVR Dragon » hilighted.  Cliquez ici pour ouvrir une fenêtre pour configurer les paramètres de l’outil tout comme lorsque nous avons mis les bits de fusible.  Sûr que AVR Dragon est sélectionnée et ISP pour l’interface et cocher l’ISP horloge.  Au-dessous, les paramètres de programmation devrait déjà ont « effacer toute puce » sélectionné et « préserver l’EEPROM » décochée.  Alimenter votre circuit de maquette, connectez le câble ruban de 6 broches du Dragon, et nous voilà prêt à partir.

Maintenant, pour charger le programme à la puce.  Vous pouvez cliquer sur Outils >> Programmation appareil >> dossier de production et puis recherchez le fichier et le programme.  Mais ! Il est beaucoup plus facile à déboguer, cliquez simplement sur >> Exécuter sans débogage (photo 3).  Cela automatiquement RECOMPILE le programme et le charge de la puce sans un autre mot tant qu’il n’y a aucun rerrors de compilation.

C’est elle ! Si cela a fonctionné, vous devriez avoir un chronographe fonctionne sur une maquette !  Vous pouvez jouer avec lui en touchant 12VDC aux entrées capteur (les circuits transistor ; pas les broches d’entrée) avec un fil de raccordement.  En outre, jouer avec les interrupteurs DIP et tester le bouton « afficher la distance ».  Une fois que vous obtenez un certain nombre en tant que sortie, vous pouvez tester les commutateurs DIP "sélection d’unités de sortie" et vérifier les calculs.

Maintenant serait aussi un très bon moment pour s’assurer que vos capteurs fonctionnent correctement avec le circuit.  Je suis en supposant que probablement personne n’utilisera les mêmes capteurs que j’ai, donc test vôtre maintenant avant de commencer à penser à une Commission permanente de gravure... mieux d’apporter des changements maintenant alors que le circuit est libre d’étain.

Ensuite, nous aurons un regard sur la création de la présentation schématique et Conseil avec ExpressPCB...

CODE COMMENCE AU-DESSOUS DE CETTE LIGNE ***

/*
* Speed_measurement.c
*
* Création : 15/09/2012 20:50:23
* Auteur : Thomas L
*/

#define F_CPU 14.7456E6

#include < avr/io.h >
#include < util/delay.h >
#include < avr/interrupt.h >

/************************************************************************/
/ * déclarer des variables globales * /
/************************************************************************/
unsigned int résultat = 0 ;
int interruptcount = 0 ;
temps d’int = 0 ;
long int resetcount = 0 ;

int main (void)
{

DDDR = 0 X 00 ;       portd entrée pour interruptions externes
DDRC = 0XDF ;       portc sortie pour 7 segment multiplexage et 1 entrée pour l’affichage de la distance
DDRB = 0XFF ;       PORTB sortie données segment fot 7 en bcd
PORTD | = 0XFF ;       activez portd tirer vers le haut de résistances
(int0 et int1 nécessitent externe tirer vers le haut de résistances ou 1 interruption sera déclenchée au reset)

EICRA | = (1 << ISC11) | (1 << ISC01) ;   configurer les interruptions externes
EIMSK | = (1 << INT1) | (1 << INT0) ;   //
TCCR1B | = (1 << CS12) ;     la valeur prescaling de timer1 256

/************************************************************************/
/ * déclarer des variables pour le calcul et l’affichage * /
/************************************************************************/

unsigned int ceux = 0 ;
unsigned int dizaines = 0 ;
unsigned int centaines = 0 ;
unsigned int x = 0 ;
double ticsfoot = 0 ;
double fps = 0 ;
double fph = 0 ;
double m/h = 0 ;
double km/h = 0 ;
double mps = 0 ;
distance de l’int = 0 ;

SEI() ;        activer les interruptions globales

while(1)
{



/************************************************************************/
/ * capteur de distance en pieds en retire pind 0,1,4,5 * /
/************************************************************************/

int distanceinput = (~ PIND & 0 x 33) ;
int hibits = (distanceinput >> 2) ;      obtenir des bits pind 0,1 et 4,5 ensemble pour être
int lobits = (distanceinput & 0 x 03) ;     valeur de la distance en BCD.  bits 2, 3 sont les
distance = (hibits + lobits) ;       goupilles d’interruption ext déjà en cours d’utilisation.

Si (distance == 0) distance = 16 ;



/************************************************************************/
/ * « prêt » indicateur LED * /
/************************************************************************/

Si (interruptcount == 0)
{
PORTC | = (1 << 3) ;
}
d’autre
{
PORTC & = (0 << 3) ;
}

/************************************************************************/
/ * calculs pour trouver la vitesse à 4 unités * /
/************************************************************************/

Si (interruptcount == 2) //only calculer quand les deux interruptions ont eu lieu
{
CLI() ;               désactiver les interruptions globales

ticsfoot = (temps / distance) ;      la distance est la distance entre les capteurs en pieds - ticsfoot est compteur tics/pied
fps = (57600 / ticsfoot) ;       57600 est compteur tics/sec (cpu clk/diviseur)
FPH = (fps * 60 * 60) ;
m/h = (fph / 5280) ;
km/h = (m/h * 1.609344) ;
MPS = (fps * 0,3048) ;

EIMSK | = (1 << INT1) | (1 << INT0) ;      //
SEI() ;            ré-activer les interruptions externes et les interruptions globales
}

/************************************************************************/
/ * choisir les options de sortie * /
/************************************************************************/

Si (! () PIND & (1 << PIND6)) & & (PIND & (1 << PIND7))) //choose pieds/sec
{
Round(FPS) ;
résultat = fps ;
}
ElseIf (PIND & (1 << PIND6) & &! () PIND & (1 << PIND7))) //choose m/s
{
Round(MPS) ;
résultat = députés ;
}
ElseIf (PIND & (1 << PIND6) & & (PIND & (1 << PIND7))) //choose km/hr
{
Round(KPH) ;
résultat = km/h ;
}
d’autre //default miles/h
{
Round(mph) ;
résultat = mi/h ;
}

Si (résultat > = 999) résultat = 999 ;







/************************************************************************/
/ * délai d’arrêter plusieurs « 2ème interruption » déclenche * /
/ * sans retarder l’exécution de code principal * /
/************************************************************************/

ResetCount ++ ;

Si ((resetcount > = 0x00FF) & & (interruptcount > = 2)) la limite supérieure de //resetcount détermine le délai
{//before reset. 0x00FF env. 3 secondes
interruptcount = 0 ;
ResetCount = 0 ;
}








/************************************************************************/
/ * affichage int résultat sur 3 chiffre sept segment affichage * /
/ * délai donne sept temps de décodeur de segment pour décoder et afficher les chiffres * /
/************************************************************************/

Si (! () PINC & (1 << PINC5))) //to paramètre de distance affichage sur écran
{//only tandis que la touche
résultat = distance ;
}
d’autre

des centaines = (résultat / 100) ;      obtenir 100 ' s place à chiffres
x = (résultat 100 %) ;
PORTB = (0x00|hundreds) ;
PORTC | = (1 << 2) ;        écrire les chiffres
_delay_ms(1) ;
PORTC & = (0 << 2) ;

des dizaines = (x / 10) ;        Obtenez 10 ' s place à chiffres
x = x % 10 ;
PORTB = (0x00|tens) ;
PORTC | = (1 << 1) ;        écrire les chiffres
_delay_ms(1) ;
PORTC & = (0 << 1) ;

Ones = x ;          Get de 1 place à chiffres
PORTB = (0x00|ones) ;
PORTC | = (1 << 0) ;        écrire les chiffres
_delay_ms(1) ;
PORTC & = (0 << 0) ;

}
}

/************************************************************************/
/ * interruption du capteur 1 * /
/************************************************************************/
ISR(INT0_vect)
{
Si (interruptcount == 0)
{
TCNT1 = 0 X 0000 ;          réinitialiser le compteur à 0
interruptcount ++ ;         incrément interruption comte
EIMSK & = (1 << INT1) | (0 << INT0) ;      désactiver INT0

}
ElseIf (interruptcount == 1)
{
temps = TCNT1 ;          saisir la valeur du compteur
interruptcount ++ ;         incrément interruption comte

}
else resetcount = 0 ;

}

/************************************************************************/
/ * interruption du capteur 2 * /
/************************************************************************/
ISR(INT1_vect)
{
Si (interruptcount == 0)
{
TCNT1 = 0 X 0000 ;         réinitialiser le compteur à 0
interruptcount ++ ;        incrément interruption comte
EIMSK & = (0 << INT1) | (1 << INT0) ;     désactiver INT1

}
ElseIf (interruptcount == 1)
{
temps = TCNT1 ;         saisir la valeur du compteur
interruptcount ++ ;        incrément interruption comte

}
else resetcount = 0 ;
}

Articles Liés

Concevoir un PCB romantique à l’aide d’un outil de conception de PCB gratuit - EasyEDA

Concevoir un PCB romantique à l’aide d’un outil de conception de PCB gratuit - EasyEDA

Avez-vous déjà essayé de concevoir un PCB pour votre amant ou des enfants ou des amis sur une journée spéciale ? Pourquoi pas?PCB pourrait aussi être un cadeau incroyable qui révèle que votre créativité aussi aiguise vos compétences de PCB. Ici, je v
Conception de PCB et isolement fraisage en utilisant exclusivement des logiciels libres

Conception de PCB et isolement fraisage en utilisant exclusivement des logiciels libres

Dans ce Instructable je vais vous montrer comment concevoir et fabriquer votre propre PCB, en utilisant exclusivement des logiciels libres qui s'exécute sur Windows, ainsi que sur un Mac.Choses dont vous avez besoin :ordinateur avec connexion interne
Conception d’une Expansion de PCB (Intel® ITO)

Conception d’une Expansion de PCB (Intel® ITO)

Ce Instructable a été écrit comme point de départ pour ceux qui veulent utiliser l'Intel® Edison à son plein potentiel, en l'incorporant dans un projet intégré pleinement développé. Pour ce faire, vous aurez probablement besoin de faire – comme l'app
AVR Conseil de programmation en parallèle

AVR Conseil de programmation en parallèle

il y a quelques semaines, j'ai décidé de faire un simple serveur Web basé sur une puce AVR (une instructable décrivant le projet suivra bientôt:-) ). L'idée était de conserver le circuit aussi simples que possible et de réutiliser les bibliothèques e
Comment faire facilement des PCB

Comment faire facilement des PCB

Qui n'aime pas l'idée de la fabrication maison de PCB ? Mais qui peut faire de BPC à la maison ?Habituellement, cela représente l'amateur "pro" de l'amateur...La capacité de faire à la maison les BPC est le Holly Graal d'un passionné d'électroni
Prototype de maquette de PCB en carton

Prototype de maquette de PCB en carton

Créateur et développeur de systèmes embarqués dans un pays du tiers-monde, je suis toujours confronté à longs délais lors de l'achat (importation essentiellement) quoi que ce soit liés aux composants électroniques de l'étranger. Un paquet de livraiso
Comment convertir et broyeurs à vos mises en page de PCB sur votre CNC

Comment convertir et broyeurs à vos mises en page de PCB sur votre CNC

il s'agit d'un petit tutoriel montrant comment résoudre les problèmes de conversion de vos schémas de PCB G-Code pour pouvoir moulin il.Logiciels utilisés.DipTrace : http://www.diptrace.com/CopperCAM : http://www.galaad.net/coppercam-eng.htmlMach3 :
Maison double couche PCB avec la méthode de transfert de toner

Maison double couche PCB avec la méthode de transfert de toner

Fait maison cartes de circuits imprimés (PCB) sont un excellent moyen de tester vos prototypes avant leur envoi à la fabrication. La méthode de transfert de toner est un moyen simple de faire les PCB parce que tout ce dont vous avez besoin est une im
Fabrication de PCB (surtout) facile

Fabrication de PCB (surtout) facile

il s'agit d'un moyen facile de créer votre propre PCB à la maison. La méthode est basée sur le processus de "5 ours" (qui est lui-même basé sur le processus de Tom Gootee ). J'ai ajouté quelques raffinements.Etape 1: Créez votre design Commencez
MakeYour propre PCB - méthode de Toner

MakeYour propre PCB - méthode de Toner

ce court tutoriel a pour but de montrer l'ensemble du processus de construction (à domicile) d'un circuit imprimé à l'aide de la méthode connue de la plaque.Nous commençons avec quelques recommandations qui devraient prendre en compte lors de la conc
Comment monter une carte de Circuit imprimé (PCB)

Comment monter une carte de Circuit imprimé (PCB)

Comment assembler un PCB en intro de la main : circuits imprimés ou PCB est au cœur de l'équipement électronique moderne. Sans eux, beaucoup de l'électronique, que nous utilisons serait impossibles de construire. Ordinateurs, téléphones cellulaires,
Consulter votre conception de circuits imprimés en 3D en ligne gratuit

Consulter votre conception de circuits imprimés en 3D en ligne gratuit

si vous êtes un concepteur de première fois platine ou vous avez fait il depuis des années, vous savez comment il peut être difficile à visualiser l'agencement, l'espacement et la taille relative au logiciel de mise en PCB.  Vous pourriez ont aussi c
Saison de bricolage PCB 2

Saison de bricolage PCB 2

La gravure est une méthode « soustractive » utilisée pour la production d'impriméscircuits imprimés : acide sert à retirer un stratifié préfabriqué de cuivre non désiré. Ceci est fait en appliquant un masque temporaire qui protège les parties du stra
Laser, Fabrication PCB Thru-hole @ TechShop Chandler !

Laser, Fabrication PCB Thru-hole @ TechShop Chandler !

Si c'était utile, s'il vous plaît, comme https://www.facebook.com/TechShopChandler ... J'aif il n'y avait pas TechShop et mouvement opensource maker j'aurais jamais découvert cette technique étonnante...-------Quelque temps en arrière TechShopJim a é