Sono un codificatore software schifoso quando si tratta di farlo. Non ho prestato attenzione quando tutto è andato orientato all’oggetto e le mie radici erano sempre il linguaggio di assemblaggio e i sistemi operativi in tempo reale (RTOS) comunque.
Quindi è naturale che avrei raggiunto per un vero emulatore in circuito (ICE) per finire del mio piccolo bus OBDII per velocizzare il widget Generatore Pulse. Il ghiaccio è un dispositivo hardware utilizzato per eseguire il debug dei sistemi embedded. Comunica con il microcontrollore sulla scheda, consentendo di vedere cosa sta succedendo in pausa esecuzione e ispezionando o cambiando valori nei registri hardware. Se vuoi essere ottimo allo sviluppo incorporato devi essere ottimo all’utilizzo dell’emulazione in circuito.
Non solo mi godo i miei errori in tempo reale nel tempo reale, riesco a fare un video a riguardo.
Ottenere dati fuori da un veicolo
Ho lavorato su una piccola tavola che collegherà la mia auto e fornisse l’accesso diretto alla velocità riportata sulla rete del controller (CAN BUS).
Per eseguire il backup un po ‘, il mio ultimo post video era del mio desiderio inano di fare un piccolo assemblaggio che potrebbe collegare il porto OBDII sul mio camion e creare una serie di impulsi che rappresentano la velocità dell’automobile per il mio GPS per funzionare molto molto più accuratamente. Mentre c’era un filo sepolto nei molteplici fasci di fili collegati al modulo di controllo del motore del veicolo, ho preso una decisione per molti motivi per creare la mia fonte di segnale.
Al centro del mio progetto è la necessità di convertire la porta OBDII e il protocollo di base del sottostante su una variabile di base che rappresenta la velocità e per poi coprire quel valore su un flusso di impulsi in cui la frequenza variava sulla velocità. Il protocollo OBDII / CAN è gestito dal chip STN1110 e convertito in ASCII, e sto usando un ATMEGA328 come trovato su una moltitudine di boards arduino’ish per la conversione ASCII a PULSE. Sto usando gli interrupt hardware per controllare l’uscita del segnale per i tempi Rock-Solid, Jitter-free.
Cammina attraverso il processo di utilizzo di un emulatore in circuito nel video qui sotto e unisciti a me dopo la rottura per alcuni molti più dettagli sul processo.
L’hardware.
Ho rivisto il consiglio di amministrazione considerando che l’ultimo video e ha rimosso il supporto per i vari protocolli diversi da quello che può, il che è il protocollo non obsoleto del gruppo. Rimuovendo un gruppo di parti, sono stato in grado di cambiare lo stile del pacchetto per il buco passante che è molto più facile per molti hobbisti domestici, così puoi lasciare la pasta di saldatura nel frigo.
Rev 2.
Rev 1.
L’altro connettore “sul tuo Arduino
A differenza dell’Arduino che è pronto per parlare con la porta USB quando lo togli fuori dagli schemi, i chip Atmega arrivano senza alcuna conoscenza di come andare e scaricare il codice, in altre parole non ha un boot loader. Di conseguenza ho i perni di programmazione in ingresso-programmazione (ICSP) indirizzati a un’intestazione PIN sulla mia scheda in modo da poter programmare direttamente la parte.
Su questo connettore troverai la linea di reset, che indica con questa intestazione posso utilizzare un vero ghiaccio utilizzando il protocollo Debugwire. Considerando che la grande maggioranza dei disegni che utilizzano un chip AVR non riporta il PIN di reset per GPIO, è un miglior PIN da utilizzare per il ghiaccio. Tutte le comunicazioni durante il processo di debug si svolgeranno sul PIN di reset.
Inserisci il ghiaccio
Quando crei un computer da zero c’è sempre il palcoscenico in cui nulla funziona ancora. In poche parole, un circuito del microprocessore non può funzionare fino a quando non funziona quasi tutte le parti del design; RAM, ROM, e gli autobus sottostanti hanno bisogno di (per lo più) lavoro prima che le cose di base possano essere fatte. Come ingegnere hardware per commercio, raggiungerei sempre un ghiaccio per dare il via all’implementazione; only after the Beta release would the ICE start to gather dust in the corner.
Nel caso dell’ATMEGA, le funzionalità di debug sono integrate nel microcontrollore stesso. This is a much a lot more straightforward implementation than the early days when we had to have a second isolated processor running off-board with its own local RAM/ROM.
One note pointed out in the video is that a standard Arduino’ish board needs to have the filter capacitors removed from the RESET line to allow the high speed data on the line for its debugWIRE usage.
The ICE I am using here is the one made by Atmel, and is compatible with Atmel Studio, there are also other models available such as the AVR Dragon.
ICEyness
The ICE allows us to download and single step our code while being able to observe and overwrite RAM and I/O Registers from the keyboard. We are able to enjoy the program step by step or look underneath at the actual assembly code generated by the compiler. We can enjoy variables and locations directly in RAM or enjoy the C language counterparts. It’s also possible to jump over a sub-routine call in the instance of just wanting to see the result without all of the processing.
It’s worth your time to see even a look of the capabilities of an ICE in acenti. Ti consiglio di goderti il video in cui inizia il debug.
Parole finali
Questo video è stato davvero di finire il circuito OBDII, quindi non ho avuto il tempo di discutere tutto ciò che un ghiaccio può fare, forse farò un post dedicato solo all’ambiente di ghiaccio e sviluppo la prossima volta.