DEBUGIN i PicBasic pro

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Mutiaz
Inlägg: 295
Blev medlem: 3 april 2004, 17:29:53

Inlägg av Mutiaz »

Okej, jag ändrar mig igen. Det jag vill uppnå är att det tecken jag skriver i hyperterminalen ska visas på min LCD. Lcdn fungerar och jag har provat debug till datorn och det fungerade.

Nu ser min kod ut såhär:

Kod: Markera allt

@ device INTRC_OSC_NOCLKOUT
DEFINE DEBUGIN_REG PORTB
DEFINE DEBUGIN_BIT 0
DEFINE DEBUG_BAUD 2400
DEFINE DEBUGIN_MODE 1


DEFINE LCD_DREG  PORTA 
DEFINE LCD_DBIT  0 
DEFINE LCD_RSREG  PORTA 
DEFINE LCD_RSBIT  4 
DEFINE LCD_EREG  PORTB 
DEFINE LCD_EBIT  3 
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50

Pause 500           	  'Wait for LCD to wake up 
LCDOut $FE, 1       	  'Initiate LCD by clearing display 
Pause 500 

X VAR BYTE


MAIN:

    DebugIn [X]
    
        
    Pause 50
    LCDOut $FE, 1, X
  
    GoTo MAIN
     
End
Det händer inget när jag skriver i hyperterminalen men det är ett konstigt tecken på lcdn, ser ut såhär:
Bild
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

Jag kan inget om DebugIn men den är lika som SerIn2 så jag tror att dom tipsen fungerar.
Om du inte har någon wait kommer ditt program att läsa en tomsträng hela tiden om den inte får data.
Det kan bara bli ett tecken på displayen så länge som du inte sänder fler en ett i taget.
För att få fler tecken på displayen måste du skriva $FE, $14 så ska markören flytta sig.
Jag skull nog använda SerIn2 i stället. Detta skull nog kunna ersätta din ingång, SerIn2 PORTB.0.16780 [wait (a),X] men det skulle också innebära att terminalprogrammet måste sända ett a direkt före det tecknet som du vill ha på displayen.
Här brukar jag lägga in en liten text för att försäkra mig om att displayen startat riktigt.
Pause 500 'Wait for LCD to wake up
LCDOut $FE, 1 'Initiate LCD by clearing display
LCDout $FE, 1, En liten textBara för att se att displayen fungerar
Pause 1000
LCDOut $FE, 1
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Eftersom (om jag inte minns fel) Mutiaz använder en PIC med
hårdvaru USART, vad skulle vara anledningen till att *inte*
använda den ?

Så vitt jag förstår är både SerIn och DebugIn programvarulösningar
av seriekommunikationsrutiner !?
Mutiaz
Inlägg: 295
Blev medlem: 3 april 2004, 17:29:53

Inlägg av Mutiaz »

För att använda SerIn2 måste man väl ha typ Max232 o massa extra kretsar? Grejen med debugin är att det enda som krävs är ett 22k motstånd på tredje pinnen.
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

nej det räcker med ett motsånd för att använda serin2, det är isåfall om man använder hårdvaru uart som det kan va tvunget att använda en max232


om man kollar i picbasic manualen så finns där fina scheman på hur man ska koppla.
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

SerIn2 är fullt fungerande utan max232 eller liknande under förutsättning att du kör "inverted mod"100000110001100=16780 decimalt där bit 14 är ett, om du använder ex max232 så ska bit 14 vara noll 110001100=396 decimalt och detta gör 2400 i baud
Mutiaz
Inlägg: 295
Blev medlem: 3 april 2004, 17:29:53

Inlägg av Mutiaz »

Okej, jag har testat nu fast nu blev lcdn utan svart fyrkant. Men det syns fortfarande inga tecken..

Det är väl fortfarande 8databitar, oparitet och 1 stoppbit?
Användarvisningsbild
Icecap
Inlägg: 26648
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Om det är för att ta emot RS232->5V signaler duger en vanlig NPN-transistor helt fint. Seriesignalet in via en ... 22K duger nog bra, kollektorn till +5V via ett 4K7 motstånd och sedan det "rättvända" signal ut från kollektorn.

