Ausgang wird nicht gesetzt

Gast #3144863
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.
Gast #3144922
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.
#3144927
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
>
>     }
> }

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.