
sjukt problem med 12F675
Har tyvär haft fullt upp och inte hunnit med den här tråden\problemet men nu har jag äntligen lite tid över 
Med aktiv menade jag att den är en etta i simulatorn...
Har läst igenom dom men fattar inte riktigt hur det hela går ihop, jag har till och med kopierat hela texten rakt av, här kommer hela programmet:
(funkar inte i simulator eller verkligheten...)
Kan nån förklara lite mer vad som händer och vad ansel och cmcon är och gör? Har läst en del trådar & datablad men hajjar inte riktigt förutom att ansel bestämmer om porten är digital eller analog, Jag tror att adcon0-1 hör ihop med "stänga av a/d" men vet inte riktigt hur jag ska göra...

Menar du mej? försöker skriva så mycket info det går, e glad för all hjälp det är mycket bättre här än i skolan...sodjan skrev: Att det ska vara så svårt...
Det hör till god netiquet att alltid tala om vad det var för problem.
Annars visar man att man skiter i de som har lagt ner tid för att hjälpa till...
Har den på för att slippa andvända tilläggskretsen till wispen. Behöver den bara till att programera.sodjan skrev:Du har "_MCLRE_ON" och alltså är pinnen "GP3/MCLR/Vpp" = **MCLR** och inget annat...
> GP3 är alltid in men varför är den aktiv?
Vad betyder "aktiv" ?
Sen bör du läsa databladet, *speciellt* de små grå rutorna på sidan
med beskrivningen av GPIO. Det finns en anledning att man lägger
*extra viktig* info i egna små rutor... Se även exempel 3-1.
Med aktiv menade jag att den är en etta i simulatorn...
Har läst igenom dom men fattar inte riktigt hur det hela går ihop, jag har till och med kopierat hela texten rakt av, här kommer hela programmet:
Kod: Markera allt
;Test Program för Pic12F675
;****************************************************************
List p=12f675
include <p12f675.inc>
__CONFIG _CP_OFF & _WDT_OFF & _xt_OSc & _MCLRE_ON
org 0x00
;****************************************************************
;Init av port exempel ur databladet
bcf status,rp0 ;Bank,0
clrf gpio ;init GPIO
movlw 07h ;Set GP<2:0> to
movwf cmcon ;digital IO
bsf status,rp0 ;Bank1
clrf ansel ;Digital I/O
movlw 0ch ;Set GP <3:2> as inputs
movwf trisio ;And set GP <5:4,1:0> as outputs
;Slut på exempel
bsf gpio,5
goto $
end
Jag antar att jag fått till det med att sätta dom till IO och digitala men inte stängt av dom? hur gör man det?newbadboy skrev:Jag kan i princip inget om asm. men du måste stänga av a/d och och komparatorn. sen måste du sätta sätta pinnarna som in/utgångar och sen måste du även sätta de till "digitala pinnar"
Kan nån förklara lite mer vad som händer och vad ansel och cmcon är och gör? Har läst en del trådar & datablad men hajjar inte riktigt förutom att ansel bestämmer om porten är digital eller analog, Jag tror att adcon0-1 hör ihop med "stänga av a/d" men vet inte riktigt hur jag ska göra...
> (funkar inte i simulator eller verkligheten...)
Vad exakt menar du med "funkar inte" ??
Vad händer ? Eller vad händer inte ?
> Jag tror att adcon0-1 hör ihop med "stänga av a/d" men vet inte riktigt hur jag ska göra...
Kolla beskrivningen av ADCON, den finns tillsammans med beskrivningen av ADC'n.
Där framgår vilken inställning som innebär att den är "off".
Dock tror jag att det räcker med att sätta pinnarna till digitala I/O (m.h.a ANSEL),
och att ADC'n är "off" per default.
> movlw 07h ;Set GP<2:0>......
Två saker...
Använd binära konstanter till register som har bitar med olika betydelse.
Använd gärna skrivsättet h'07', b'01010101' o.s.v så blir det tydligare.
(0ch ser för jäkligt ut...
)
Sen, använd BANKSEL istället för att fippla med RP0 direkt. Säkrare
och mindre risk för fel.
Med _XT_OSC kan du inte använda alla I/O pinnarna. Minns inte på rak arm
vilka, men kolla databladet.
Med _MCLRE_ON är det en I/O pinne son inte kan användas, notera dock
bara konsekvenserna av att köra med _MCLRE_OFF !!!!
Se : http://www.jescab.se/InternMCLR.html
Vad exakt menar du med "funkar inte" ??
Vad händer ? Eller vad händer inte ?
> Jag tror att adcon0-1 hör ihop med "stänga av a/d" men vet inte riktigt hur jag ska göra...
Kolla beskrivningen av ADCON, den finns tillsammans med beskrivningen av ADC'n.
Där framgår vilken inställning som innebär att den är "off".
Dock tror jag att det räcker med att sätta pinnarna till digitala I/O (m.h.a ANSEL),
och att ADC'n är "off" per default.
> movlw 07h ;Set GP<2:0>......
Två saker...
Använd binära konstanter till register som har bitar med olika betydelse.
Använd gärna skrivsättet h'07', b'01010101' o.s.v så blir det tydligare.
(0ch ser för jäkligt ut...

Sen, använd BANKSEL istället för att fippla med RP0 direkt. Säkrare
och mindre risk för fel.
Med _XT_OSC kan du inte använda alla I/O pinnarna. Minns inte på rak arm
vilka, men kolla databladet.
Med _MCLRE_ON är det en I/O pinne son inte kan användas, notera dock
bara konsekvenserna av att köra med _MCLRE_OFF !!!!
Se : http://www.jescab.se/InternMCLR.html
Nu har jag fått igång det men vet inte riktigt hur
Med att det inte funkar menade jag:
GPIO i Watch inte ändras visar inga 1:or alls.
Inga ben blir 5v.
Hittade Adcon0, har även gått igenom alla dom andra delarna och skrotat exemplet helt, resultatet blev iprincip samma sak fast det fungerar i simulatorn dvs gpio visar 1:or när den ska. (och lediga utben=5V)
Jag har provat sätta ; framför dom olika kodraderna för att se vad som var fel. Det enda som visar samma "bugg" som förut är när jag tar bort ANSEL raden. Dock funkar det fint om jag byter ut "movwf ansel" till bara "clrf ansel" Alltså likadant som förut? Det ända skillnaden jag ser är att jag ändrar i bankerna i omvänd ordning mot förut...
>Två saker...
Vet fick lära mej det i en tidigare tråd
Skrev bara av databladet.
>Med _XT_OSC kan du inte använda alla I/O pinnarna.
OPS
Blandade ihop GP5 med ben5 som är GP2.
XT är GP4&5.
(Testade med dom riktiga lediga utgångarna, samma fel)
>Se : http://www.jescab.se/InternMCLR.html
Läste den förut, väldigt bra info. Nu slipper jag svära så mycket.
Nu när det här funkar så har jag fått lite andra roliga fel
Jag andvänder bumblebee och xwisp2w.
Efter ett tag kunde jag inte programera pic:arna med bumblebee den klagade vid verifiering på "fuse bits" . Tar jag bort config raden så funkade det att skriva utan klagomål, men programmet funkade inte...
När jag körde samma hex fil(med config) i xwisp2w så fungerar det fint.
Vad är skillnaden och vad kan inte bumblebee skriva över?
Läste nånstans att man skulle spara dom sista fyra tecknen i en ny pic innan man programerade(JDM programerare) och lägga in dom i sin egen kod. Är det samma grej här?
Tack för hjälp o guidening
Edit: Kan man formatera eller fabriksåterställa en pic?

Med att det inte funkar menade jag:
GPIO i Watch inte ändras visar inga 1:or alls.
Inga ben blir 5v.
Hittade Adcon0, har även gått igenom alla dom andra delarna och skrotat exemplet helt, resultatet blev iprincip samma sak fast det fungerar i simulatorn dvs gpio visar 1:or när den ska. (och lediga utben=5V)
Jag har provat sätta ; framför dom olika kodraderna för att se vad som var fel. Det enda som visar samma "bugg" som förut är när jag tar bort ANSEL raden. Dock funkar det fint om jag byter ut "movwf ansel" till bara "clrf ansel" Alltså likadant som förut? Det ända skillnaden jag ser är att jag ändrar i bankerna i omvänd ordning mot förut...
Kod: Markera allt
;Test Program för Pic12F675
;****************************************************************
List p=12f675
include <p12f675.inc>
__CONFIG _CP_OFF & _WDT_OFF & _xt_OSc
org 0x00
;****************************************************************
banksel trisio ;Öppnar Bank 1
movlw b'00000000'
movwf ansel ;Alla portar är digitala(ans0-3=bit0-3)
movlw b'00000000'
movwf trisio ;Alla portar är utgångar utom gp3..
banksel gpio ;Öppnar Bank 0
clrf gpio ;init GPIO
bcf adcon0,adon ;A/D omvandlare avstängd.
movlw b'00000111'
movwf cmcon ;Comparator OFF
start
movlw b'00010111' ;Alla utgångar på.
movwf gpio
goto $
end
>Två saker...
Vet fick lära mej det i en tidigare tråd

Skrev bara av databladet.
>Med _XT_OSC kan du inte använda alla I/O pinnarna.
OPS

XT är GP4&5.
(Testade med dom riktiga lediga utgångarna, samma fel)
>Se : http://www.jescab.se/InternMCLR.html
Läste den förut, väldigt bra info. Nu slipper jag svära så mycket.
Nu när det här funkar så har jag fått lite andra roliga fel

Jag andvänder bumblebee och xwisp2w.
Efter ett tag kunde jag inte programera pic:arna med bumblebee den klagade vid verifiering på "fuse bits" . Tar jag bort config raden så funkade det att skriva utan klagomål, men programmet funkade inte...
När jag körde samma hex fil(med config) i xwisp2w så fungerar det fint.
Vad är skillnaden och vad kan inte bumblebee skriva över?
Läste nånstans att man skulle spara dom sista fyra tecknen i en ny pic innan man programerade(JDM programerare) och lägga in dom i sin egen kod. Är det samma grej här?
Tack för hjälp o guidening

Edit: Kan man formatera eller fabriksåterställa en pic?
Använd XWisp2 så slipper du fråga om andra verktyg...
> Kan man formatera eller fabriksåterställa en pic?
"Erase all".
D.v.s det som normalt görs först vid en om-programmering.
Vissa PICs med den äldre varianten av INTOSC (ibland kallad INTRC)
har dock ett kallibreringsvärde som försvinner vid en "erase all". Alla
normalt funtade programmerare tar hand om att läsa ut det och
programmera tillbaka det igen. Men kör man en separat erase, så kan
man tappa bort det.
Nyare modeller med den nya 1%-iga INTOSC har ett fabriksprogrammerat
fast kallibreringsvärde som inte går att radera (på något sätt).
Jämför t.ex 12F675 med den nyare 12F683...
> Dock funkar det fint om jag byter ut "movwf ansel" till bara "clrf ansel"
movlw b'00000000'
movwf ansel
är samma sak som
clrf ansel
så där ska det inte vara någon skillnad.
> Kan man formatera eller fabriksåterställa en pic?
"Erase all".
D.v.s det som normalt görs först vid en om-programmering.
Vissa PICs med den äldre varianten av INTOSC (ibland kallad INTRC)
har dock ett kallibreringsvärde som försvinner vid en "erase all". Alla
normalt funtade programmerare tar hand om att läsa ut det och
programmera tillbaka det igen. Men kör man en separat erase, så kan
man tappa bort det.
Nyare modeller med den nya 1%-iga INTOSC har ett fabriksprogrammerat
fast kallibreringsvärde som inte går att radera (på något sätt).
Jämför t.ex 12F675 med den nyare 12F683...
> Dock funkar det fint om jag byter ut "movwf ansel" till bara "clrf ansel"
movlw b'00000000'
movwf ansel
är samma sak som
clrf ansel
så där ska det inte vara någon skillnad.
ok men vad andvänds kalibreringsvärdet till?
>är samma sak som
>clrf ansel
>så där ska det inte vara någon skillnad.
jo ja vet men tänkte om det var nån bugg elr nåt...
Har fått ett nytt väldigt konstigt fel. Har gjort en evighets loop (blink,led)
efter Ungefär fyra rundor i loopen så värkar det som att pic:en resettar sej.
Ser man till att det hela tiden är 1 på ingången som startar blinkandet(GP1) så ser man att ungefär var 4:e blink så blinkar den lite saktare en gång, trycker man bara snabbt och släpper så blinkar den ca 4grr sen stoppar den.
Jag har provat med 2 olika pickar(12f675) 3 olika kristaller(2st4mhz 1st 20mhz) och intärn klocka. det blir samma fel på alla förutom 20mhz som buggar ut helt...(tänds bara om jag pilar på den).
Jag har även provat med 33kohm och 1kohm och inget motstånd till mclr.
har testat pull up & down kopplingar på ingången och med en riktigt digital nolla o etta från ett labbbord.
Har även testat med och utan extra kretsen(diod,konding & elektrolytkonding) i blink a led schemat från wisp sidan,vad exakt gör den?
Jag har 5v in från labb bordet/mojängen..
Här kommer koden: (har även testat olika portar)
EDIT:
>Nyare modeller med den nya 1%-iga INTOSC har ett fabriksprogrammerat
>fast kallibreringsvärde som inte går att radera (på något sätt).
>Jämför t.ex 12F675 med den nyare 12F683...
Har du några sånna inne? och gärna nån motsvarighet till 16f84 (lite större än 12f683)
>är samma sak som
>clrf ansel
>så där ska det inte vara någon skillnad.
jo ja vet men tänkte om det var nån bugg elr nåt...
Har fått ett nytt väldigt konstigt fel. Har gjort en evighets loop (blink,led)
efter Ungefär fyra rundor i loopen så värkar det som att pic:en resettar sej.
Ser man till att det hela tiden är 1 på ingången som startar blinkandet(GP1) så ser man att ungefär var 4:e blink så blinkar den lite saktare en gång, trycker man bara snabbt och släpper så blinkar den ca 4grr sen stoppar den.
Jag har provat med 2 olika pickar(12f675) 3 olika kristaller(2st4mhz 1st 20mhz) och intärn klocka. det blir samma fel på alla förutom 20mhz som buggar ut helt...(tänds bara om jag pilar på den).
Jag har även provat med 33kohm och 1kohm och inget motstånd till mclr.
har testat pull up & down kopplingar på ingången och med en riktigt digital nolla o etta från ett labbbord.
Har även testat med och utan extra kretsen(diod,konding & elektrolytkonding) i blink a led schemat från wisp sidan,vad exakt gör den?
Jag har 5v in från labb bordet/mojängen..
Här kommer koden: (har även testat olika portar)
Kod: Markera allt
;****************************************************************
List p=12f675
;****************************************************************
include <p12f675.inc>
__CONFIG _CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_OFF &_PWRTE_OFF & _WDT_ON & _xt_osc ; _INTRC_OSC_NOCLKOUT
tid1 equ 0x21
tid2 equ 0x22
;****************************************************************
org 0x00 ;Startar programmet på adress Hex 00
;****************************************************************
init
banksel trisio ;Öppnar Bank 1
movlw b'00000000'
movwf ansel ;Alla portar är digitala(ans0-3=bit0-3)
movlw b'00000010'
movwf trisio ;Alla portar är utgångar utom gp1 (& gp3..)
banksel gpio ;Öppnar Bank 0
clrf gpio ;init GPIO
bcf adcon0,adon ;A/D omvandlare avstängd.
movlw b'00000111'
movwf cmcon ;Comparator OFF
;****************************************************************
clrw
movwf tid1
movwf tid2
start
btfss gpio,1
goto start
blink
bsf gpio,2 ;tänd Led
call timer
bcf gpio,2 ;släck Led
call timer
goto blink
timer
movlw b'11111111'
movwf tid1
loop2
movlw b'11111111'
movwf tid2
loop1
decfsz tid2
goto loop1
decfsz tid1
goto loop2
return
end
>Nyare modeller med den nya 1%-iga INTOSC har ett fabriksprogrammerat
>fast kallibreringsvärde som inte går att radera (på något sätt).
>Jämför t.ex 12F675 med den nyare 12F683...
Har du några sånna inne? och gärna nån motsvarighet till 16f84 (lite större än 12f683)
> Har fått ett nytt väldigt konstigt fel....
_WDT_ON
> Har du några sånna inne? och gärna nån motsvarighet till 16f84 (lite större än 12f683)
Ja, se : http://www.jescab.se/Prod_PIC.html
_WDT_ON
> Har du några sånna inne? och gärna nån motsvarighet till 16f84 (lite större än 12f683)
Ja, se : http://www.jescab.se/Prod_PIC.html