Min BS2 beter sig inte som jag vill!

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Min BS2 beter sig inte som jag vill!

Inlägg av squiz3r »

Hej, jag håller på att göra ett litet program som ska ta emot seriel data, och sen debuga den till datorn (den delen funkar). Men när jag startar upp den måste PIC'en som den pratar med hinna förbereda sig, så därför ska den inte starta fören IO 11 (timer) blir hög. Men avnågon anledning så verkar det som om den startar om hela tiden.. För att om jag startar den o låter timer bli hög så ska jag kunna stänga av timer sen uatan att påverka BS2'an... Men det går inte, för att varje "varv" den gör så går den till "index" loopen, Och det ska den ju inte!!

Koden finns på http://www.crazycasemod.se/bs2.txt
eller:

Kod: Markera allt

' {$STAMP BS2}
' {$PBASIC 2.5}


databits   VAR Byte
data0      VAR databits.BIT0
data1      VAR databits.BIT1
data2      VAR databits.BIT2
data3      VAR databits.BIT3
data4      VAR databits.BIT4
data5      VAR databits.BIT5
data6      VAR databits.BIT6
data7      VAR databits.BIT7

LED         PIN 0
clk_pic     PIN 1
data_pic    PIN 2
timer       PIN 11
left_sevo   PIN 12

OUTPUT left_sevo
INPUT data_pic
INPUT timer


index:
  GOSUB blink_LED
  IF timer = 1 THEN main
  GOTO index:

' sub routines

request_data:
  OUTPUT  clk_pic
  HIGH    clk_pic
  PAUSE   1
  LOW     clk_pic
  INPUT   clk_pic
  RETURN


save_data:
  DO
  LOOP UNTIL IN1 =1

    DO
    LOOP UNTIL IN1 = 0
    DO
    LOOP UNTIL IN1 = 1
    data0 = IN2
    DO
    LOOP UNTIL IN1 = 0
    DO
    LOOP UNTIL IN1 = 1
    data1 = IN2
    DO
    LOOP UNTIL IN1 = 0
    DO
    LOOP UNTIL IN1 = 1
    data2 = IN2
    DO
    LOOP UNTIL IN1 = 0
    DO
    LOOP UNTIL IN1 = 1
    data3 = IN2
    DO
    LOOP UNTIL IN1 = 0
    DO
    LOOP UNTIL IN1 = 1
    data4 = IN2
    DO
    LOOP UNTIL IN1 = 0
    DO
    LOOP UNTIL IN1 = 1
    data5 = IN2
    DO
    LOOP UNTIL IN1 = 0
    DO
    LOOP UNTIL IN1 = 1
    data6 = IN2
    DO
    LOOP UNTIL IN1 = 0
    DO
    LOOP UNTIL IN1 = 1
    data7 = IN2
    RETURN


blink_LED:
  HIGH LED
  PAUSE 500
  LOW LED
  PAUSE 500
  RETURN

read_data:
  DEBUG HOME, BIN8 databits
  RETURN

'main routine
main:
  GOSUB   request_data
  GOSUB   save_data
  GOTO    read_data
  GOTO    main:

END
Är det något jag har glömt eller varit otydlig med så säg till.
Tacksam för snabba svar då jag behöver ha denna klar helst i morgon, abselut senast på torsdag..

//Daniel A
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Vad är det som startar om hela tiden? PIC/BS2/Timer ?

Om du har en utgång så testa med en lysdiod att indikera status det kan hjälpa i felsökningen. Tänk på att två lysdioder kan kopplas till samma utgång med den ena till plus & den andra till minus så ser man 1 eller 0 tydligt.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

