Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 15 gennaio 09, 19:08   #1 (permalink)  Top
User
 
L'avatar di Cessna 172SP
 
Data registr.: 03-11-2008
Residenza: Sestri Levante-Genova
Messaggi: 74
Programmare pic12c508

Ciao.
Da tempo mi frulla per la testa l'idea di programmare i Pic...
Volevo fare un lampeggiatore a led.
L'assembler lo so usare decentemente e poi ci sono i datasheet ma ho ancora dei dubbi...
La resistenza di Pull-Up del pin mclr da quanti ohm deve essere?che resistenza deve essere?
Per l'oscillatore:lo hanno interno da 4mhz i 12c508 o no...sul datasheet non ho capito come usarlo...

sto lavorando a uno schemino...e alla relativa programmazione.


Grazie anticipatamente
__________________
Federico Violato
Cessna 172SP non è collegato   Rispondi citando
Vecchio 15 gennaio 09, 20:12   #2 (permalink)  Top
User
 
L'avatar di marchino65
 
Data registr.: 09-09-2005
Residenza: Scandicci (FI)
Messaggi: 4.216
Citazione:
Originalmente inviato da Cessna 172SP Visualizza messaggio
Ciao.
Da tempo mi frulla per la testa l'idea di programmare i Pic...
Volevo fare un lampeggiatore a led.
L'assembler lo so usare decentemente e poi ci sono i datasheet ma ho ancora dei dubbi...
La resistenza di Pull-Up del pin mclr da quanti ohm deve essere?che resistenza deve essere?
Per l'oscillatore:lo hanno interno da 4mhz i 12c508 o no...sul datasheet non ho capito come usarlo...

sto lavorando a uno schemino...e alla relativa programmazione.


Grazie anticipatamente
Ciao,
visto che inizi a programmare i Pic, ti consiglio di cominciare quelli con la serie F tipo 12F o 16F in quanto all'interno usano la Flash e sono riprogrammabili più volte.

Saluti
marchino65 non è collegato   Rispondi citando
Vecchio 15 gennaio 09, 20:39   #3 (permalink)  Top
User
 
L'avatar di Cessna 172SP
 
Data registr.: 03-11-2008
Residenza: Sestri Levante-Genova
Messaggi: 74
Grazie

Citazione:
Originalmente inviato da marchino65 Visualizza messaggio
Ciao,
visto che inizi a programmare i Pic, ti consiglio di cominciare quelli con la serie F tipo 12F o 16F in quanto all'interno usano la Flash e sono riprogrammabili più volte.

Saluti
Ok,grazie....di quelli conosco bene il 16f84a.
Ma fino a quante volte posso riprogrammarli???
__________________
Federico Violato
Cessna 172SP non è collegato   Rispondi citando
Vecchio 15 gennaio 09, 20:48   #4 (permalink)  Top
User
 
L'avatar di marchino65
 
Data registr.: 09-09-2005
Residenza: Scandicci (FI)
Messaggi: 4.216
Citazione:
Originalmente inviato da Cessna 172SP Visualizza messaggio
Ok,grazie....di quelli conosco bene il 16f84a.
Ma fino a quante volte posso riprogrammarli???
Ciao,
di preciso non mi ricordo, ma intorno alle migliaia.
Se vuoi usare un'alternativa alle pic 12c508, ci sono le 12f675 sempre 8 pin ma riprogrammabili.

Saluti
marchino65 non è collegato   Rispondi citando
Vecchio 15 gennaio 09, 21:23   #5 (permalink)  Top
User
 
L'avatar di marchino65
 
Data registr.: 09-09-2005
Residenza: Scandicci (FI)
Messaggi: 4.216
Ciao,
sotto il codice in assembler per accendere un led, ma non mi chiedere spiegazioni, perchè programmo solo in Picbasic pro.

;************************************************* ***********************
; *
; Filename: BA_L1-Turn_on_LED.asm *
; Date: 7/9/07 *
; File Version: 1.0 *
; *
; Author: David Meiklejohn *
; Company: Gooligum Electronics *
; *
;************************************************* ***********************
; *
; Architecture: Baseline PIC *
; Processor: 12C508/509 *
; *
;************************************************* ***********************
; *
; Files required: none *
; *
;************************************************* ***********************
; *
; Description: Lesson 1, exercise 1 *
; *
; Turns on LED. LED remains on until power is removed. *
; *
;************************************************* ***********************
; *
; Pin assignments: *
; GP1 - indicator LED *
; *
;************************************************* ***********************

list p=12C509
#include <p12C509.inc>

; ext reset, no code protect, no watchdog, 4Mhz int clock
__CONFIG _MCLRE_ON & _CP_OFF & _WDT_OFF & _IntRC_OSC


;************************************************* *********************
RESET CODE 0x3FF ; processor reset vector
res 1 ; holds movlw with factory RC cal value

MAIN CODE 0x000 ; effective reset vector
movwf OSCCAL ; update OSCCAL with factory cal value

;***** Initialisation
start
movlw b'111101' ; configure GP1 (only) as an output
tris GPIO
movlw b'000010' ; set GP1 high
movwf GPIO

goto $ ; loop forever


END

Saluti
marchino65 non è collegato   Rispondi citando
Vecchio 15 gennaio 09, 23:25   #6 (permalink)  Top
User
 
L'avatar di cl004
 
Data registr.: 11-09-2007
Residenza: Firenze
Messaggi: 484
Invia un messaggio via MSN a cl004
La Res puoi anche ometterla, serve principalmente se vuoi mettere un pulsante di reset che porti a massa il pin MCLR
__________________

________________________________
ProtoMeter 2 By Protomax: 32bit ARM core + ZigBee Radio all in one Telemetry system
cl004 non è collegato   Rispondi citando
Vecchio 16 gennaio 09, 15:44   #7 (permalink)  Top
User
 
