Nybörjarfrågor.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Inlägg av Kaggen »

Har du inte glömt .inc i #include satsen?

Ska det inte vara:

Kod: Markera allt

#include <16f628a.inc>
istället för

Kod: Markera allt

#include <16f628a>
?

Då borde iaf felmeddelanden om symboler som saknas försvinna. Symbolerna är ju definierade i 16f628a.inc filen.

Sedan måste du dela in koden i riktiga kod-sektioner iomed att du använder länkning. Kolla section satsen i MPAsm hjälpfil.

Mats
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Error[105] ..... 11 : Cannot open file (Include File "16F628A.ASM" not found)

Du funderade inte på att kolla upp vad detta beror på ?

Filen heter P16F628A.INC och inget annat...
Men det är ju uppenbart om du letar lite i Microchip katalogen...

Resten är i stort sett bara föjdfel.

(Kaggen missade också "P" för övrigt... :-) )

> Jag har nu försökt sätta "rätt" värden i __config. Men jag vet inte vad allting betyder.

OK. Exakt vad är oklart ? Sidan 96 i databladet beskriver CONFIG bitarna
lite mer. Sedan finns respektive detaljbeskrivning på olika ställen
i databladet för osc, bor o.s.v.

> Jag har en 20mhtz kristall så därför satte jag _XT_OSC

Läs sidan 97 i databladet ! (Och byt sedan till _HS_OSC...)

> Finns det någon lista på alla instruktioner... ?

Hur menar du ? Utöver den som finns i varje datablad ?
För du menar inte att du försöker köra utan datablad ?

Den här koden byggs utan fel:

Kod: Markera allt

 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;                        ;
;   Program: My_first_program   ;
;   Date: 2006-04-12         ;
;   Processor: PIC16F628A      ;
;   Version: 1.0            ;
;                        ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

      list   p=16f628a
      #include   <P16F628A.INC>

      __config   _PWRTE_ON & _XT_OSC   ; Behöver mer info


      code    h'0000'

      banksel trisa
      clrf   TRISA

      banksel porta

START
      movlw   02h
      movwf   PORTA

slut
      goto slut
      
      END
Den ser inte exakt likadan ut, men gör samma sak.

Sannolikt menar du "movwf TRISA" (men jag bytte till en CLRF och sparade en instruktion...)

Du måste du stänga av de analoga pinnarna, se exempel 5-1 på sin 31 i databladet.
Jag har inte lagt till det men de två instruktioner som behövs finns i exempel 5-1...

Programmet att fortsätta efter sista instruktionen och komma tillbaka
till början, vilket nog inte är meningen.
Därav slut, goto slut raderna.
Användarvisningsbild
Kalf
Inlägg: 249
Blev medlem: 5 november 2005, 09:59:45

Inlägg av Kalf »

Om vi tar och konsentrerar oss på __config raden nu så jag fattar den ordentligt. Jag har läst i data bladet på de sidorna du sa. Om jag skriver som följande, är det något som är fel då eller är det något jag måste ha med mer?

Kod: Markera allt

list   p=16f628a
      #include   <P16F628A.INC>

      __config   _WDT_ON & _PWRTE_ON & _HS_OSC & _CP_OFF & _DATA_CP_OFF

Då har jag några frågor:

1. Vad gör Watchdog timer?
2. Vad är _BODEN och _BOREN
3. _DATA_CP betyder väll "data code protection" det behöver man väll inte? Samma sak med _CP, det behöver man väll inte ha, eller när skall man ha det?
4. Måste man skriva dem i någon speciell ordning?
Användarvisningsbild
Icecap
Inlägg: 26650
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Om man startar WatchDog Timern (WDT) måste man nolla den regeltbundet, om man inte gör det kommer den att skicka en reset till PIC'en.

Den används oftast för att fånga de tillfällen där programmet på grund av en störning har spårat ur.
Toett
Inlägg: 29
Blev medlem: 23 maj 2005, 22:26:06

Inlägg av Toett »

Kalf:

2) Jag gissar att det står för "Brown Out Die(?) Enabled" och "Brown Out Reset Enabled" och har att göra med hur processorn hanterar spänningfall och liknande.

3) Det stämmer att det står för code protection. Detta gör att om du försöker läsa från programminnet i PIC:en kommer den enbart returnera nollor.

4) Vanligtvis inte.
Användarvisningsbild
Icecap
Inlägg: 26650
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

