Sida 1 av 1
Utbildningskretskort
Postat: 30 oktober 2014, 21:16:35
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.
Re: Utbildningskretskort
Postat: 31 oktober 2014, 02:33:27
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!
Re: Utbildningskretskort
Postat: 31 oktober 2014, 08:47:33
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.
Re: Utbildningskretskort
Postat: 31 oktober 2014, 09:23:36
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.
Re: Utbildningskretskort
Postat: 31 oktober 2014, 09:27:14
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...
Re: Utbildningskretskort
Postat: 31 oktober 2014, 16:07:48
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.?
Re: Utbildningskretskort
Postat: 31 oktober 2014, 16:21:13
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!
Re: Utbildningskretskort
Postat: 31 oktober 2014, 16:41:51
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ö.
Re: Utbildningskretskort
Postat: 31 oktober 2014, 16:47:34
av Icecap
Wedge: kretsloppet är för "slow VDD power-up" - vilket jag inte har.