L'avatar di Cessna 172SP
 
Data registr.: 03-11-2008
Residenza: Sestri Levante-Genova
Messaggi: 74
Ecco le mie prime righe:se il led è acceso lo spegne e viceversa..poi ci vorrà un delay..anche se +o- non so a che velocità lampeggia senza delay
********************************
PROCESSOR 16F84A
RADIX DEC
INCLUDE "P16F84A.INC"

__CONFIG 0x3FF1

LED EQU 0

ORG 0x0C

Count RES 2 "bit riservati per il delay che sto progettando"

ORG 0x00

bsf STATUS,RP0

movlw B'00011111'
movwf TRISA

movlw B'11111110'
movwf TRISB

bcf STATUS,RP0

bsf PORTB,LED

MainLoop

btfsc PORTB,LED
goto SetToZero

bsf PORTB,LED
goto MainLoop

SetToZero

bcf PORTB,LED
goto MainLoop

(spazio per il delay)

END

**************************

Dite che funzionerà?cmq i 2 bit riservati a count sono per il delay su cui sto lavorando..ovvero far compiere operazioni inutili al pic del tipo
*************
Delay
clrf Count
clrf Count+1

DelayLoop

decfsz Count,1
goto DelayLoop

decfsz Count+1,1
goto DelayLoop

return

**************
Dite che funziona così........o come al solito non ho capito niente???
__________________
Federico Violato
Cessna 172SP non è collegato   Rispondi citando
Vecchio 16 gennaio 09, 17:55   #8 (permalink)  Top
User
 
L'avatar di Cessna 172SP
 
Data registr.: 03-11-2008
Residenza: Sestri Levante-Genova
Messaggi: 74
Help

Ciao a tt
Come si calcola il valore delle resistenza..ovvero se ho un led da 3 v e lo voglio usare con la 12 volt come faccio a sapere il valore della resistenza da usare?
__________________
Federico Violato
Cessna 172SP non è collegato   Rispondi citando
Vecchio 16 gennaio 09, 18:23   #9 (permalink)  Top
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
Citazione:
Originalmente inviato da Cessna 172SP Visualizza messaggio
Dite che funziona così........o come al solito non ho capito niente???
Facile che funzioni, ma se devi imparare impara bene!
Per i ritardi non si usa quasi mai (a meno di ritardi veramente molto piccoli) mettere in loop il processore e fargli 'perdere tempo', ma si usano i timer, che danno anche tanti altri vantaggi.
Se non ti serve (come primo esercizio) precisione setti il prescaler del Timer0 a 4 e avrai un overflow del timer ogni 1,024 millisecondi.
Aspetti che il bit T0IF vada a 1, lo azzeri e quando torna a 1 sai che è passato 1,024 ms e il tuo ciclo diventa più o meno così:

Loop:
- testa T0IF fino a quando lo trova 1
- azzera T0IF
- decrementa il contatore di ritardo e controlla se è 0
se 0: ripristina il valore del contatore
accende ( o spegne) il led
salta a Loop
se >0: salta a loop

questo ti da ritardi di 256 ms al massimo, sufficienti per vedere il lampeggio del led. Per aumentare il ritardo puoi usare due contatori per il ritardo.

Per accendere o spegnere il led puoi semplicemente fare questo:

movlw 1 (nel tuo caso 1 perchè LED è sul bit 0)
xorwf PORTB,f

Buon divertimento!

Michele
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp non è collegato   Rispondi citando
Vecchio 16 gennaio 09, 19:05   #10 (permalink)  Top
User
 
L'avatar di Cessna 172SP
 
Data registr.: 03-11-2008
Residenza: Sestri Levante-Genova
Messaggi: 74
Citazione:
Originalmente inviato da MSchiepp Visualizza messaggio
Facile che funzioni, ma se devi imparare impara bene!
Per i ritardi non si usa quasi mai (a meno di ritardi veramente molto piccoli) mettere in loop il processore e fargli 'perdere tempo', ma si usano i timer, che danno anche tanti altri vantaggi.
Se non ti serve (come primo esercizio) precisione setti il prescaler del Timer0 a 4 e avrai un overflow del timer ogni 1,024 millisecondi.
Aspetti che il bit T0IF vada a 1, lo azzeri e quando torna a 1 sai che è passato 1,024 ms e il tuo ciclo diventa più o meno così:

Loop:
- testa T0IF fino a quando lo trova 1
- azzera T0IF
- decrementa il contatore di ritardo e controlla se è 0
se 0: ripristina il valore del contatore
accende ( o spegne) il led
salta a Loop
se >0: salta a loop

questo ti da ritardi di 256 ms al massimo, sufficienti per vedere il lampeggio del led. Per aumentare il ritardo puoi usare due contatori per il ritardo.

Per accendere o spegnere il led puoi semplicemente fare questo:

movlw 1 (nel tuo caso 1 perchè LED è sul bit 0)
xorwf PORTB,f

Buon divertimento!

Michele
Grazie..ora trasformo la tua spiegazione in Assembler..o almeno ci provo..
__________________
Federico Violato
Cessna 172SP non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
programmare cc45A PER 3D?? fedor60 Elimodellismo Acrobazia 6 18 aprile 08 21:17
Programmare regolatore KAOS® Elimodellismo Motore Elettrico 5 29 febbraio 08 22:10
programmare il regolatore andrea72 Elimodellismo Motore Elettrico 1 26 luglio 07 13:24
Mi aiutate a programmare ? sbronzolo Radiocomandi 4 26 novembre 06 14:25



Tutti gli orari sono GMT +2. Adesso sono le 12:45.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002