Kul med PIC församling - Episode 8 (3 / 3 steg)
Steg 3: programvara
Länkarna listas nedan. Jag har tagit sådana för både 12F683 och 16F688. Skillnaderna är oftast i några registernamn tillsammans med de förväntade skillnaderna i PIC-versionen (lista =) och det inkludera filen och den __CONFIG linjen.
Som tidigare nämnts är programvara baslinjen den som vi används i Episode 7 för perioderna som lång sömn. Dessutom lades EEPROM skriva koden från avsnitt 6. I den 12F683 versionen raden är "BCF EECON1, EEPGD" kommenterade ut eftersom det endast gäller för 16F688. Den linjen används inte i den 12F683 koden eftersom den EEPGD biten inte finns i registret över EECON1. 12F683 kan endast skriver EEPROM och inte programminne. De flesta av resten av den nya koden behandlar A/D-omvandlare installation och användning. När rätt registren ställs in i Init koden, krävs omvandlingen bara ett par av flaggor som ska anges. Som är gjort i avbrottshanterare när PIC vaknar. Du kan också se de punkter där strömmen slås på och av för temperaturgivare och Vref potentiometern. Det finns också en oändlig loop i den sista delen av rutinen Init om aktivera PIN-koden beskrivs i hårdvara steg inte är jordad. Som hindrar EEPROM från att skrivas över när det sitter i Pickit3 programmeraren.
En ny twist i koden är användningen av en utökad uppslagstabell på en angiven adress att översätta A/D värdena till temperatur värden. När du använder uppslagstabeller såhär måste du se till att tabellen gränsen inte korsa en sidgränsen. Sidor är definierade start var 256 byte (100 hex). I det här exemplet börjar vi avsiktligt sökning tabell koden på en hög sidgränsen (700 hex). För att beräkna samtal adressen för denna kod kopiera vi de övre bitarna i tabell adress i registret PCLATH. Dessa adress bitar sedan vänja av PIC vid beräkning av platsen för sökning tabell koden. Det är något du inte behöver oroa dig när du använder ett högnivåspråk som C eftersom kompilatorn automatiskt läggs de nödvändiga instruktionerna för dig. Det är också något du normalt inte behöver oroa dig när du använder mikrokontroller eller mikroprocessorer som har en full 16-bitars adress förmåga.
Det finns två andra saker att notera om uppslagstabellen. Eftersom vi begränsar vår temperatur avläsning till två siffror för bekvämlighet, använda siffror från 100 till 109 grader en ASCII "A" för decimal motsvarigheten till "10". En annan sak att komma ihåg är att varje post i tabellen tar två byte minne. En byte är för RETLW undervisning och en byte är för det returnerade värdet. Vi får inte överstiga 127 inlägg för att hålla inom vår sida gräns på 255 byte.
OK, så vi få allt byggt och kör men hur får vi loggade data ur PIC? Med 16F688 kunde vi lägga till ett seriellt gränssnitt eller ens Bluetooth interface beskrev i ett tidigare avsnitt. För detta projekt kommer vi hålla det enkelt och bara använda funktionerna i våra Pickit3 programmerare och MPLAB X IDE. Vi känner redan till på knappen för att ladda ner (program) programvaran till PIC, men alldeles intill knappen är en för uppladdning från PIC. Om du klickar på pilen vid sidan av knappen kan du se alternativen för vilka delar av minne du vill hämta. Det nedersta alternativet är för EEPROM. När du klickar på det, dyker det upp ett fönster som låter dig bestämma namn och destination av hex filen. Den fil som skapas kan läsa Windows Anteckningar och formateras så här:
: 020000040000FA
: 10420000730073007200720072007200720072001C
: 104210007200720072007200720072007100710010
|
|
|
: 00000001FF
De verkliga datavärdena inloggad start på linje 2. Det finns sammanlagt 32 rader av data med 8 värden på varje rad. Det första värdet på varje rad börjar på 8 plats. Datainmatningarna loggas som 16-bitars värden men två nollor är inte tillämplig eftersom EEPROM är endast 8 bitar bred. Fyra sista siffrorna på varje data fodrar är en kontrollsumma och kan ignoreras. Uppslagstabellen i programvaran sätter särskilt värde med vetskap om att den hex filen kommer att konvertera dem till ASCII. I exemplet ovan temperaturerna registreras på första raden är 73, 72, 73, 72, etc. Tja, är det det för Episode 8 av "Kul med PIC församlingen". Håll ögonen öppna för ytterligare episoder.