Sida 1 av 3
stimulus controller i mplab?
Postat: 26 mars 2009, 14:44:17
av PopUnoNkoK
Jag skulle behöva lite hjälp med MPLAB simulatiorn.
Jag försöker att få min PIC att reagera på en knapptryckning men det händer ingen ting.
När jag då skulle börja debugga i MPLAB sim så får jag inte riktigt kläm på stimulus fönstret.
FRÅGAN: Hur kan jag med musen klicka på en knapp i MPLAB så att tex PORTA, RA2 blir hög eller låg.
Jag har läst denna:
http://www.microchip.com/stellent/idcpl ... m=en022520
Men det händer inget med PORTA när jag tittar i File registers. Alltså Det blir ingen ändring på bitarna på PORTA.
Jag har tryckt build All och stegat mig fram till huvudloopen, hela TRISA är satt till Input (att alla bitar är satt till input är bara för debuggingen nu)
Övrig information:
Kod: Markera allt
main
btfss PORTA, 2 ; testa knappen
goto main
Hade alltså tänkt ha en kod där inget händer om man inte håller in knappen så den är hög.
MVH Peter F
Re: stimulus controller i mplab?
Postat: 26 mars 2009, 14:58:54
av sodjan
> hela TRISA är satt till Input
Och de analoga funktionerna ?
Re: stimulus controller i mplab?
Postat: 26 mars 2009, 15:03:16
av PopUnoNkoK
Ööhhh...
Nu känner jag att jag har någon stor lucka i mina väldigt begränsade kunskaper. Har ingen koll på analoga ingångar eller liknande... Det får jag försöka läsa på om.
MVH Peter F
Re: stimulus controller i mplab?
Postat: 26 mars 2009, 15:30:10
av sodjan
Ja, inte vet jag, du "mörkar" ju med vilken processor du använder.
Man annars så brukar det finnas en liten grå ruta med "Note:" i fet stil
i kapitlet om I/O PORTS. Svårt att missa om man inte slarvar, så klart...
Re: stimulus controller i mplab?
Postat: 27 mars 2009, 17:36:52
av PopUnoNkoK
Min mening var förstås inte att mörka något, ej heller att slarva eller verka slarvig.
Jag använder PIC16F628A.
Jag läste kapitel 8 i elmer 160 och började att följa den lektionen och implementera den i en kod jag hade. När jag stötte på problem (som jag bla beror på att de använder en äldre verion av MPLAB sim, sökvägen till stimulusfönstret i MPLAB stämmer inte med min version) så ställde jag frågan här.
I/O PORTS kapitlet i databladet till picen har jag läst och kan tyvärr inte säga att NOTE: rutan i PORTA sektionen hjälpte mig. Jag undrar dock om det kan vara att jag måste ställa in (Stänga av?) CMCON & VRCON? Jag vet dock inte hur jag ska ställa bitarna för att TRISA ska bli "vanliga" ingångar.
Antagligen är det en massa som jag har missat.
Jag märker att jag inte ställt så solklara frågor i detta inlägg så här kommer den.
Om jag vill ha PORTA till "vanliga" ingångar, alltså som sätter motsvarande bit hög om en strömbrytare är intryckt, alltså att kretsen är sluten. Vad är det för inställningar jag måste göra förutom att sätta rätt bit i TRISA till 1?
MVH Peter F
Re: stimulus controller i mplab?
Postat: 27 mars 2009, 17:56:23
av sodjan
Istället för att bara säga att det inte hjälpte, så kan du förklara
lite närmare *vad* som var oklart. Då går det lättare att
förtydliga. Annars så går det bara att säga igen att allt som
du behöver veta står där i på den sidan.
T.ex note 2 i den grå rutan :
-- "On Reset, the TRISA register is set to all inputs.
-- The digital inputs (RA<3:0>) are disabled..."
och i stycket direkt övenför den grå rutan :
-- "The operation of these pins are selected by control bits in
-- the CMCON (Comparator Control register) register and the
-- VRCON (Voltage Reference Control register) register."
Har du kollat på beskrivningen av CMCON alls ?
Och vidare också direkt ovanför den grå rutan :
-- "When selected as a comparator input, these pins will read as ‘0’s."
Det förklarar varför din kod inte fungerar, eller hur ?
Slutligen så finns det ju även ett kodexempel ("Example 5-1"),
det borde ge ledtrådar nog för att se vad som saknas.
Re: stimulus controller i mplab?
Postat: 29 mars 2009, 20:21:08
av PopUnoNkoK
Ber om ursäkt att det tagit tid att svara, jag fick problem med drivrutinerna till Usb -> Seriel kabeln igen. De fick visst för sig att avinstalera sig eller nåt. Har varit med om samma sak till min GPS. Jaja, det räckte då med en ominstalation.
Sodjan:
Iblan kan det vara svårt att uttrycka vad som är oklart när ganska mycket är oklart.
-- "On Reset, the TRISA register is set to all inputs.
-- The digital inputs (RA<3:0>) are disabled..."
Tex en sådan här sak, jag hade läst detta fram och tillbaka men trodde att jag i och med att jag satt portarna till utgångar hade Enablat dem.
Trots att jag inte lyckats specificera vad som var oklart lyckades du svara på många av mina frågor, tex angående att CMCON inställningarna var "obligatoriska".
Jag har testat som snabbast, det funkade fint i MPLAB men jag fick skumma problem när jag testade i "verkliga världen".
Dioden som inte skulle blinka när knappen inte var intryckt gjorde inte det till en början men började blinka lite till och från när jag var i närheten av strömbrytaren som om det var en rörelsesensor eller liknande.
Ska kolla imorgon med ny brytare och så kanske jag återkommer med någon följdfråga.
Tack än en gång Sodjan, ber om ursäkt om mina frågor ibland kanske är lite förhastade.
MVH Peter F
Re: stimulus controller i mplab?
Postat: 29 mars 2009, 20:34:29
av sodjan
Ingen fara, jag hade kunnat svara med en enda rad, men det hade inte
varit lika pedagogiskt...
Generellt gäller på *alla* PICs att om en pinne även har analoga funktioner
(ADC, komparatorer) så är pinnarna alltid analoga vid reset. Det finns
naturliga orsaker till det. Och man måste alltså alltid slå av de analoga
funktionerna om man ska använda pinnen "digitalt".
Och alla datablad försöker i alla fall att vara tydligt på den punkten..

