Hallo allemaal

Aangezien ik alleen nog maar gebruik maakte van de pic16f648a heb ik nu een probleem.
Ik wil namelijk de pic16F877a gebruiken maar ik krijg deze niet aan de praat.

Ik gebruik proton IDE en de galva-wisp.

Het programmeren van de chip lukt maar zelfs een toggle uitvoeren op een uitgang lukt niet.

Ik heb een vermoeden dat het probleem bij de fuse instellingen zit.
Geen flauw idee hoe die instellingen moeten zijn, ik wil gebruik maken van het intern kristal (zijn er 2 of 3 geloof ik)

heb zelfs de manual van deze pic gedownload maar daar de fuse-instellingen uit afleiden is chinees voor mij
(zal waarschijnlijk wel een logica achter zitten)

Ik hoor het wel :)

ik wil gebruik maken van het intern kristal (zijn er 2 of 3 geloof ik)

Heel precies gezegd zijn het 0. Zonder een extern kristal, RC netwerk, resonator of andere externe klokpuls zal de chip niet willen werken.

IN proton hoef je enkel maar HS_osc in je config op te geven en verderop
je aantal Mhz kenbaar te maken. Dat laatste mag je even zelf opzoeken in de proton manual.

Mocht je een voorbeeld willen hebben hoe het zou moeten kunnen werken:


;============================================================================
; NICK RONGEN
; ELECTRONICKS.NL
; MASTER_TEST_PRINT.BAS
; 11 MAART 2009
; KONINGSLUST
;
; Klok bestaat uit 4 cijfers met elk 17 segmenten.
;
; Segmenten:
; 01 | 02 | 03
; 04 |    | 05
; 06 |    | 07
; 08 | 09 | 10
; 11 |    | 12
; 13 |    | 14
; 15 | 16 | 17
;
;
;          MCLR 01 o|-----------|o 40 RB7 ->> Programmeerapp
;segment17  RA0 02 o|           |o 39 RB6 ->> Programmeerapp
;segment16  RA1 03 o|           |o 38 RB5 Knop1
;segment15  RA2 04 o|     P     |o 37 RB4 Knop2
;segment14  RA3 05 o|     I     |o 36 RB3 Knop3
;segment13  RA4 06 o|     C     |o 35 RB2 Knop4
;segment12  RA5 07 o|     1     |o 34 RB1 Knop5
;segment11  RE0 08 o|     6     |o 33 RB0 INT vanaf de DS1307
;segment10  RE1 09 o|     F     |o 32 VDD
;segment09  RE2 10 o|     8     |o 31 VSS
;           VDD 11 o|     7     |o 30 RD7 Positie4
;           VSS 12 o|     7     |o 29 RD6 Positie3
;      OSC  OSC 13 o|           |o 28 RD5 Positie2
;      OSC  OSC 14 o|           |o 27 RD4 Positie1
;segment08  RC0 15 o|           |o 26 RC7 Dubbelepunt
;segment07  RC1 16 o|           |o 25 RC6 Zoemer
;segment06  RC2 17 o|           |o 24 RC5 segment01
;     I2C / SCL 18 o|           |o 23 I2C / SDA
;segment05  RD0 19 o|           |o 22 RD3 segment02
;segment04  RD1 20 o|-----------|o 21 RD2 segment03
;
; 31 I/O points
;USE RA4 with external Pull up.
Device 16F877A                    ;Een 16F877 type
Config HS_OSC, CP_OFF, WDT_OFF, PWRTE_ON, LVP_OFF, BODEN_OFF, DEBUG_OFF 
ALL_DIGITAL TRUE 
XTAL 20 

HSERIAL_BAUD = 9600        ' baud rate is 19200
HSERIAL_RCSTA = %10010000  ' laat de USART voortdurend ontvangen
HSERIAL_TXSTA = %00100000  ' zorgt dat de USART kan verzenden 
HSERIAL_CLEAR = On 

CLEAR
PORTA = 0
PORTB = 0
PORTD = 0
PORTE = 0

;        76543210
TRISA = %00000000
TRISB = %00000000

TRISD = %00000000
TRISE = %00000000

symbol SCL = PORTC.3
Symbol SDA = portc.4

Symbol Lamp1 = PORTD.0
Symbol Lamp2 = PORTD.1
Symbol Lamp3 = PORTD.2

Dim ontvangen as byte
dim send_byte as float

high lamp1
delayms 500
high lamp2
delayms 500
high lamp3
delayms 500 

send_byte = 55.1 

HRSOut "Test Programma Nick op 3 april 2010"

main:
While 1=1
Clear ontvangen            'zorg dat er niets in de variabele staat
ontvangen = HRSin, {2000, main}

If ontvangen = "n" then
   Clear ontvangen            'zorg dat er niets in de variabele staat
   ontvangen = HRSin, {2000, main}
   if ontvangen = "1" then toggle lamp1
   if ontvangen = "2" then toggle lamp2
   if ontvangen = "3" then toggle lamp3
   if ontvangen = "5" then HRSout send_byte
   
   if ontvangen = "m" then
      Clear ontvangen
      ontvangen = HRSin, {2000, main}
      If ontvangen = "d" then high Lamp2
      If ontvangen = "e" then low lamp2             
   end if 
   goto main
endif

Clear ontvangen            'zorg dat er niets in de variabele staat
ontvangen = HRSin, {2000, main}

wend

end

Dit is gewoon een voorbeeld van een PIC16F877A welke op deze manier een aantal lampen aan en uit zet over RS232. Maar de configuratie fuses kun je er wel uit halen.

Ik heb ook een kristal gebruikt. Naar mijn mening had deze geen interrn kristal maar dat weet ik niet meer 100% zeker.

ale vooruit, ik heb een kristal aangesloten op pen 13 en 14 en ook 2 condensators van 22pf geplaatst (zoals in cursus)

CONFIG WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF, HS_OSC
XTAL 4

maar nog steeds geen leven in dat beest
heb voor de zekerheid een andere pic genomen, ook noppes !

en je MCLR pin is 5V?

Heb je een scoop ?? Dan kun je kijken of er een klokpuls aanwezig is..

[Bericht gewijzigd door ElecM op (64%)]

mclr met weerstand bv 33k naar +


DEVICE 16F877A

ALL_DIGITAL TRUE
XTAL 4

PORTA = %00000000
PORTB = %00000000
PORTC = %00000000
PORTD = %00000000
PORTE = %000

TRISA = %00000000
TRISB = %00000000
TRISC = %00000000
TRISD = %00000000
TRISE = %000


test:
 

PORTC.0 = 1
DELAYMS 500
PORTC.0 = 0
DELAYMS 500
GOTO test
END



Ledje pinkt op poort C 0.

mclr met weerstand van 33k aan + verbonden...nog steeds niets

heb het testprogramma van reddevil eens gebruikt en...het HET WERK

nu nog even uitvissen wat IK fout gedaan heb (hum)

THANKS GUYS !!!!

Is toch die weerstand naar mclr geweest die ik niet geplaatst had, je moet maar weten dat die er moet staan.

mijn testprog werkt ook

nogmaals bedankt guys !

[Bericht gewijzigd door Henry S. op (29%)]

De setup ook eens goed doorkijken. De gebruikte MCLRE_OFF config bestaat helemaal niet bij een 877a.

Ik gebruik altijd de FuseConfigurator, simpel en je weet wat je instelt:
http://wiki.picbasic.org/index.php?n=Plugins.FuseConfigurator