Och då kan man använda hårdvara-serieporten....

Men nåväl, en del gillar att göra det krångligt och besvärligt.
Senast redigerad av Icecap 2 januari 2006, 13:03:46, redigerad totalt 1 gång.
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

Prova detta då:

@ device INTRC_OSC_NOCLKOUT

DEFINE LCD_DREG PORTA
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTA
DEFINE LCD_RSBIT 4
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50


Pause 100

VisaX VAR BYTE ' Det du vill visa på disply


Pause 500 'Wait for LCD to wake up
LCDOut $FE, 1 'Initiate LCD by clearing display
LCDOut $FE,1,"En liten text"'Bara för att se att displayen fungerar
Pause 1000


loop:


SerIn2 PORTB.1,16780,[wait ("A"),VisaX]

Pause 50


LCDOut $FE, $14

LCDOut VisaX

GoTo loop

End

Tänk på att det går inte om du inte sänder ett A i samma rad med teletextprogrammet.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Grejen med debugin är att det enda som krävs är ett 22k motstånd på tredje pinnen.

En riktig skit-lösning som bygger på att man låter skyddsdioderna på PIC pinnarna leda
vilket medför att Microchip inte längre garanterar att processorn i övrigt
fungerar som den ska (t.ex ADC modulen kan bete sig *väldigt* konstigt).
Det är helt otroligt att ett professionell företag har med en sådan lösning i sin dokumentation !

> måste man väl ha typ Max232 o massa extra kretsar?

Vad är "en massa extra kretsar" ???

> "inverted mod"100000110001100=16780 decimalt där bit 14 är ett, om
> du använder ex max232 så ska bit 14 vara noll 110001100=396
> decimalt och detta gör 2400 i baud

Det här förstår jag inte alls...
Varför är det fler bitar i det ena fallet ?
Och varför är de inte inverterade ? Eller är de det ?
Och vad har baudraten med hur bitarna ser ut ? Ingenting, så klart...

Sen är det HSerIn som använder hårdvaru USART.

Allt detta med programvarubasserad seriekommunikation verkar vara
gamla "arv" från en svunnen tid då det kanske var vanligare att man
hade processorer utan hårdvaru-USART. I dag är dessa rutiner tämligen
onödiga och väldigt klumpiga. Visst, om processorn inte skall göra
något annat, så kanske det är OK, men inte om man skall göra något
"på riktigt"...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> @ device INTRC_OSC_NOCLKOUT

OK, med lite tur kan det fungera. :-)

INTRC på en 628A är ett gränsfall för seriekommunikation.
Det beror lite på hur PicBasic's programvaruläsning ser ut, och
hur "bra" just det exemplar man har ligger i frekvens.

Jag skulle rekomendera att antingen sätta dit en kristall,
eller använda en processor med den nya och mer exakta INTOSC.

Om man nu ändå har problem, och inte ritkigt vet vad det beror
på, så är det onödigt att lägga till ytterligare felkällor.
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

sodjan fyll på med 0 (NOLLOR) till vänster om talet 110001100 och berätta vad skillnaden blev.

> @ device INTRC_OSC_NOCLKOUT kan bli problem .
Mutiaz
Inlägg: 295
Blev medlem: 3 april 2004, 17:29:53

Inlägg av Mutiaz »

Det funkade hur bra som helst med den interna när jag skickade till datorn från 628an...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Det funkade hur bra som helst med den interna när jag skickade till datorn från 628an...

Så bra. Men det betyder inte att du inte ligger "on the edge", och det beror
fortfarande på hur serin rutinerna är skriva ifall det även fungerar i andra
riktningen. Men varför fundera ? Släng dit en kristall !
Och jag har inte riktigt förstått varför du inte kör med hårdvaru USART'en...

> fyll på med 0 (NOLLOR) till vänster om talet 110001100 och berätta vad skillnaden blev.

Aha ! Sorry !! Mitt misstag, nu ser jag...
Det är ju "mode" parametern, jag trodde att det vara data på serielinan... :-)
Ursäkta...
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

HserIn kräver en ex. MAX 232 bara för att den inte kan sättas i inverterat mode..
Skriv svar