Forum: Mikrocontroller und Digitale Elektronik Ausgang wird nicht gesetzt


von Treter_Peter (Gast)


Lesenswert?

Hallo liebe Community,

Bin Anfänger und scheitere schon an dem setzten eines Ausgangs.
Als ISP-Programmer benutze ich den "mysmartUSB MK 2". Als Controller 
habe ich den Atmega328P.
Außerdem arbeite ich mit dem AVR Studio 6. Ich habe mir mein eigenes 
Testboard zusammen gebaut. ACC gegen Gnd enthällt einen 100nF 
Kondensator genauso wie der RESET Pin. Desweiteren ist der Reset Pin mit 
einen 10k Pullup-Widerstand versehen. Am ausgang habe ich eine einfache 
LED mit 150 ohm Vorwiederstand geschaltet. Zum brennen des Chip's habe 
ich das mit dem Programmer mitgelieferte "myAVR_ProgTool" verwendet. Das 
schreiben in den Flash und eeprom war auch erfolgreich, wenn ich die 
Daten anschließend wieder auslese, sind sie auch vorhanden und 
Identisch.

Zum Betrieb des Chip's reicht doch die Beschaltung von ACC, RESET, GND, 
der Testeingang (PB0) sowie der Testausgang (PC5)aus, oder nicht?
Ich habe die Spannungen am Reset und acc Pin gegen gnd gemessen, sie 
liegt an. Habe auch direkt am Ausgang mal gemessen, es wird keine 
Spannung ausgegeben.
Woran liegts? Hier der Programm Code: (Hatte erst nur die Schleife, dann
habe ich das mit dem zwangssetzen des Ausgangs Probiert)
#include <avr/io.h>

int main(void)
{  DDRB = (0 << DDB0);  //Port B Anschluß 0 als Eingang definieren
  DDRC = (1 << DDC5);  //Port C Anschluß 5 als Ausgang definieren

    while(1){
    if (PINB & (1 << PB0)){
      PORTC = PORTC & (1 << PC5);
    }
    else{
      PORTC = PORTC & (1 << PC5);  /
    }
      PORTC = (1 << PC5);

    }
}
Danke schon mal im Vorraus.

von Eumel (Gast)


Lesenswert?

Treter_Peter schrieb:
> ACC, RESET, GND,

AVCC vergessen.

von Michi (Gast)


Lesenswert?

Treter_Peter schrieb:
> ACC, RESET, GND,
Vcc vergessen

von Eumel (Gast)


Lesenswert?

Michi schrieb:
> Treter_Peter schrieb:
>> ACC, RESET, GND,
> Vcc vergessen

Ich komm mit den Bezeichnungen immer sowas von durcheinander. Das 
Datenblatt hilft immer weiter :)

von Treter_Peter (Gast)


Lesenswert?

Ups Tippfehler, ACC = VCC. Acc gibt es ja auch nicht. :-) Versteh ich 
das richtig, das AVCC und AGND auch angeschlossen werden müssen? Im 
Datenblatt stand folgenendes:
AVCC is the supply voltage pin for the A/D Converter, PC3:0, and ADC7:6. 
It should be externally
connected to VCC, even if the ADC is not used. If the ADC is used, it 
should be connected to VCC
through a low-pass filter. Note that PC6...4 use digital supply voltage, 
VCC.

PC5 sollte doch die Spannung über die digitalversorgung VCC bekommen, 
oder hab ich das falsch übersetzt?

Danke.

von Juergen G. (jup)


Lesenswert?

DDRB = (0 << DDB0);

 macht keinen Sinn

richtig Waere DDRB &= ~(1 << DDB0);

kannst Du aber am Programm Start auch weglassen, da die Pins nach dem 
Einschalten alle auf Eingang stehen.



Treter_Peter schrieb:
> while(1){
>     if (PINB & (1 << PB0)){


>       PORTC = PORTC & (1 << PC5);

auch das macht hier keinen Sinn
richtig ist
PORTC &= ~(1 << PC5);



>     }
>     else{
>       PORTC = PORTC & (1 << PC5);  /

ebenso hier

>     }
>       PORTC = (1 << PC5);

und hier ist
PORTC |= (1 << PC5);
die richtige Wahl
>
>     }
> }

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.