Sida 1 av 3
DEBUGIN i PicBasic pro
Postat: 31 december 2005, 16:41:08
av Mutiaz
Hej!
Jag får fel varje gång jag ska kompilera med kommandot DebugIn. Det står: Expected ']' och det kommer upp en ruta där det står "Compile timeout". Varför?
Någon som kan förklara hur DebugIn kommandot funkar med labels o grejer för jag hänger inte riktigt med i manualen.
Postat: 31 december 2005, 16:47:01
av JimmyAndersson
Jag har ingen erfarenhet av just PicBasic, men " Expected ']' " låter helt klart som att PicBasic berättar att du missat ett ] någonstans. Därför kan inte kompileringen gå vidare och du får ett "Compile timeout".
Expected = Förväntade
Ibland kan ett felmeddelande varna för att en sak saknas eller är fel, men det kan lika gärna vara något annat på någon tidigare rad som är galet. Då förstår inte PicBasic vad det är du vill göra.
Lägg gärna upp koden så kan vi kika.

Postat: 1 januari 2006, 14:09:10
av Mutiaz
Koden är inte klar men såhär ser det ut just nu:
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 100
x VAR BYTE
Pause 500 'Wait for LCD to wake up
LCDOut $FE, 1 'Initiate LCD by clearing display
Pause 500
loop:
DebugIn [WAIT("HEJ"),B0]
Pause 50
LCDOut $FE, 1, X
GoTo loop
End
Postat: 1 januari 2006, 14:26:32
av Icecap
DebugIn [WAIT("HEJ"),B0]?
eller ska det vara:
DebugIn [WAIT("HEJ"),$B0]?
Postat: 1 januari 2006, 14:40:33
av Mutiaz
Det blir ingen skildnad med dollartecknet. Jag skulle gärna veta vad de olika items o labelsen gör..
Postat: 1 januari 2006, 14:47:53
av Mutiaz
Jag hittade tillslut ett exempel som fungerade att kompilera och det ser ut såhär:
Kod: Markera allt
X VAR BYTE[3]
MAIN:
DebugIn 6000,NoData,[WAIT("A"),STR X\3]
Debug "Received: ",STR X\3,13,10
GoTo MAIN
NoData:
Debug "Nada",13,10
GoTo Main
End
Kan någon förklara lite mer exakt vad denna kod gör? Jag skulle vilja göra koden så att den skriver ut det jag skriver i hyperterminalen på en LCD, nått tips?
Postat: 1 januari 2006, 15:33:20
av Mutiaz
Har suttit o grejat ett tag nu och jag funderar på hur man skulle kunna göra detta, detta funkar inte men jag tror ni fattar hur jag vill att det ska funka:
Kod: Markera allt
X VAR BYTE[3]
MAIN:
DebugIn 6000,SKRIVLCD,[WAIT("A"),STR X\3]
GoTo MAIN
SKRIVLCD:
IF X = 123 Then
Pause 50
LCDOut $FE, 1, "Montoya"
EndIF
End
Postat: 1 januari 2006, 16:07:06
av Icecap
Näää....jag hoppar av.
När ett programmeringsspråk har BASIC med i namnet vet jag att det är skit och omöjligt att åstakomma något vettigt med.
Hade det varit C eller Pascal eller assembler eller annat vettigt kunne jag nog hjälpa men BASIC......
Sen fattar jag inte vad du egentligen vill uppnå. Om du vill veta att en rutin körs brukar jag ha en pinne med en LED (eller fler pinnar med var sin LED) och sedan slår jag på dom, av dom eller toggler dom (syns bra i oscilloskop) och det har jag debuggad MÅNGA projekt med.
Postat: 1 januari 2006, 16:14:11
av Mutiaz
Haha! Jag tycker basic är bra mycket lättare än C o Pascal...
DebugIn är ett kommando som är ungefär som SerIn fast lättare.
Alltså jag vill skriva i hyperterminalen och skicka ut tecknen på LCDn som är kopplad till PICen.
Postat: 1 januari 2006, 16:42:24
av sodjan
> Haha! Jag tycker basic är bra mycket lättare än C o Pascal...
Det beror väll på om man vill göra något riktigt eller bara leka.
> Alltså jag vill skriva i hyperterminalen och skicka ut tecknen på LCDn som är kopplad till PICen.
Alltså läsa från USART'en och skriva med en LCD rutin, alltså.
Så som DebugIn är implementerat (ligger och väntar på att det skall komma
något) så kan den ju inte användas till något "riktigt", kanske något
mindre testprogram som det här.
Sen, att skriva att "...detta funkar inte..." är ganska värdelöst.
Du måste beskriva bättre på vilket sätt det inte fungerar, Vad du
förväntade dig skulle hända. Vad som händer *istället.* Hur du
*vet* att det inte fungerar Vad du har gjort för debugåtgärder o.s.v.
I ditt exempel vill du alltså att om du *inte* skriver ett "A" inom 6
sekunder så skall LCD'n visa "Montoya". Vad händer istället då ?
Vad betyder "X = 123" ??
Kommentera programmet !!
Postat: 1 januari 2006, 17:01:11
av tusse
Vi försöker igen, programmet vet inte vad B0 är på grund av att du fått för många mellanslag i
DEFINE DEBUGIN_REG PORTB
DEFINE DEBUGIN_BIT 0
före PORTB och 0.
PicBasic är mer än en leksak, det förstår inte alla.
Postat: 1 januari 2006, 17:12:19
av Mutiaz
Så man kan bara leka med PicBasic? Det betvivlar jag starkt..
Jag har kollat igenom manualen och bedömer att HSerin lär vara det jag söker. Ska prova detta och återkommer.
tack
Postat: 1 januari 2006, 18:05:09
av sodjan
OK.
Eftersom du hade tittat på kommandon för mjukvaru-USART så antog jag
att du hade en PIC *utan* hårdvaru-USART. Svårt att veta eftersom
du inte talar om vilken PIC du använder.
Nja, Det är väll ingen "leksak", det sa jag inte heller.
Hur som helst, begränsningarna brukar uppenbara sig med tiden...
Postat: 1 januari 2006, 18:36:42
av Mutiaz
Jag har 16F628A så de ska la gå bra?
Jag får väl gå över till "the dark side" när jag fått min uppenbarelse.

