Sida 1 av 1
Vad har jag missat ? Assembler
Postat: 24 januari 2006, 00:12:32
av DragonOrb
Hej
Har suttit ett tag nu och har inte kommit vidare.
Picen är en PIC18F458 och den fungerar perfekt med Voti´s "Blink a led" exempel.
Kod: Markera allt
#include <P18F458.inc>
;-----------------
;Reset
org 0000h
goto main
;----------------
org 0008h
main:
;Stänger av A/D omvandlaren på porta
;Sätter alla portar i porta som utgångar
CLRF PORTA
CLRF LATA
MOVLW 07h
MOVWF ADCON1
MOVLW 0x00
MOVWF TRISA
;----------------------------------------------
;Börjar Programet
loop:
movlw 0x00 ;Sätter PortA till logiskt låg
movwf PORTA
goto loop
end
Så ser koden ut.
Problemet är att inga portar i PORTA blir låga.
Jag har 4.5 volt på utgångarna.
Vad kan jag ha missat ?
Postat: 24 januari 2006, 06:35:00
av klasg
Hej.
Nu har jag inte kikat på just den picen men har du kikat på, cmcon0 och ansel?
EDIT: Vad gör org 0008h där? Och du är i rätt bank?
/Klas
Postat: 24 januari 2006, 09:18:12
av DragonOrb
Det är interrupt sektorn.
Blir ingen skillnad när jag tar org 0000h heller.
Postat: 24 januari 2006, 09:29:02
av Icecap
MOVLW 07h ???
Ska det inte vara
MOVLW 0x07
???
Postat: 24 januari 2006, 09:36:27
av klasg
Spelar nog ingen roll Icecap.
DragonOrb:
Lättare om du alltid skriver på ett vis och inte blandar XXh, 0xXX (h'XX').
Postat: 24 januari 2006, 10:40:45
av sodjan
Läs på i databladet om TRISA...
EDIT : Shit ! Jag missade TRISA i din kod. Ber om ursäkt !!
Postat: 24 januari 2006, 16:37:47
av DragonOrb
Hittar inget hjälpande i databladet
När jag kollar på simuleringen i MPLAB så är
TRISA 00000000
dvs utgångar. Och portA är även låga.
Postat: 24 januari 2006, 17:34:11
av sodjan
Några andra saker...
> CLRF PORTA
> CLRF LATA
Båda behövs inte, de gör samma sak (när porten är utgång).
> movlw 0x00 ;Sätter PortA till logiskt låg
> movwf PORTA
Du har ju redan gjort CLRF PORTA tidigare, så detta är helt onödigt.
> MOVLW 0x00
> MOVWF TRISA
CLRF TRISA går lika bra (du har ju gjort så ovan).
Vad är kopplat till PORTA ?
Kan du kolla om processorn går alls ?
Var har du alla CONFIG inställningar ?
Oscillator ?
Avkoppling av spänningsmatning ?
Övrigt ?
Postat: 24 januari 2006, 18:15:05
av DragonOrb
Nu ser koden ut såhär, fast det funkar ändå inte
Kod: Markera allt
#include <P18F458.inc>
;-----------------
;Reset
org 0x00
goto main
;----------------
org 0008h
main:
;Stänger av A/D omvandlaren på porta
;Sätter alla portar i porta som utgångar
CLRF PORTA
MOVLW 0x07
MOVWF ADCON1
CLRF PORTA
goto main
end
Vad är kopplat till PORTA ?
Sitter lysdioder på RA0 till RA4
Katoden mot PIC, anoden till ett 330ohm´s motstånd som går till 5 volt.
Kan du kolla om processorn går alls ?
Jupp , den har stått o blinkat med voti´s "Blink A led" exempel i ca 1 timme nu.
Var har du alla CONFIG inställningar ?
I MPLAB gick jag till configuration bits. Där ställde jag in XT på kristall , Watchdog timer off , Power Up Timer off.
Oscillator ?
20mhz kristall med 22pF kodningar mot jord.
Avkoppling av spänningsmatning ?
22uF mellan 5+volt och jord
0.1uF mellan 5+volt och jord
Övrigt ?
33k motstånd mellan MCRL och +5volt
Programeraren (wisp628) kopplad egenligt din sida.
Funkar perfekt att programera cpun.[/code]
Postat: 24 januari 2006, 18:57:16
av sodjan
Nej, jag sa inte att det skulle fungera med ändringarna i koden,
koden var helt OK som den var, men inte så "snygg"...
> Jupp , den har stått o blinkat med voti´s "Blink A led" exempel i ca 1 timme nu.
Vilken hex fil ?
> I MPLAB gick jag till configuration bits. Där ställde jag in XT på kristall , Watchdog timer off , Power Up Timer off.
Gör inte det. Lägg det i koden, så slipper du frågor om det i framtiden.
Se slutet av INC filen för syntax och parametrar.
> 20mhz
20 Mhz = HS.
> Watchdog timer off ,...
OK.
> Power Up Timer off....
Kan lika gärna vara on, blir lite stabilare start om spänningen svajar
lite i början.
Fixa configen (speciellt XT/HS), så får vi se...
Postat: 24 januari 2006, 19:24:13
av DragonOrb
Jippi nu funkar det
Nu ska det kodas
Såhär ser configen ut nu.
Kod: Markera allt
list p=18F458
#include <P18F458.inc>
CONFIG OSCS = OFF
CONFIG OSC = HS
CONFIG WDT = OFF
CONFIG PWRT = ON
Tack för hjälpen

Postat: 24 januari 2006, 19:57:35
av sodjan
OK, det var säkert XT -> HS som fixade det.
Tänk vad tid för alla som hade sparats om du hade
fixat ett ordentligt första inlägg utan att utelämna en massa
kritiska uppgifter, i det här fallet kristall och config...
En sista kommentar, jag brukar alltid ange *ALLA* config
inställningar, det är inte alltid säkert att det default som
anges i databladet stämmer, och dessutom tvingar du
den som ska läsa koden att slå upp dom i databladet för
att se hur det är satt, eller att du slipper att få frågor om det...