mikroPascal och PIC16F874

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
lgrfbs
Inlägg: 6973
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

mikroPascal och PIC16F874

Inlägg av lgrfbs »

Förutsättningar:
Har licens på mikroPascal v7.5.0
MPLAB IPE v6.10
RealTerm 2.0.0.70

Delmål
Att få till text "Hej" dyker upp i RealTerm.

Hårdvara
PicKIT4
PiKIT.png
Elschema
ElSchema.png
PCB
PCB.png
IMG_20230521_020131.png
Programkoden klippt och klistrad från hjälpfilen.

Kod: Markera allt

program DCC_keypad;
(*
                +-----------___------------+
                |                          |
       MCLR/VPP * 1                  PGD 40* RB7/PGD
       RA0/AN0  * 2 RS485 #4         PGC 39* RB6/PGC
       RA1/AN1  * 3 RS485 #1    TX RS232 38* RB5
  RA2/AN2/VREF- * 4 RS485 #2&3  RX RS232 37* RB4
  RA3/AN3/VREF+ * 5                  PGM 36* RB3/PGM
      RA4/T0CKI * 6            CTS RS232 35* RB2
     RA5/AN4/SS * 7                      34* RB1
     RE0/RD/AN5 * 8                      33* RB0/INT
     RE1/WR/AN6 * 9         RS232 5+/VDD 32* VDD
     RE2/CS/AN7 *10        RS232 GND/VSS 31* VSS
            VDD *11 VDD                  30* RD7PSP7
            VSS *12 VSS                  29* RD6/PSP6
     OCS1/CLKIN *13 OCS                  28* RD5/PSP5
    OSC2/CLKOUT *14 OSC                  27* RD4/PSP4
RC0/T1OSO/T1CKI *15                      26* RC7/RX/DT
 RC1/T1OSI/CCP2 *16                      25* RC6/TX/CK
       RC2/CCP1 *17                      24* RC5/SDO
    RC3/SCK/SCL *18                      23* RC4/SDI/SDA
       RD0/PSP0 *19                      22* RD3/PSP3
       RD1/PSP1 *20                      21* RD2/PSP2
                |         PIC16F874        |
                +--------------------------+






  *)
//Soft_UART;
var error : byte;
    counter, byte_read : byte;                       // Auxiliary variables
{
var rs485_rxtx_pin  : sbit at RC2_bit;               // set transcieve pin
    rs485_rxtx_pin_direction : sbit at TRISC2_bit;   // set transcieve pin direction
 }

{ Declarations section }

begin
  { Main program }

//Soft_UART -------------------------------------;
  //ANSEL  := 0;                           // Configure AN pins as digital I/O
  //ANSELH := 0;

  TRISC := 0x00;                           // Set PORTC as output (error signalization)
  PORTC := 0;                              // No error


//function Soft_UART_Init(var port : byte; rx_pin, tx_pin, baud_rate : dword, inverted : byte): byte;
  error := Soft_UART_Init(PORTB,4,5,110,0); // Initialize Soft UART at 110 bps
  if (error > 0) then
    begin
      PORTC := error;                      // Signalize Init error
      while (TRUE) do nop;                 // Stop program
    end;
  Delay_ms(500);



  for counter := 'z' downto 'A' do         // Send bytes from 'z' downto 'A'
    begin
      Soft_UART_Write(counter);
      Delay_ms(500);
    end;
    

  while TRUE do                            // Endless loop
    begin
      byte_read := Soft_UART_Read(error);  // Read byte, then test error flag
      if (error <> 0) then                 // If error was detected
        PORTC := error                     //   signal it on PORTB
      else
        Soft_UART_Write(byte_read);        // If error was not detected, return byte read
    end;
//Soft_UART -------------------------------------;

end.
DCC_keypad.zip
Slutmålet för detta projekt är att få till en matris av tryckströmbrytare som mjukvarumässigt länkas till att sända ut olika DCC kommandon över XpressNet protokollet.

Men först måste jag få igång in och ut data över seriellkortet, så vad har jag gjort för fel?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Icecap
Inlägg: 26106
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: mikroPascal och PIC16F874

Inlägg av Icecap »

ANSEL & ANSELH ska definitivt ställas till att ingen analog input finns.
Alla TRIS ska ställas rätt.
När man använder software UART brukar man skulle ange i någon definition vilken klocka processorn har, detta för att timingen kan fungera.

Har du sett OM processorn kör alls?
Typ en LED på en port o blinka den?

Eller växla en portpinne för varje bytes som sändas? Då kan man se om den faktisk inte vänrar på något.

Att jag sedan anser soft UART som en styggelse som borde förbjudas är en annan sak.
Användarvisningsbild
lgrfbs
Inlägg: 6973
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Re: mikroPascal och PIC16F874

Inlägg av lgrfbs »

:oops: Nej, jag har inte något som visar att processorn kör.
Ska åtgärda det med lite lysdioder, så jag kan se vad jag gör samt plocka fram mitt oscilloskopet så att det går att kolla signaler.

