Utbildningskretskort

Användarvisningsbild
Icecap
Inlägg: 26147
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Utbildningskretskort

Inlägg av Icecap »

Mina kollegor har ju visat ett "visst intresse" i att lära sig programmera. De har sett att man kan göra mycket med en µC - så jag har handlat hem en PICkit3, en handfull PIC18F25K22 och några PIC18F45K22.

Nu har jag petat ihop ett kretskort med en PIC18F25K22 (28 pin DIL). Det har 4 st tryckknappar, 4 st N-MOSFET utgångar med snubber diod, 2 st LED (röd & grön) samt standardanslutning till de LED-moduler vi använder. Det finns även er MAX232 på och ett DB9 kontaktdon för RS232.

Jag har skrivit en beskrivning av hur man startar ett projekt i MPLAB X med XC8, jag har gjort en .H-fil som innehåller allt som ska till för att ställa porta rätt osv, all definition av bits and bytes. Det finns en .C-fil också som man kan kopiera in i projektet och ge rätt namn, den innehåller allt för att slå på intern oscillator i rätt hastighet osv.

Utgången med MOSFET och snubberdioder är perfekt för 4 st relä - eller en unipolär stegmotor. Och se på fan, en sådan har jag precis här...

Det finns en enda pinne till övers och jag funderar på att koppla en pull-up på den och sedan montera ett kontaktdon som passar på de andra 1-Wire® kopplingar vi använder.

Just nu har jag gjort ett exempelprogram på hur man kan stega motorn med en hastighet samtidig som LED'na blinkar i en annan, allt utan att blanda in interrupts eller timers.

Ja, just den programmeringsstil jag inte gillar men grabbarna är blanka på programmering så de ska ha en chans att starta utan att det blir en rivstart.
Användarvisningsbild
Lennart Aspenryd
Tidigare Lasp
Inlägg: 12607
Blev medlem: 1 juli 2011, 19:09:09
Ort: Helsingborg

Re: Utbildningskretskort

Inlägg av Lennart Aspenryd »

Kan man få ställa sig i kö för att få inköpa en komplett sats.
Man kan aldrig testa för mycket ;-) Det finns många vägar till kunskap.
Låter som ett mycket lovvärt initiativ!
Användarvisningsbild
Icecap
Inlägg: 26147
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Utbildningskretskort

Inlägg av Icecap »

Jag kommer inte att sälja satser. Det är (än så länge) ett handlödd kretskort. Men schemat kan jag bjuda på:
Utbildningskort_100 Schema.pdf
20141031_083029.jpg
20141031_083038.jpg
OBS: I schemat är PICkit3-anslutningen 5 polig men i verkligheten 6 polig. Detta är för att LVP inte används normalt men för att undvika att det blir tveksamheter när PICkit3 ska anslutas är alla 6 poler - som finns på PICkit3 - med.

Jag funderar på att bygga minst ett kort mer av denna version så att man kan ha gång i ett projekt utan att blockera för andra. Jag funderar även på att bygga ett med en PIC18F45K22, alltså samma µC fast i 40-pinnars version. Då kommer det att finnas ett LCD-modul och lite annat.

Ska dock se hur intressen ligger bland kollegorna.

Jag ha skapat startfiler till kretskortet, de ligger på våran server.

"Utbildning_28.C":

Kod: Markera allt

/*
 * File:   Utbildning_28.c
 * Author: <jag>
 *
 * Created 2014-10-30
 *
 * Uses PIC18F25K22-I/
 */

#include "Utbildning_28.h"

void interrupt high_priority HIGH_ISR(void)
  {
  }


void interrupt low_priority ISR(void)
  {
  }


void main(void)
  {
  // First initiate ports and functions
  ANSELA  = 0x00; // No analog function on pins
  ANSELB  = 0x00; // No analog function on pins
  ANSELC  = 0x00; // No analog function on pins
  PORTA   = 0x00; // All low
  PORTB   = 0x00; // All low
  PORTC   = 0x00; // All low
  TRISA   = TRISA_DEFAULT; // Set to all out but RA0
  TRISB   = TRISB_DEFAULT; // All out
  TRISC   = TRISC_DEFAULT;
  OSCCON  = 0x70; // Select Primary clock, 16MHz INTOSC
  OSCCON2 = 0x00; // Nothing here
  PLLEN   = true; // Turn on PLL
  IPEN    = true; // Allow for interrupt priority
  PIE1    = 0x00; // None of these interrupt enabled
  PIE2    = 0x00; // None of these interrupt enabled
  while(true)
    {
    }
  }
"Utbildning_28.H":

Kod: Markera allt

/*
 * File:   Utbildning_28.h
 * Author: <jag>
 *
 * Created 2014-10-30
 *
 * Uses PIC18F25K22-I/
 */

#ifndef __UTBILDNING_28_H__
#define __UTBILDNING_28_H__

#include <htc.h>

#define false 0
#define true  1

#define X_TAL 64000000
#define SYSCLK (X_TAL / 4)

#pragma config FOSC = INTIO67
#pragma config PLLCFG = ON
#pragma config PRICLKEN = ON
#pragma config FCMEN = OFF
#pragma config IESO = OFF
#pragma config PWRTEN = OFF, BOREN = NOSLP, BORV = 220
#pragma config WDTEN = OFF, PBADEN = OFF, MCLRE = EXTMCLR, STVREN = ON, LVP = OFF
#pragma config XINST = OFF
#pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF, CPB = OFF, CPD = OFF
#pragma config WRT0 = OFF, WRT1 = OFF, WRT2 = OFF, WRT3 = OFF, WRTD = OFF