Re: stimulus controller i mplab?
Postat: 29 mars 2009, 20:44:59
av sodjan
> men började blinka lite till och från när jag var i närheten
Några öppna ingånger kanske ?
Hur är det kopplat ?
Re: stimulus controller i mplab?
Postat: 30 mars 2009, 10:51:48
av PopUnoNkoK
Nu har jag bytt brytare men det kvastår problem.
Vi kan strunta i det jag skrev om att brytaren blev någon form av rörelsesensor. Måste ha haft nåt konstigt i min kod (inte öppna ingångar dock).
Nu har jag en ny brytare som i startup är i brytet läge. Det som händer nu är att båda Lysdioderna (RB0 & RB1) lysser när jag startar. När jag sedan slår på brytaren så lyser bara (RB1) dioden.
Den senare delen gör precis som jag vill, alltså när brytaren är på så ska (RB1) lysa, men varför i fridenstider snurrar den hela Huvudloopen när brytaren är avstängd?
Det fungerar som det ska i MPLAB. (jag fick stimuluscontrollern att fungera när jag använt koden från exemplet i databladet

)
KODEN:
Detta är kodstycket där jag sätter upp I/O pinnarna:
Kod: Markera allt
banksel TRISB ;
clrw ; Make all PORTB bits output
movwf TRISB ;
movlw B'00000010' ; Set PORTA bits
movwf TRISA ;
banksel PORTA ; Back to bank 0
MOVLW 0x07 ;Turn comparators off and
MOVWF CMCON ;enable pins
errorlevel +302
Och här är huvudloopen:
Kod: Markera allt
main
movlw B'00000010'
movwf PORTB
btfss PORTA,1
goto main
test movlw B'00000001'
movwf PORTB
btfsc PORTA,1
goto test
goto main
nop
end
Brytaren är kopplad från pinnen (RA1) till Jorden. (Jag hoppas verkligen att det är så det ska vara, pinsamt dålig koll på ellära). Men det Scheman jag hittat har (enligt mig) visat att det ska vara så. Bland annat sida1 i denna
http://www.gooligum.com.au/tutorials/ba ... se_A_4.pdf. Bra lektioner för övrigt.
Någon som har något förslag på varför processorn kör hela mainloopen och struntar i "btfss PORTA,1" instruktionen?
MVH Peter F
Re: stimulus controller i mplab?
Postat: 30 mars 2009, 11:39:35
av sodjan
> Brytaren är kopplad från pinnen (RA1) till Jorden.
Vad har du för pullup ?
Jag tror fortfarande att du har en öppen ingång (sannolikt RA1).
Hur är MCLR kopplat ?
Re: stimulus controller i mplab?
Postat: 30 mars 2009, 12:59:36
av PopUnoNkoK
Han har gjort det igen!
Tack Sodjan
Nu har jag kopplat ett motstånd så som denna bild visar:
Jag tänkte att en öppen ingång var en ingång som inte var kopplad till något. Vilket jag förstår kan ställa till bekymmer. Sedan tog det alldeles förlänge för mig att inse att en brytare som är "öppen" får precis den effekten, en ingång som inte är kopplad till något.
Motstådet sitter där och det fungerar precis som det ska.
Jag tror mig förstå varför det ska sitta där, vad jag däremot inte får rätsida på är begreppet pull-up och pull-down.
Som jag har förstått det så sitter motståndet där för att tilhandahålla pinnen med en svagström som visar att pinnen är låg, alltså så svag ström så att pinnen är låg men inte så låg så att den ingången är "öppen". Är dettta någorlunda rätt tänkt?
Men vad en pull-up eller pull-down är vet jag inte, är det synonymt med ett motstånd?
Tack igen sodjan.
MVH Peter F
PS. MCLR är alltså kopplad via ett 33k motstånd (En extern pull-up eller pull-down?). Ds
Re: stimulus controller i mplab?
Postat: 30 mars 2009, 13:03:46
av vfr
Som jag har förstått det så sitter motståndet där för att tilhandahålla pinnen med en svagström som visar att pinnen är låg
Njaa.
Hög i ditt fall. Det är just det som är skillnaden mellan pullup och pulldown. Pullup är motstånd till plus medan pulldown är motstånd till nolla. Näästan självklart, eller...

Re: stimulus controller i mplab?
Postat: 30 mars 2009, 13:09:19
av sodjan
> Jag tänkte att en öppen ingång var en ingång som inte var kopplad till något.
När ingen trycker på knappen så är den inte det.
> Som jag har förstått det så sitter motståndet där för att tilhandahålla pinnen med en svagström som visar att pinnen är låg,
Hög.
> alltså så svag ström så att pinnen är låg men inte så låg så att den ingången är "öppen".
Hög (igen).
> Men vad en pull-up eller pull-down är vet jag inte, är det synonymt med ett motstånd?
Det betyder bara "dra-hög" resp "dra-låg". Hur det är löst är mindre instressant,
men ofta är det löst med ett motstånd (men det måste inte vara det).
Re: stimulus controller i mplab?
Postat: 30 mars 2009, 13:21:06
av PopUnoNkoK
Ja ni har förstås rätt...
Jag testade även att koppla om så att brytaren gick från pinnen till plus och motståndet till Jorden och då betedde sig dioderna precis tvärt om.
Jag kan lova att det inte är första eller sista gången jag tolkar mina egna kopplingar fel.
Tack för snabba och korrekta svar.
Ps. Vfr: För mig är inget självklart än...

Ds
MVH Peter F