När jag startar BS2'an så ska den gå in i "index" loopen o vänta där till IO pinnen "timer" blir hög, då ska den gå vidare till "main" loopen och sen ska den gå runt i "main" loopen hela tiden. Men på något sätt så kommer den till "index" loopen varje "varv". Det är det jag inte förstår hur det går till :!: :?:
Jag kopplade en LED till en IO pinne o sa till den att den skulle blinka LED'n när den låg i "index" loopen. Vilkett borde betyda att den blinkar i början tills "timer" pinnen blir hög, men den blinkade hela tiden efter det också...

Vad för funktion har "END" ?? och vad händer om koden tar slut och det inte finns någon "END" utan bara tomrumm?

//Daniel A
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Som jag ser det så skall det ju vara vattentätt. Ser inga fel i koden alls.

Du får göra som så att du skickar debug från BS2 till PC efter VARJE rad och kollar när och var den hoppar hur.

Du kan ju lägga så att den väntar i programmet på input från datorn så ser du ju exakt var den är. Faktist en mycket bra sak på BS2.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Ja de e det :) Får se om jag hinner göra det... (Är oerhört sressad :( )


Tack!
//Daniel A
bearing
Inlägg: 11677
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Kod: Markera allt

IF timer = 1 THEN main 
Det ska vara THEN GOTO MAIN tror jag.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Det behövs inte i PBasic. om man skriver "then main" så hoppar den till main, men om man skriver:
__

if..... then
goto main
else
goto index
enif
__

Så måste man ha "goto"

Edit: Jag funderar på reset pinnen, den hänger bara i luften men enligt parallax scheman så ska den det :(
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Klipp och klistra i programmet kan väl inte vara sådär jättesvårt om du ändå har det till en dator så är ju allt i princip redan klart.

Man skriver väl bara

Kod: Markera allt

DEBUG "Hej jag är på rad1"
DEBUGIN


Vips så måste varje rad bekräftas och du ser direkt var felet är.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Hur man använder debug in funktionen vet jag inte riktigt. Men jag har hållt på länge nu med att den ska blinka LED's o debuga m.m. Men jag förstår mig ändå inte på den. Börjar bli rädd nu för att det inte blir något robotsm för min del :cry: :verysad:
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Allt står ju i manualen rätt självklart beskrivet bäst är nog att läsa där och fråga om något är oklart.

DEBUGIN är iaf ett kommando för att skicka från PCn till BS under runtime så att säga.

Konkret förklaring:
DEBUG är från BS-->PC
DEBUGIN är tvärtom.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Jepp. Så mycket vet jag :) Jag funderar på att kasera BS2'an o ta en naken PIC, men då måste jag bygga om allting :cry: Men om den kommer hålla på så här hela tiden så är det ju ingen idé...
//Daniel A
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Om koden som skall till PIC är densamma som här ovan så borde det nog inte ta allt för lång tid. Men såklart är det bättre att få igång det som det är nu. Vad händer om du kör som jag säger i de två senaste inläggen?
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Jag tror att jag sattasar på en PIC istället.. BS2'an har varit konstig sen jag råkade kortsluta en IO pinne kom jag på, jag fattar inte varför men men... Jag vill inte riskera att den får att dampanfall mitt i tävlingen :(

Koden ovan är bara en liten liten bit av den slutliga koden som var tänkt att BS2'an skulle göra... Denna kodsnutten tar bara imot information om sensorerna. Så sen ska jag styra servon m.m. Borde inte vara så svart men jag har bara ca. 2 dagar kvar :eek2: Och dessutom är "moderkortet" gjort för en BS2'a..

//Daniel A
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Aj fasen, ja är den skadad då gäller ju inte alla regler precis. Fast debug borde fungera ändå och lokalisera felet med så kanske man kan byta i/o pinne eller nåt. Men men PIC skulle var från början :) Kostar "aningen" mindre om en brinner upp.

Lycka till.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Men jag förstår inte hur den kan ha blivit såhär av en bränd IO pinne... Skulle programet som ligger i PIC'en (som läser av basic instruktionerna från eepromet) ha ändrats på nått sätt så att den läser fel ibland??

//Daniel A
Skriv svar