- Drivers
- ORbit16™
- PICMicro
- Risorse
- Servizi
- Software
- Add-In Excel 2003 per la conversione tra basi numeriche
- AquaGauge Control for .NET
- Conversione coordinate (+ sorgente)
- Custom Char HD44780
- Digital Caliper Readout
- Gargaroz
- IcoDrive
- JoyTester
- Macro Excel 2003 per formattare le tabelle con colorazione alternata delle righe pari e dispari
- Messenger Resources Extractor
- Phrase4Date MySQL Generator
- PICTimer
- RFID Reader
- Ripristina Mostra Desktop
- Rotopad
- Serial Tester
- SincroFF
- Info
Questo sito e tutto il suo contenuto sono distribuiti sotto la licenza Creative Commons Attribuzione - Non Commerciale - Non opere derivate 2.5 Italia e con le condizioni d'uso definite nel disclaimer: siete pregati di leggere entrambi questi documenti prima di usufruire dei contenuti di questo sito. Per alcuni contenuti è necessaria una registrazione gratuita: non è necessario pagare e non è necessario accumulare punteggi per accedere agli articoli e scaricare i sorgenti. Basta solo essere onesti. Se volete che questo sito continui a rimanere attivo, a contribuire ogni giorno alla diffusione della cultura libera, non copiate il materiale per ripubblicarlo in altri luoghi : chi fa questo è solo un miserabile e un perdente. Se volete partecipare su settorezero e rendere le vostre idee, i vostri progetti, fruibili da tutti senza limitazioni, come dovrebbe essere in un paese civile e acculturato, potete farlo tranquillamente.
Delay
Librerie PIC12 e PIC16 » Delay
Librerie a precisione migliorata distribuite da Microchipc.com.
Prerequisiti
Quarzo/oscillatore da 4MHz, 8MHz, 10MHz, 16MHz, 20MHz o 32MHz. Frequenze diverse da queste non sono supportate
Utilizzo
Definire nel main la frequenza del quarzo/oscillatore espressa in Hertz definendo PIC_CLK:
#define PIC_CLK 4000000 // quarzo a 4MHzIncludere delay.c nel main dopo il define del quarzo:
#include "delay.c"Funzioni disponibili
DelayUs(x); // esegue un ritardo da x μSec (x da 0 a 255) DelayMs(x); // esegue un ritardo da x mSec (x da 0 a 255) DelayBigMs(x); // esegue un ritardo da x mSec (x da 0 a 65535) DelayS(x); // esegue un ritardo da x Sec (x da 0 a 255)
Download
- Ancora nessun trackback
I contenuti di settorezero.com sono distribuiti sotto una licenza Creative Commons Attribuzione-Non Commerciale-Non Opere derivate 2.5 Italia a cui vanno aggiunte le condizioni d'uso definite nel disclaimer.
settorezero.com e tutti i suoi contenuti sono tutelati dalla legge sul diritto d'autore per cui i trasgressori sono perseguibili a norma di legge.

Il tema di questo sito è basato sul tema Fusion per wordpress, realizzato originariamente da digitalnature e fa uso del plugin Wassup per il computo delle statistiche. Per contattare l'autore siete pregati di utilizzare la sezione contatti.
Per essere aggiornato con tutte le novità di settorezero.com seguici anche anche su Facebook Twitter Tumblr Blogspot Youtube.







#1 da salvatore salzano il 21 dicembre 2010
Ciao, ho visto che utilizzi la nuova Delay. Siccome sto facendo delle esperienze con SDCC (vorrei poter divulgare l’utilizzo di questo compilatore e sto cercando di adattare tutte le differenze che incontro) ho visto la chiamata a CLRWDT() . Non so dove trovarla, ma credo che dovrebbe semplicemente resettare il WDT, quindi potrebbe andare bene se metto il Watchdog Timer Enable bit (WDTEN) = 0? Ti ringrazio per quanto stai facendo, è un valido contributo.
#2 da Giovanni Bernardo il 21 dicembre 2010
Disabilitare il watchdog timer (WDTEN=0) e resettarlo sono due cose ben diverse!! Quella che hai incontrato è una semplice macro definita in pic.h a riga 283:
#define CLRWDT() asm(“clrwdt”)
Ovviamente questo fa parte dell’Hitec-C, per l’SDCC non ti so dire, ma penso che pure li ci sia un’istruzione del genere… se non c’è… basta che richiami il comando assembler clrwdt con le modalità di SDCC.
Quel comando non fa nient’altro che eseguire l’istruzione assembler che azzera il counter del watchdog. Il watchdog timer è un contatore che, quando viene abilitato (con WDTEN), incrementa da solo e quando giunge alla fine resetta il pic. Per non far resettare il pic ogni tanto dobbiamo azzerare tale contatore con la funzione CLRWDT… A cosa serve? Se abbiamo programmato male potrebbe accadere che il programma entri in stallo (un ciclo infinito ad esempio). In quel caso, non essendoci nessuna istruzione che resetta il watchdog, il pic si resetta e il programma puo riprendere. L’istruzione per azzerare il timer, quindi, va messa in punti strategici ed ha quindi una funzione di sicurezza.
L’utilizzo di SDCC è interessante. In molti lo usano e a molti ho chiesto di scriverci su un paio di righe, giusto per capire come impostarlo e se si puo integrare in mplab o in altro IDE. Se hai qualcosa di pronto (un semplice tutorial) o lo vuoi scrivere, lo pubblico qui e fai felici in tanti sicuramente.
#3 da peppino53 il 20 febbraio 2012
salve,
non ho capito l’utilizzo del wathdog che vedo sia nei pic che nei st6.
è una sicurezza che si usa in fase di stesura del programma o per eventuali problemi hardware?
grazie per l’attenzione
cordiali saluti
peppino53
#4 da Giovanni Bernardo il 21 febbraio 2012
Il watchdog timer è un timer che resetta la CPU. Devi azzerarlo periodicamente per fare in modo che la CPU non si resetti. A cosa serve? Ad evitare che la CPU si blocchi, vuoi per un guasto, vuoi perchè chi l’ha programmata non sa programmare. In pratica: setti il watchdog timer, ogni tanto nel tuo programma devi mettere qualche istruzione che lo resetti per fare in modo che non finisca il suo conteggio causando il reset. Se il tuo programma si blocca, il watchdog timer continua a camminare perchè è indipendente. Essendo il programma bloccato, il wdt arriva alla fine del suo conteggio perchè nessuna istruzione lo resetta, cosi si resetta la CPU. Generalmente il wdt si utilizza in applicazioni con un certo livello di sicurezza ma è ovvio che si deve fare in modo, sia lato software che hardware, che il wdt non debba mai entrare in azione altrimenti vuol dire che il circuito è progettato male.