Postat: 1 januari 2006, 18:58:40
av sodjan
Angående språkval...
På ett PIC forum (Picklist) ställdes för något år sedan följande fråga :
Hi there.
I have been using PICs since last June programming in assembler, I am now looking a using the C language.
What are the advantages/disadvantages of C over the assembly language.
Am I right in thinking that there are built in 'modules' for division, multiplication etc.
Are there any good online tutorials on programming in C for complete beginers?
Christopher
Med (bl.a) följande svar :
First you know nothing;
YOU ARE HAPPY
You then learn about the chip:
YOU LEARN AND USE ASSEMBLY
You then find out there is an easier way, so you can spare some time to watch TV:
YOU LEARN AND USE C
You then find out there is a simpler way, so you can spare all the time in TV, cars, girls, bars, traveling, yatch, relaxing, etc:
YOU HIRE SOMEBODY ELSE TO WRITE THE CODE.
You then find out your money is going fast, so you decided to do some work:
YOU LEARN AND USE JAL
You then find out your money is going real fast, you need to do all the work and save some code space:
YOU RETURN TO WRITE IN C.
You then find out it is not bad to dedicate time, by the way, writing code is a kind of hobby, so stop watching TV and leave girls alone:
YOU RETURN TO WRITE IN ASSEMBLY.
You then find out happines is all around:
YOU LEARN ABOUT AVRs
You then find out you were happy and didn't know.
YOU REMOVE WinXP AND REINSTALL WIN98SE.
You then find out life is a misery, and you want paradise right now.
YOU REMOVE Win98SE AND INSTALL DOS6.
Now, what was your question up there?
Wagner.