Detta version 1 av kretskortet, version 2 är inte byggt ännu.
Kan det vara en idé att ta brytkniven och flytta TX & RX från pinne 37 & 38 (där de finns nu) till pinne 25 & 26 för enligt databladet ( https://ww1.microchip.com/downloads/aem ... 30292D.pdf ) sida 16 så ska det finnas en USART Asynchronous där som jag misstänker är en seriellport i hårdvaran?

Tack för svaret det är säkert 20 miljoner år sedan jag skrev program för PIC......
Användarvisningsbild
Icecap
Inlägg: 26106
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: mikroPascal och PIC16F874

Inlägg av Icecap »

Om du vill ha 2 st UART... varför har du inte vald en processor med minst 2 st?
Mjukvara UART är nog bland det minst bra man vill ha.
Användarvisningsbild
lgrfbs
Inlägg: 6973
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Re: mikroPascal och PIC16F874

Inlägg av lgrfbs »

Jag skrev nog lite slarvigt.
Jag behöver bara EN UART.

Jag kan nu välja om jag ska köra mjukvara UART eller hårdvara UART.

Varför designade jag inte direkt mot UART i hårdvaran?
Jag var bekväm och ville ha hela block till knapparna.
Användarvisningsbild
Icecap
Inlägg: 26106
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: mikroPascal och PIC16F874

Inlägg av Icecap »

Att köra software-UART gör att processorn inte kan göra något all vid sändning o mottagning.

Med hårdvara UART kan en timer-interrupt scanna keyboard samtidig med att det sändas/tas emot.

Man kan kolla en flagga om det är mottagit en seriell byte, det är inte möjligt med soft-UART.

Att du vill ha hela block till keyboard är något närt förödande för att få en fungerande mjukvara.

Men det är bara min uppfattning.
Användarvisningsbild
lgrfbs
Inlägg: 6973
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Re: mikroPascal och PIC16F874

Inlägg av lgrfbs »

Tack, ska försöka få till det du haft synpunkter på.
Tack.
Användarvisningsbild
lgrfbs
Inlägg: 6973
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Re: mikroPascal och PIC16F874

Inlägg av lgrfbs »

Gjorde en webbsökning och fann att många kopplade på detta sätt:
MCU koppling.png
Har jag gjort bort mig totalt nu när komponenterna i de blå fälten inte är med i min design?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Icecap
Inlägg: 26106
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: mikroPascal och PIC16F874

Inlägg av Icecap »

C1 & C2 används för att kristallen ska svänga på rätt sätt o skaplig rätt frekvens.
Om du kör med kristall är de vitala och SKA vara med.

R1 är till för att hålla -RESET till stabilt nivå.
Vital den också.

Den fungerar UTMÄRKT att ha på plats ihop med PICkit3 o nog med PICkit 4 också för ICSP.

Jag ser ingen avkopplingskonding vid PIC'en, kotym är 100nF så när VDD & GND pinnarna som möjligt med så korta o raka ledningar som möjligt.

Min tumregel är att VARJE matning till en logisk krets SKA ha 100nF, för ALLA logiska kretsar.
Det är ett bra sätt att minska problemer med störningar som annars kan vara så djävliga att få saker att flippa ur på tidspunkter där det passar sämst o göra det "oförklarligt".

Lite mer utförligt: C1 & C2 fungerar dels som en belastning för kristallen som då - med den belastning - kör på rätt frekvens.

Men samtidig fungerar de som ett AC-kopplat mittuttag på kristallen vilket ger en 180° fasvänding av utgångssignalen från oscillatorn - o då oscillatorn just är en inverter blir summan 360° = 0° - o skiten svängar.
Användarvisningsbild
AndLi
Inlägg: 17051
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: mikroPascal och PIC16F874

Inlägg av AndLi »

Icecap skrev: 21 maj 2023, 19:15:07 Att köra software-UART gör att processorn inte kan göra något all vid sändning o mottagning.
Så får du väl allt implementera din sw-uart lite bättre..
Visst på någon gammal PIC finns det väl inte så många klockcykler kvar att göra annat på.

Titta på tex RPi pico där kan man implementera massa skojiga uart eller vad man nu vill ha i mjukvara. Väldans flexibelt!
Användarvisningsbild
Icecap
Inlägg: 26106
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: mikroPascal och PIC16F874

Inlägg av Icecap »

Jag har aldrig o kommer aldrig att använda soft-UART.

Har man en μC som tuggar på med god frekvens kan man göra en UART-funktion medels timer-interrupt.

Men ofta behövs en del mer funktioner för bra UART o overhead blir då hög.
Användarvisningsbild
lgrfbs
Inlägg: 6973
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Re: mikroPascal och PIC16F874

Inlägg av lgrfbs »

Har beställt C1 & C2 (22p) samt R1 till -RESET, så bättring är på gång.
Har även beställt lite lysdioder och förkopplingsmotstånd.
Så snart kan jag se var jag pysslar med.
Tack för hjälpen så här långt.
Skriv svar