Include-JAL

Fra Holstebro HTX Wiki
(Omdirigeret fra Kategori:PIC-moduler)
Skift til: navigering, søgning

Når man bruger en PIC er det også nødvendig at kunne bruge dens funktioner. Derfor starter man med at inkludere denne.

 include 16f684

Hvis man senere opdager at man mangler noget funktioner f.eks. delay, kan man altid inkludere denne.

 include delay

Normal brug af include

Funktionerne man ønsker at inkludere ligger alle i mappen \lib. Det man skriver efter

 include

henviser til en .jal fil i mappen \lib. F.x. ”delay” henviser til ”delay.jal”. Man skal dog være opmærksom på at man ikke kan skrive ”include delay.jal”.

Alle de filer der ligger i \lib er at betragte som standard biblioteker, hvor hovedparten er nogen der fulgte med Jalpack2, og filerne stiller en hel masse gode funktioner til rådighed, som man bare skal undersøge.

Include af PIC-type

Som nævnt i starten skal man definere hvilken PIC man vil arbejde med, og det gør man ved at bruge include af PIC-typen.

 include 16F684

I denne includefil ligger definitionen på alle de registre som er i PIC'en. Hvis man bare vil finde ud af navnet på dem, så er det nemmest at kigge i filen der ligger i \jalpack\lib, men hvis man vil have styr på hvordan man bruger registret, så skal man kigge i databladet for den aktuelle PIC.

I databladet er det registeret der er dokumenteret, og hvis der er kodeeksempler med, så er det i assembler, men de fleste registre kan bruges i JAL direkte, så man er nødt til at lave en oversættelse.

Sammen med definitionen af registrene, ligger der enkelte routiner man kan anvende, som f.x. enable_digital_io.

Da JAL er udviklet som open source, så kan man stå i at der er fejl og mangler i de moduler der er med, men det er så enkelt, at man selv kan finde fejlene og rette dem.

Include af andre funktioner

Der ligger rigtigt mange forskellige include-filer i \jalpack\lib, hvor nogle af dem ikke har relevans for vores brug af PIC'en, mens andre kan være ret interessante. En der er meget brugt er

 include delay

Den indeholder en række procedurer der venter aktivt i proceduren (kan ikke lave andet samtidigt med).

Til AD konvertering ligger der 4 filer, men de kan desværre ikke håndtere de PIC-typer vi anvender. Derfor er der et specielt modul under Moduler

 include adc.jal
 include adc_channels.jal
 include adc_clock.jal
 include adc_hardware.jal

Man kan få fuld kalender-håndtering ved hjælp af calender - det kræver blot at man har noget der tæller sekunderne frem (hvert sekund), det kunne typisk ske i et interrupt

 include calendar.jal

Der ligger biblioteker som kan håndtere noget helt specifikt hardware.

 include co2_t6603.jal
 include humidity_sht.jal
 include ir_ranger_gp2d02.jal
 include temperature_tc77.jal

Til større data-lagring kan man tilslutte en 32 kB EEPROM ved hjælp af en i2c bus.

 include eeprom_24lc256.jal

Til meget store datamængder kan man tilslutte en FAT32 harddisk - det ser dog ud som om systemet kun er på på prototype-niveau, da man ikke kan skrive nye filer. Det andet ser mere udviklet ud, men kræver vist en lidt større PIC for at fungere ordentligt.

 include fat32.jal
 include pata_hard_disk.jal

Der ligger et modul der kan formattere tal om, f.x. til udskrift på et display. Til de fleste ting vil man kunne bruge de moduler der ligger i ACLD modulet.

 include format.jal

i2c er en standard, så man kan koble mange forskellige enheder bare på 2 ben af PIC'en og kommunikere med dem efter en fastlagt standard. Det kræver selvfølgelig at de ting man kobler på følger den i2c standard.

 include i2c_hardware.jal
 include i2c_hw_slave.jal
 include i2c_hw_slave_isr.jal
 include i2c_hw_slave_msg.jal
 include i2c_level1.jal
 include i2c_software.jal

Til at arbejde med ASCII karakterer er der defineret alle escape-karaktererne og to rutiner der kan konvertere til store og små bogstaver

 include jascii.jal

Man kan kommunikere med et matrix keyboard der er koblet på 2 * 4 bit så man kan aflæse i alt 16 taster med resultatet 0 - 15

 include keyboard.jal

Large array er kun relevant ved arbejde med større PIC-typer end dem vi anvender

 include large_array_1.jal
 include large_array_2.jal
 include large_array_3.jal
 include large_array_4.jal

Forskellige rutiner til håndtering af LCD-display. De bliver udnyttet i ALCD modulet, så man kan lettest komme uden om dem ved blot at bruge det modul. Vi har heller ikke LCD med backlight.

 include lcd_backlight.jal
 include lcd_hd44780_4.jal
 include lcd_hd44780_8.jal
 include lcd_hd44780_common.jal
 include lcd_hd44780_serial_sw.jal