typedef unsigned char  BYTE;
typedef unsigned short WORD;
typedef unsigned long  DWORD;

#define Out_A_P        PORTCbits.RC0
#define Out_A_M        PORTCbits.RC1
#define Out_B_P        PORTCbits.RC2
#define Out_B_M        PORTCbits.RC3
#define Out_Port       PORTC
#define Out_A_P_Bit    0x01
#define Out_A_M_Bit    0x02
#define Out_B_P_Bit    0x04
#define Out_B_M_Bit    0x08

#define SW_1_Bit       0x01
#define SW_2_Bit       0x02
#define SW_3_Bit       0x04
#define SW_4_Bit       0x08
#define SW_Port        PORTA
#define SW_1           !PORTAbits.RA0
#define SW_2           !PORTAbits.RA1
#define SW_3           !PORTAbits.RA2
#define SW_4           !PORTAbits.RA3

#define LED_Red        PORTCbits.RC4
#define LED_Green      PORTCbits.RC5
#define LED_Port       PORTC
#define LED_Red_Bit    0x10
#define LED_Green_Bit  0x20

#define TRISA_DEFAULT  (SW_1_Bit | SW_2_Bit | SW_3_Bit | SW_4_Bit)
#define TRISB_DEFAULT  (0x00)
#define TRISC_DEFAULT  (0x80)


#endif // __UTBILDNING_28_H__
Tanken är att man ska kopiera "Utbildning_28.C" till rätt bibliotek och döpa om filen till rätt namn. Sedan finns hela stommen till att börja köra. Initieringen som köra startar den interna klocka med PLL och ger totalt 64MHz - men då PIC behöver 4 klockor för att köra en maskincykel blir verklig exekveringshastighet "bara" 16MHz.

Men 16MHz i exekveringshastighet räcker faktisk väldigt långt!

Om någon vet om en PDF-fil med C-referenser i skulle det vara trevligt att veta, kan lägga in det på servern så att kollegorna kan läsa lite. En referensverk ville vara trevlig och utbildningsmaterial skulle vara fint det med.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Wedge
Inlägg: 1026
Blev medlem: 8 juli 2012, 17:33:33

Re: Utbildningskretskort

Inlägg av Wedge »

Du borde ha en kondensator mellan MCLR och jord också. Eller, tja, inte direkt utan kanske via resistor på nåt vis om du ska kunna köra reset via tryckknapp, pickit, och standalone.
Användarvisningsbild
Icecap
Inlägg: 26147
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Utbildningskretskort

Inlägg av Icecap »

Wedge: Nix! Det borde jag inte! Dels behövs det inte pga. Brown-Out på PIC'en och dels avråder Microchip direkt mot att ha det.

Och samtliga PIC-projekt jag har byggt har bara haft ett 10k motstånd till VDD och det har inte varit några reset-problem. Jag har å andra sidan inte byggt med PIC16C84 heller...
MiaM
Inlägg: 9980
Blev medlem: 6 maj 2009, 22:19:19

Re: Utbildningskretskort

Inlägg av MiaM »

Inte en pdf-fil, men bland de bästa refernserna för generell ansi-C får man om man surfar in på nån abandonware-site eller lyckas navigera till Borlands "museum"-del på sin webbsida, och laddar ner Turbo-C 2.01 för ms-dos. Nackdelen är förstås att lär väl tugga loss 100% cpu-belastning och det finns väl inte stöd för att köra 16-bit-program på win64-burkar o.s.v.?
Användarvisningsbild
Wedge
Inlägg: 1026
Blev medlem: 8 juli 2012, 17:33:33

Re: Utbildningskretskort

Inlägg av Wedge »

http://ww1.microchip.com/downloads/en/D ... 41412F.pdf
Sidan 61, fig 4-2 visar en koppling med resetkondensator.
Hittar ingenting om att man inte skulle få göra reset med en resetpinne... ;)
Fast jag får väl erkänna att jag inte är så värst påläst på just den kretsen. Bara gamla reflexer som säger att extern reset är bra. Men funkar det utan så har jag inget problem med det! :)
Användarvisningsbild
swesysmgr
Inlägg: 14176
Blev medlem: 28 mars 2009, 06:56:43
Ort: Göteborg

Re: Utbildningskretskort

Inlägg av swesysmgr »

Icecap skrev:Om någon vet om en PDF-fil med C-referenser i skulle det vara trevligt att veta, kan lägga in det på servern så att kollegorna kan läsa lite. En referensverk ville vara trevlig och utbildningsmaterial skulle vara fint det med.
http://www.math.brown.edu/~jhs/Referenc ... d.v2.2.pdf Om man kan något annat programspråk och vet vad man vill göra men inte hur syntaxen ser ut i C
http://en.wikibooks.org/wiki/C_Programming Ofullständig men åtminstone en början

Är tanken att lära sig C på sin vanliga dator först och sedan gå på mikrodatorn eller skall de köra i MPLABX direkt?
Skillnader mellan vanlig C och mikrodator C som att programmet aldrig skall avslutas, att ditt ramminne är starkt begränsat, att rekursion inte funkar med XC8 och annat kan vara förvirrande för en nybörjare som försöker tillämpa standard-C material i sin mikrodatormiljö.
Användarvisningsbild
Icecap
Inlägg: 26147
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Utbildningskretskort

Inlägg av Icecap »

Wedge: kretsloppet är för "slow VDD power-up" - vilket jag inte har.
Skriv svar