dsPIC4011 AD Wandler
Dienstag, 22. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  CCS Compiler  |  AD-Wandler (CCS)  |  dsPIC4011 AD Wandler « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: dsPIC4011 AD Wandler  (Gelesen 1902 mal)
 
Matthias Motschiunig
Newbie
*
Offline Offline

Beiträge: 2


Profil anzeigen
« am: November 25, 2008, 15:52:08 »

Hallo,

Ich arbeite gerade mit dem dsPIC Demoboard der Firma Microchip in
Auftrag unserer Schule. Verwendet wird der im Betreff genannte dsPIC4011
und der CCS-Compiler in der neuesten Version. Jetz habe ich damit
folgende 2 Probleme:

1.: Sobald ich in meinem Programm eine Berechnung durchführe
(Multiplikation, Dividieren etc.) mit meiner Variablen, stimmt die
Ausgabe im HyperTerminal nicht mehr. Anstatt das im printf geschriebene
"ADC Spannung: (Wert)" auszugeben, gibt er "AACCSSaannnn: " aus, also
jedes ungerade Zeichen doppelt. Woran kann das liegen? Hab schon
verschiedene Datentypen, ADC Einstellungen probiert und es wurde nicht
besser.

2.: Der Wert im AD Wandler steht um 6 Bits zu weit links, ich muss ihn
also mit dem ">>" Operator um 6 stellen nach rechts verschieben. Was
kann hier die Lösung sein?

Hier noch der Quellcode des Programmes, ein Simpler AD Wandler:


#include "30F4011.h"
#include <string.h>

#fuses XT_PLL8, NOWDT, NOBROWNOUT
#use delay(clock=58982400)
#use standard_io(d)

#use rs232(baud=9600,UART2)

unsigned int16 wert;
float spannung;

void main(){

  setup_adc_ports( ALL_ANALOG );
  setup_adc( ADC_CLOCK_INTERNAL );
  set_adc_channel( 2 );


  printf("Willkommen zur Spannungsmessung!\n\r");
  delay_ms(1000);


  while(1) {

      set_adc_channel( 2 );
              delay_us(100);
    wert=read_adc();
    wert=wert>>6;
    delay_us(100);
    spannung=(wert/1023.0)*5.0;
    printf("ADC spannung:%f\n\r",wert);
    delay_ms(1000);
  }
}


Freue mich über jede Hilfe!

Liebe Grüße Matthias
Gespeichert
Master Snowman
Sr. Member
****
Offline Offline

Beiträge: 289



Profil anzeigen WWW
« Antworten #1 am: November 25, 2008, 16:27:26 »

hallo Matthias

wird
Code: (c)
printf("Willkommen zur Spannungsmessung!\n\r");
korrekt übertragen? falls ja, basiert dein problem wahrscheinlich auf einem weiteren bug im CCS. nicht schlimm, nimm einfach den freien compiler von Microchip selbst Zwinkernd sorry, ist ein bisschen gemein formuliert, aber der CCS ist bekannt, dass er bugs hat (darum verwende ich ihn auch nicht und ist daher für mich schwierig den möglichen fehler zu finden).

ps: habe keine ahnung, ob "clock=58982400" stimmt, aber irgendwie kommt mir die zahl schräg rein   Unentschlossen

gruss
Emanuel
Gespeichert
Matthias Motschiunig
Newbie
*
Offline Offline

Beiträge: 2


Profil anzeigen
« Antworten #2 am: November 26, 2008, 08:31:53 »

Ja, printf("Willkommen zur Spannungsmessung!\n\r"); wird richtig ausgegeben, und der clock stimmt auch, alles dem Datenblatt entnommen, hatte zuerst nen falschen und da ging gar nix.

Ich werde mal den Microchip Compiler testen, falls das nichts hilft melde ich mich wieder Zwinkernd

Danke für die schnelle Antwort!

Lg motsche
Gespeichert
Master Snowman
Sr. Member
****
Offline Offline

Beiträge: 289



Profil anzeigen WWW
« Antworten #3 am: November 26, 2008, 08:59:58 »

alternativ könntest du die zeile
printf("ADC spannung:%f\n\r",wert);
nach und nach testen. damit meine ich, dass'wert' vielleicht mal zuerst in einen intergwert gewandelt wird (zum testen halt mal ohne komma) oder so.
viel glück
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.037 Sekunden mit 19 Zugriffen.
 
Top! Top!