Forum: Mikrocontroller und Digitale Elektronik Atmega Port für ADC und I/O gemischt benutzten


von A. R. (redegle)


Lesenswert?

Hallo,

ich habe einen Atmega2560 im Einsatz.
Port F verfügt über I/Os und über einen ADC.

Kann ich einen Pin als ADC benutzten und die andern Pins als I/Os?

von Spess53 (Gast)


Lesenswert?

Hi

>Kann ich einen Pin als ADC benutzten und die andern Pins als I/Os?

Ja.

MfG Spess

von holger (Gast)


Lesenswert?

Ja.

von c-hater (Gast)


Lesenswert?

A. R. schrieb:

> Kann ich einen Pin als ADC benutzten und die andern Pins als I/Os?

Was sagt das Datenblatt?

von A. R. (redegle)


Lesenswert?

c-hater schrieb:
> A. R. schrieb:
>
>> Kann ich einen Pin als ADC benutzten und die andern Pins als I/Os?
>
> Was sagt das Datenblatt?

Im Datenblatt steht:

>Port F also serves as an 8-bit bi-directional I/O port, if the A/D Converter is 
>not used.

Wenn ich das richtig deute hieße das nein. War mir aber sicher, das es 
gehen sollte. Irgendwo stand nämlich, dass das Schalten der I/Os am 
selben Port Rückwirkung auf den ADC hat.

Habs jetzt ausprobiert.
1
PORTF = 0b00000000;
2
DDRF = 0b11111100;//A/D-Wandler an Pin 0 und 1 angeschlossen
3
4
//AD_CONVERTER
5
//A/D-Wanlder im free running mode konfigurieren
6
//Löst nach jedem Sampling ein Interrupt aus.
7
//Samplefrequenz beträgt 76,93kHz
8
ADCSRA |= (1<<ADEN); //ADC einschalten
9
ADCSRA |= (1<<ADATE);//ADC Auto Trigger Enable, automatische Triggerung bei festzulegendem Event
10
ADCSRA |= (1<<ADIE); //Aktiviert ADC-Interrupts (Interrupt, sobald ein Sample durchgeführt worden ist)
11
ADCSRA |= (1<<ADPS2| 0<<ADPS1 | 0<<ADPS0);//Prescaller 16 --> 1MHz Takt --> 76,93kHz fürs Samplen (13Takte pro Wandlung)
12
ADCSRB |= (0<<ADTS2| 0<<ADTS1 | 0<<ADTS0);//Festzulegendes Event für "Auto Trigger Enable", bleibe im Free Running Modus
13
ADMUX |= (0<<REFS1| 0<<REFS0);//ARED, externe Referenz benutzen
14
ADMUX |= (1<<ADLAR);//ADCH --> 8 höherwertige Bits ADCL7 und ADCL6 --> letzte beiden Bits (LSB) //Wenn ADCL gelesen wird muss anschließen auch ADCH gelesen werde, ausreichend, nur ADCH zu lesen
15
ADMUX |= (0<<MUX4 |0<<MUX3| 0<<MUX2 | 0<<MUX1| 1<<MUX0);//ADC1, PF1, Cosinus
16
  
17
ADCSRA |= (1<<ADSC); //Samplevorgang starten (free running Modus)

Führe abwechselnd folgende Befehle aus:
1
PORTF = 0b11111111;
2
PORTF = 0b00000000;

Die Pins PF2 und PF3 werden geschaltet.
PF4 bis PF7, die auch noch mit TCK, TMS, TDO und TDI belegt sind 
dauerhaft auf high. Kann mir jemand die Ursache erklären?

Danke.

von holger (Gast)


Lesenswert?

>Die Pins PF2 und PF3 werden geschaltet.
>PF4 bis PF7, die auch noch mit TCK, TMS, TDO und TDI belegt sind
>dauerhaft auf high. Kann mir jemand die Ursache erklären?

JTAG Fuse abschalten.

von Spess53 (Gast)


Lesenswert?

Hi

>Kann mir jemand die Ursache erklären?

JTAG ist eingeschaltet.

>>Port F also serves as an 8-bit bi-directional I/O port, if the A/D >>Converter 
is
>>not used.

>Wenn ich das richtig deute hieße das nein.

Lies das Kapitel: I/O Ports->Alternate Port Functions im Datenblatt.

MfG Spess

von A. R. (redegle)


Lesenswert?

>Lies das Kapitel: I/O Ports->Alternate Port Functions im Datenblatt.

Von dort habe ich den Text kopiert.

>JTAG Fuse abschalten.

Das habe ich befürchtet!
Führt da kein Weg dran vorbei?

EDIT: Habe jetzt JTAG ausgeschaltet. Hatte mir sowieso JTAG und ISP 
herausgeführt.

Also danke für die schnellen und kompententen Antworten.

von Spess53 (Gast)


Lesenswert?

Hi

>>Lies das Kapitel: I/O Ports->Alternate Port Functions im Datenblatt.
>Von dort habe ich den Text kopiert.

Da steht aber noch viel mehr drin.

>Das habe ich befürchtet!
>Führt da kein Weg dran vorbei?

>EDIT: Habe jetzt JTAG ausgeschaltet. Hatte mir sowieso JTAG und ISP
>herausgeführt.

Wenn man weiß was man macht und einem ordentlichen Programmer ist das, 
wie du gemerkt hast, kein Problem.

MfG Spess

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.