PicBasic IGEN

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

PicBasic IGEN

Inlägg av tusse »

Nu ska jag ge er en knepig kod:

Kod: Markera allt

loop:	IF a=b Then

			High PORTA.0

		Else

			Low PORTA.0
			
GoTo loop	

Villkor a är uppfyllt.
Problemet är att vaje gång som programmet "High PORTA.0" så får jag ut en negativ puls, den vill jag inte ha.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Villkor a är uppfyllt.

Villkor "a=b" menar du väl ??

RMW problem kanske... Kanske inte...

Ännu ett på tok för "tunt" inlägg för att
det ska finnas någon rimlig anledning att
försöka svara vettigt... :roll:
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

Så klart "Villkor "a=b" menar du väl ?? "
Det är det säker" RMW problem kanske... Kanske inte..." vad nu det är?????
[/code]
H.O
Inlägg: 5919
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Inlägg av H.O »

Hej,
RMW = ReadModifyWrite men jag tror inte att det är problemet i det här fallet eftersom HIGH och LOW inte utför RMW på porten (vad jag vet). Däremot sätter HIGH och LOW automatiskt TRIS registret varje gång och det är kanske det som spökar för dig. Testa med:

Kod: Markera allt

TRISA.0 = 0	'Port A.0 as output

Loop:
  If A=B Then
    PortA.0 = 1
  Else
    PortA.0 = 0
  Endif
Goto Loop
/H.O
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

För att sätta en enskild bit på en port så *måste* man först *läsa* av porten.
Om det görs med separata läs/skriv instruktioner eller med BSF/BCF
spelar ingen roll.

Och det borde inte spela någon roll man använder "High" eller
den andra metoden, i "botten" måste man ändå göra i princip samma sak.

Om man t.ex inte har stängt av de analoga funktioner
på motsvarande pinnar så får man detta fenomen.

Men, det vet vi ingeting om, eftersom tusse inte tycker att
vi behöver veta t.ex hur PORTA är initierad (inkl ev analoga funktioner).
He he, inte ens vad det är för processor verkar vara intressant ! :-)

Frågan hade vunnit på 10 minuters extra job från frågeställaren.

Se även : http://elektronikforumet.com/forum/viewtopic.php?t=6057
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

Det var mina inlägg du menar i "Se även : http://elektronikforumet.com/forum/viewtopic.php?t=6057 "

Det löste sig, tack H.O
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Jag förstår inte hur du menar, "Hur starta en tråd" tråden är gammal.

> Det löste sig, tack H.O

Fungerarde den lösningen ?
I så fall var det väl inte en *negativ puls* du såg på pinnen, utan en kort
tid då pinnen gick i högimpendensläge, alltså blev ingång.
Om jag fattar rätt... :-)

Hur är "High" resp "Low" kommandona dokumenterade ?
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

Mina inlägg är också gamla i. "Hur starta en tråd"

Jag var bara ute efter om detta var ett känt problem i PicBasic därför ville jag ställa frågan så enkelt som möjligt, det kan vara vilken PIC-krets som hels som är programmeringsbar med PicBasic. Jag borde nog ha berättat att den analoga delen var avslagen. Det hade löst sig om ni frågat om ni undrar över något.

”> Det löste sig, tack H.O” trodde jag men?

Jag kan inte själv förklara den pulsen som dök upp för nu finns den inte mer, även om jag återgår till min första kod. Kanske beroende på att mitt ”Project Board” såg ut som ett skatbo
LCD, PIC, programmerare, pot, lysdioder PWM förstärkare och en otrolig massa kabel.
Din förklaring är nog trolig men det kan jag inte bekräfta.
Dokumentationen finns här http://www.melabs.com/resources/pbpmanual/
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK.
Enligt docs så sätter "High" även TRIS, men om TRIS redan är satt
korrekt så ska det inte medföra någon synlig händelse på själva pinnen.

Det borde inte finnas någon vettig anledning att *först* sätta TRIS till
"input" för att sedan sätta tillbaka den till "output" (vilket skulle kunna
ge pulsen på pinnen).

Dessutom avråder de från "High" om man vet att TRIS redan är satt rätt,
det blir snabbare kod med PORTA.0 = 1 (t.ex).

Det är inte omöjligt att *din* förklaring är den rimliga ("skatbo-problemet")... :-)
Skriv svar