Vad har jag missat ? Assembler

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
DragonOrb
Inlägg: 381
Blev medlem: 16 oktober 2003, 21:57:19
Ort: Flen

Vad har jag missat ? Assembler

Inlägg 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 ?
Användarvisningsbild
klasg
Inlägg: 187
Blev medlem: 29 juni 2005, 21:12:24

Inlägg 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
DragonOrb
Inlägg: 381
Blev medlem: 16 oktober 2003, 21:57:19
Ort: Flen

Inlägg av DragonOrb »

Det är interrupt sektorn.

Blir ingen skillnad när jag tar org 0000h heller.
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

MOVLW 07h ???
Ska det inte vara
MOVLW 0x07
???
Användarvisningsbild
klasg
Inlägg: 187
Blev medlem: 29 juni 2005, 21:12:24

Inlägg av klasg »

Spelar nog ingen roll Icecap.

DragonOrb:
Lättare om du alltid skriver på ett vis och inte blandar XXh, 0xXX (h'XX').
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Läs på i databladet om TRISA...

EDIT : Shit ! Jag missade TRISA i din kod. Ber om ursäkt !!
Senast redigerad av sodjan 24 januari 2006, 17:26:19, redigerad totalt 1 gång.
DragonOrb
Inlägg: 381
Blev medlem: 16 oktober 2003, 21:57:19
Ort: Flen

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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 ?
DragonOrb
Inlägg: 381
Blev medlem: 16 oktober 2003, 21:57:19
Ort: Flen

Inlägg av DragonOrb »

Nu ser koden ut såhär, fast det funkar ändå inte :S

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]
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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...
DragonOrb
Inlägg: 381
Blev medlem: 16 oktober 2003, 21:57:19
Ort: Flen

Inlägg av DragonOrb »

Jippi nu funkar det :D

Nu ska det kodas :D

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 :D
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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...
Skriv svar