Hallo zusammen, ich bin neu auf dem Gebiet der uC. Arbeite gerade an einem Projekt, wo ich einen 16 Bit- AD- Wandler auslesen und mit einem Atmega 256 über SPI die Werte auf dem Display ausgeben möchte. Wie fange ich da am besten an? MfG Peter
Herzlich willkommen! Willst du wissen wie du dein Programm aufbauen, oder wie du dich mit einem µC einarbeiten könntest? Für dein Programm: - ADC intialiseren - Display initialiseren (falls nötig) - ADC auslesen - Messergebnis auswerten und aufbereiten - Display das Ergebnis anzeigen lassen Um überhaupt erstmal mit einem µC klar zu kommen kannst du ja vorerst nur das Display ansteuern und dir mal ein paar Zahlen oder so ausgeben lassen.
Vielen Dank für die schnellen Antworten. Display ist init. und läuft auch über SPI. Habs mitm STK 500 gemacht. Brauche nur eine Routine, um den ADC auszulesen. Verstehe das mit dem high und lowbyte nicht. in welches Register wird der Messwert geschrieben und wo muss ich den wieder abholen usw.
Peter Pan schrieb: > Verstehe das mit dem high und lowbyte nicht. wenn Dein Programm in C geschrieben ist, brauchst Du dir darum keinem Kopf zu machen. Darum kümmert sich der Compiler
Peter Pan schrieb: > Verstehe das mit dem high und lowbyte nicht. Ein 16Bit Wandler liefert einen 16 Bit Wert zurück. Das sind 2 Byte. Das Highbyte ist der höherwertige Teil davon, das Lowbyte der niederwertige. Beispiel: 0x1234 ist der Messwert. Highbyte = 0x12 Lowbyte = 0x34
Ja habe ich C geschrieben. Also mein Display läuft. Muss jetzt ein Programm schreiben, womit ich die Messwerte des ADC auslesen und auf dem Display ausgeben kann. Habe da keine Ahnung wie ich da anfangen soll. HAbe einen 16 Bit ADC und den Atmega 256.
Peter Pan schrieb: > Habe da keine Ahnung wie ich da anfangen soll. Mit der Initialisierung des Wandler. Wie das geht steht im Datenblatt des Wandlers. Da die Spannung meiner Glaskugel grad aus ist und sie den Eimer Spannungsabfall auch nicht nutzen will vermag ich nicht mehr zu sagen.
Hast du einen externen ADC? Wenn ja, wie sprichst du den an? Ansonsten musst du den Messvorgang erst einmal starten, dann etwas warten, eventuell 10ms, und dann die zwei Register auslesen und in zwei eigene Variablen speichern.
1 | unsigned char byte1 = 0; |
2 | unsigned char byte2 = 0; |
3 | unsigned int ergebnis = 0; |
4 | |
5 | // starten
|
6 | // warten
|
7 | // auslesen
|
8 | byte1 = LOWBYTE-NAME; |
9 | byte2 = HIGHBYTE-NAME; |
10 | |
11 | ergebnis = (byte2<<8)+byte1; |
In ergebnis steht dann ein wert mit maximal 65000 oder so drin, das entspricht dann deinem maximalen Wert, der vorgegeben wird durch deine referenz-spannung, also sicherlich 5V. Das musst du dann entsprechend umrechnen und dann hast du eine Spannung.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.