Forum: Analoge Elektronik und Schaltungstechnik mit AVR Spannungen messen


von raoul4 (Gast)


Lesenswert?

hallo,
ich hab mal gehört, dass der 90s4433 spannungen messen kann. ich hab
jetzt einen 90s8535, und der wird das ja wohl auch können, oder? und
wenn er's kann, wie geht das dann? irgendwie mit den AD wandlern?
bitte um hilfe!


mfg raoul4

von crazy horse (Gast)


Lesenswert?

wie sonst? Genau dafür sind die Analogeingänge da.
Wie es genau gemacht, steht im Datenblatt, und in der Codesammlung sind
sicher auch ein paar Beispiele.

von raoul4 (Gast)


Lesenswert?

in der codesammlung hab ich nichts brauchbares gefunden und englisch
kann ich auch nicht so gut. es muss doch irgendwen geben, der das
schonmal in C und mit einem 90s gemacht hat. kommt, schreibt doch mal
was rein.

mfgraoul4

von ape (Gast)


Lesenswert?

komm beschäftige dich doch mal selber damit :P
sorry, aber abschreiben kann jeder. Wenn du kein englisch kannst, dann
lern es :) wirste über kurz oder lang nich dran vorbei kommen...

von raoul4 (Gast)


Lesenswert?

hallo,
so hab mir jetzt mal das datenblatt angeschaut und dabei folgenden
(stümper) code erstellt.
vielleicht so(?):

#include <90s8535.h>
#asm
   .equ __lcd_port=0x1b
#endasm
#include <lcd.h>
#include <delay.h>

void main(void)
{
lcd_init(16);         //LCD initialisieren
lcd_clear();          //LCD-Speicher löschen
ADMUX=0b00000011;     //um PA3 als A/D Wandler-Port zu nutzen
ADCSR=0b10100000;     //um ADFR (free running mode) und ADEN
                      //(enable) zu setzen
while (1)
      {

      };
}

das ziel dieses (noch unvollständigen) programms ist es eigentlich die
spannung zu messen und sie dann auf dem LCD anzuzeigen. ich bin noch
ein ziemlicher anfänger und habe mir auch schon das buch "C für
Mikrocontroller" bestellt.

und dann gleich noch zwei fragen:


1. wie kann ich nur einzelne bits ändern, also nicht so: 0b11010110
sondern vielleicht geht's ja auch noch anders?!?!

2. muss ich im DDRA noch den PA3 als input eintragen, damit ich in ADCH
und ADCL das ergebnis lesen kann?

von Hannes Lux (Gast)


Lesenswert?

Hallo...

Sind nicht nach dem Reset erstmal alle Ports Inputs???

...HanneS...

von Frank Linde (Gast)


Lesenswert?

Es ist guter Programmierstil, alle Ports so zu initialisieren, wie man
sie benötigt und sich nicht auf irgendwelche Default-Werte zu
verlassen.

Gruß, Frank

von Markus Kempf (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe neulich die ADC's dazu benutzt 2 Infrarot Abstandssensoren zu
testen. Der Code macht nichts anderes als 2 ADC's zu starten und deren
Wert ohne jegliche formatierung auf einem LCD Display anzuzeigen, also
genau das was du haben möchtest. Der Code ist für CodevisionAVR, müsste
Dir weiterhelfen. Und Lass dich nicht am #include <mega16.h> stören,
wenn dus einfach in #include <90s8535.h> änderst müsste es schon
funzen. Wenn nicht, prüf die Registeradressen.

von raoul4 (Gast)


Lesenswert?

danke für eure unterstützungen!!

mfg raoul4

von raoul4 (Gast)


Lesenswert?

hallo markus k.,
ich hab zu deinem code zehntausend fragen. ich habe mir zwar schon das
buch "C für Mikrocontroller" gekauft, aber verstehe trotzdem so
einiges nicht.(im buch mein ich >>) z.b.:
-enum und struct befehl.

-viele beispielprogramme.

-wenn da jetzt "|=" steht, dann weiß ich garnicht wieso und für
welchen zweck. und genauso ist es auch bei "&=".

mfg raoul4

von Hannes Lux (Gast)


Lesenswert?

Hallo Raul4...

Tip: Vokabeln lernen...

Aber tröste dich, ich blicke da auch nicht durch, befasse mich aber
derzeit auch nicht mit C, mache meine Sachen in Assembler. Dass "!="
der Operator für "Ungleich" ist raffe ich noch, beim Rest müsste ich
nachschlagen. Richtig gesehen braucht man zu jeder Programmiersprache
oder zu jedem Befehlssatz mit der/dem man arbeitet ein
Befehlsverzeichnis als Nachschlagewerk...

Viel Erfolg...
Bit- & Bytebruch... - ...HanneS...

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
Noch kein Account? Hier anmelden.