Matematik er måske så meget sagt, men der er rutiner til at tage kvadratroden af et word og et dword

 include math.jal

Meget anvendeligt modul, hvor man kan læse og skrive i PIC'ens interne EEPROM. Man skal selv holde styr på adresserne og størrelsen af EEPROM i den aktuelle PIC, så man ikke kommer ud over adresseområdet, og man skal være opmærksom på at der skal 2 bytes til et word og 4 bytes til et dword, så man skal have den afstand mellem adresserne på disse

 include pic_data_eeprom.jal

Et modul der kan lave en formatteret skrivning til devices der kan optræde som en byte, f.x. en seriel port.

 include print.jal

Pulsbreddemodulation er en måde at angive noget på nærmest analog vis, blot ved hjælp af en enkelt digital udgang. Princippet er at udgangen er høj i en %-del af tiden og lav i resten, så hvis et 5V signal er høj i 40% af tiden og lav i resten, så vil det svare til et output på 2V.
Anvendelsen af modulerne kræver at PIC'en kan håndtere det, hvor PIC16F684, PIC16F690, PIC16F628 og PIC16F877 kan håndtere et eller flere ben med den type output.

 include pwm_common.jal
 include pwm_hardware.jal

Queue rutinerne kan håndtere en FIFO-kø. Det betyder at man kan lægge data ind i et lager og trække dem ud igen efter behov, så længe man ikke overskrider køens størrelse. FIFO betyder at de data der kommer først i køen også kommer først ud.

 include queue01.jal
 include queue02.jal
 include queue03.jal
 include queue04.jal

Pseudo Random modul

 include random.jal

Interface til et SD-kort, så man kan læse og skrive i sektorer på SD-kortet

 include sd_card.jal

En seriel port kan kommunikere med en PC via en seriel COM-port, hvor man kan sende en byte ad gangen hver vej. Det kræver at PIC-en har en indbygget USART, som i PIC16F690, PIC16F628 og PIC16F877.

 include serial_hardware.jal
 include serial_hw_int_cts.jal
 include serial_software.jal

Styringen af de syv segmenter i et display, så visningen bliver styret af en byte.

 include seven_segment.jal

Bus-system til håndtering af perifere enheder ved hjælp af en seriel protokol

 include spi_master_hw.jal

En statisk RAM kreds kontrolleret ved hjælp af SPI-master

 include sram_23k256.jal

Timermodul der udnytter interrupt.

 include timer0_isr_interval.jal

USB interface til PIC i 18F serien, som vi ikke arbejder med

 include usb_defs.jal
 include usb_drv.jal
 include usb_drv_cdc_class.jal
 include usb_drv_core.jal
 include usb_serial.jal

Include brugt til moduler

Til PIC udviklingsboard har Bent Arnoldsen lavet en del moduler, hvor nogle bare er et stykke software, og andre er udviklet til et lille print (hardware), som så kan løse en eller anden funktion.

Disse moduler er skrevet som include-filer, så man bare skal inkludere dem i sin kode som f.x.

 include ALCD

Der henter alle biblioteks-rutinerne til et Alphanumerisk LCD display.

Strukturen i disse moduler er beskrevet i software-moduler, hvor denne teknik er grundigere dokumenteret. Der er også dokumenteret under hardware-moduler hvordan disse dokumenteres.

Pin-definitioner i en include

Da man ikke altid ønsker at bruge displayet på samme port eller måske ikke på de samme ben, så er de fleste moduler der er lavet til at arbejde med input-output skrevet så man skal inkludere en lille fil med pin-definitioner.

Filen vil typisk hedde f.x. ALCD_pin.jal. Den fil lægger man i mappen sammen med sine egne programmer. På den måde kan man bruge modulerne universelt i mange forskellige programmer, uden at være bundet af hvordan tingene skal sluttes til porten, da man kan definere det i hver enkelt mappe (projekt) man laver.

Oversigt over moduler

Dette er en oversigt over de moduler der er skrevet af Bent Arnoldsen og elever til brug på Holstebro HTX.

På sigt kan der også komme beskrivelser af de grundlæggende pakker der ligger i \jalpack\lib.

Dette er en oversigt, der udvides efterhånden som modulerne udvikles. Den ligger i templatet moduler:

Moduler på Holstebro HTX
Tastaturer Displays AD-konvertering I/O-ekspander Serielt Interface Færdige Andre
RC-tast - AD-tast - M_tast ALCD - LCD ADC_holst - ADC
mcp3201 - mcp3208
input - output Seriel_holst - Serial hardware
Serial hw int cts - Serial software
Stepmotor - RFID
RGB - RF-link - Afstand
Humidity - Analog temp - Dig temp
Accelerometer
Rotary Encoder

Oversigt over Hardware Moduler på Holstebro HTX