BOD har jag för mig är "Brown Out Detect" alltså en förvarning på att nu smäller det snart men häng mig inte på det, jag vet mer säkerhet att det står i databladet.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

WDT : "Watchdog timer" = "Vakthund". Övervakar din applikation. Behövs absolut inte under tester (om det inte är just WDT som testas !)

BODEN : Strunta i den, det står ju att det för "Backwards compatability to 16F62X"

BOREN : "Brown-out Reset Enable" (Register 14-1, sid 96 i databladet)

"BOD" bytte alltså bara namn till "BOR" från 628 till 628A.

Icecap> "...jag vet mer säkerhet att det står i databladet."

Det står *ingenting* om BOD i databladet för 628A förrutom i "Appendix C: Device Migrations" ! Däremot om BOR...

BOR : Kap 14.4.4 sid 101 i databladet. Fråga gärna lite mer specifikt på vad som var oklart, så slipper vi upprepa från databladet i onödan.

Och du behöver bara sätta "protection" på din kod om du inte vill att någon annan ska kunna läsa ut den från processorn.
Det gör å andra sidan ingen skada heller, du kan alltid programmera om processorn ändå...

> __config _WDT_ON & _PWRTE_ON & _HS_OSC & _CP_OFF & _DATA_CP_OFF

Kör med _WDT_OFF så slipper du en del "konstiga" problem... :-)
Användarvisningsbild
Kalf
Inlägg: 249
Blev medlem: 5 november 2005, 09:59:45

Inlägg av Kalf »

Okay, tack nu fattar jag __config. Nu är det igentligen bara en sak till jag inte fattar. Det är nämligen hur man bestämmer vilka pins som skall vara in och vilka som skall vara ut.

Det jag igentligen vet är: Det finns två "sortes" I/O portar, PORTA och PORTB. Pinnarna heter RAx resp. RBx för PORTA/B.

Om vi tar och går igenom den biten kod som sodjan sa att den skulle fungera:

Kod: Markera allt

code    h'0000' ;Vad gör detta? Bestämmer man här att alla skall vara outport? 
               ;Isf. om man skulle sätta h'0001' skulle då detta betyda att 
               ;RA0 skulle vara input och resten outport?

      banksel trisa    ;Väljer man här den banken som TRISA ligger i?
      clrf   TRISA       ;Bestämmer man här att det är PORTAs portar som skall ställas in?

      banksel porta ;Eller gör man det här?


Sedan vad gör movlw och movlf?
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Inlägg av Kaggen »

Kalf: >Sedan vad gör movlw och movlf?

Ah! Herrn vill ha lite läsning inför påskhelgen?

http://ww1.microchip.com/downloads/en/D ... 31029a.pdf
http://ww1.microchip.com/downloads/en/D ... 40044D.pdf

Där står det mesta du behöver veta.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Det är nämligen hur man bestämmer vilka pins som skall vara in och vilka som skall vara ut.

Med all respekt, du måste faktiskt läsa rellevanta delar av (d.v.s HELA :-) )
databladet *först*. Gärna ett par gånger. Ta påskhelgen på dig.
Stäng av alla datorer och liknande och LÄS i lugn och ro.

När det gäller frågan ovan ska du läsa kap 5.1, 5.2 och 5.3.
(Självklart, eftersom kapitlet heter just "I/O PORTS"...)

> Det finns två "sortes" I/O portar, PORTA och PORTB.

Nej, det finns två I/O portar som heter PORTA och PORTB.
De är *inte* av olika "sort".

Sedan finns det vissa saker som en del pinnar kan "göra", och annat som
andra pinnar kan "göra", men de detaljerna finns, gissa var ? I databladet.

> Sedan vad gör movlw och movlf?

Ingen, fråga inte om saker som är SKIT-LÄTTA att slå upp i databladet !!

MOVLW : sidan 123.
MOVLF : finns inget som heter så, och jag skrev inte så. MOVWF kanske ?
Sidnummer får du kolla upp själv, sannolikt nära 123...

BANKSEL : Se manualen för MPASM, kapitel 4.7 sidan 52.
(Manualen finns på samma sida om MPLAB, men den borde redan
vara nerladdad...)

Du nämner nästan aldrig med ett ord att du ens har tittat i något
datablad !!?? Har du det eller har du det inte ??
Skriv svar