CCS Compiler und Sprutbrenner
Mittwoch, 23. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  PIC Mikrocontroller Allgemein  |  CCS Compiler und Sprutbrenner « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: CCS Compiler und Sprutbrenner  (Gelesen 1681 mal)
 
flying_yeti
Newbie
*
Offline Offline

Beiträge: 3


Profil anzeigen
« am: Juli 21, 2011, 15:13:09 »

Hallo Zusammen,
ich möchte den 16f876a programmieren. Im CCS Compiler hab ich den im pic wizard angegeben und habe einen einfach Code erzeugt der einzelne PINS auf high legt. Danach die hex Datei erstellt und lade diese dann mit dem SPrut brenner 8 auf den Pic und nichts tut sich Lächelnd
hat jemand einen Tip wo ich am besten anfange zu suchen.
Oder hat vielleicht jemand eine fertige hex Datei zum ausprobieren?

viel Dank!

hier das prog:
Code:
#include <16F876A.h>
#USE STANDARD_IO (A)
#USE STANDARD_IO (B)
#USE STANDARD_IO (C)
void main()
{

   setup_adc_ports(NO_ANALOGS);
  
    output_high (PIN_B0);
     output_high (PIN_A1);
      output_high (PIN_C3);
    
}

Edit: Bitte Code-Tags verwenden. Edson
« Letzte Änderung: Juli 25, 2011, 09:22:05 von Edson » Gespeichert
Coltfisch
Sr. Member
****
Offline Offline

Beiträge: 496



Profil anzeigen WWW
« Antworten #1 am: Juli 21, 2011, 16:40:29 »


Hallo,

das ist wirklich ein sehr sparsames Programm.
Erstmal würde ich Dir raten, als letzten Befehl in der main()-Funktion eine While-Schleife einzubauen, damit der PIC nicht kontinuierlich resettet bzw. in den Sleepmodus versetzt wird:

Code:
while(1);

Zitat
Danach die hex Datei erstellt und lade diese dann mit dem SPrut brenner 8 auf den Pic und nichts tut sich L&#228;chelnd
Je nachdem, wie Deine Schaltung aussieht, ist das vielleicht gar nicht so ungewöhnlich?

Zitat
hat jemand einen Tip wo ich am besten anfange zu suchen.
Wie ist Deine Taktversorgung aufgebaut?
Wo sind die entsprechenden fuses im Programm?
Spannungsversorgung gecheckt?
Taktquelle gecheckt?
Alle Versorgungsspannungspins sowie Massepins angeschlossen?
Reset-Pin korrekt beschaltet?
.
.
.

gruß
daniel
Gespeichert
flying_yeti
Newbie
*
Offline Offline

Beiträge: 3


Profil anzeigen
« Antworten #2 am: Juli 21, 2011, 23:09:14 »

Danke dir Daniel,

es geht noch um keine Schaltung. Wollte nur mal ein bisschen rumtesten ob die PINs auf high gehen oder nicht etc. Später möchte ich mit dem PIC einen Regler realisieren.

Jetzt zum Problem, hatte noch keine Zeit das zu testen aber ich hab keine externe taktquelle und so wie es aussieht hat der PIC keine interne. Hab bis jetzt die FUSE RC genommen, aber es müsste für die interne Taktq. Fuse INTRC sein.

Sobald es klappt sag ich nochmal Bescheid :-)
Gespeichert
Stephan
Jr. Member
**
Offline Offline

Beiträge: 88


Profil anzeigen
« Antworten #3 am: Juli 22, 2011, 19:40:13 »

> aber ich hab keine externe taktquelle

Der 16F876 bzw 16F876A hat tatsächlich keinen internen Oszillator. D.h. er braucht einen ext. Oszillator, oder Quarz oder resonator oder eine RC-Kombi.

Mein Rat wäre: vergiss das uralt-Teil und nimm einen 16F886, der ist schneller, hat auch internen Oszillator (1% Genaugkeit) und kann viel mehr. Und wesentlich billiger ist er auch noch.

Sehr interessant sind auch die 16F182x und 16F193x, das ist die neueste Generation der 16F-Serie. Da muss man sich aber schon etwas hineinfuchsen, das sind wahre Feature-Monster.
Gespeichert
flying_yeti
Newbie
*
Offline Offline

Beiträge: 3


Profil anzeigen
« Antworten #4 am: Juli 24, 2011, 17:46:33 »

Hallo Zusammen,

waren tatsächlich Fehler wie MCLR auf NUll und keine Taktquelle. Hab jetzt eine externe mit 4 Mhz.
Hab allerdings noch Probleme mit meinem Prog.

Ich möchte drei der AD Eingänge benutzen und einen Wert wieder als PWM ausgeben. Solange ich nur channel2 benutze klappt das auch, soweit ich den channel wechsel kann ich zwar den zweiten channel messen aber mein wert wird nicht mehr als PWM ausgegeben.


Hier mein Testprogramm:
Code:
#include "D:\PICC\kugel\next\next.h"
#use delay(oscillator=4000000)
#use fast_io (B)


void main()
{  

/*#use standard_io(C)
  #use fast_io (C)
   SET_TRIS_c(0x3F);  
   */
  
long int AO,channel2, channel3,channel5;
long int A3;
long int A5;

 SET_TRIS_b(0x00);

   setup_adc_ports(ALL_ANALOG);
   setup_adc(ADC_CLOCK_DIV_8);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DIV_BY_16,255,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
  
   setup_ccp1(CCP_PWM);
  
output_low(PIN_C6);
output_low(PIN_C7);
output_low(PIN_B6);
output_low(PIN_B5);
output_low(PIN_B4);
output_low(PIN_B3);
output_low(PIN_B2);
output_low(PIN_B1);

channel2=0;
channel3=0;
channel5=0;
AO=0;
A3=0;
A5=0;


while(1)
{

set_adc_channel(2);
delay_us(100);
channel2=read_adc();

set_adc_channel(3);
delay_us(100);
channel3=read_adc();
delay_ms(1);

if(channel3>=512){
output_high(PIN_B3);}

delay_us(50);

     set_pwm1_duty(channel2);          
   }              
  }

Ach und die FUSES:
Code:
#include <16F876A.h>
#device ICD=true
#device adc=10

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                      
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected

#use delay(clock=4000000)

Edit: Bitte Code-Tags verwenden. Edson
« Letzte Änderung: Juli 25, 2011, 09:21:01 von Edson » Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.035 Sekunden mit 17 Zugriffen.
 
Top! Top!