www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Transistor und Atmega88


Autor: Aron (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tag Jungs

Ich bin ein Anfänger in dem Bereich, und  möchte anhand eines Ausgangs 
eines Atmega88 ein  Transistor ansteuern .wäre die schreibweise so 
richtig oder nicht?


PORTC = (1 << DDC3); Transistor ein


PORTC &= ~(1<<PC3);  Transistor aus

Danke
Aron

Autor: Düsendieb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aron schrieb:
> PORTC = (1 << DDC3); Transistor ein
> PORTC &= ~(1<<PC3);  Transistor aus



so reicht es aus:

PORTC = (1 << 3); Transistor ein
PORTC &= ~(1 << 3);  Transistor aus

Autor: Sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht vergessen:

DDRC = (1 << DDC3); // Pin als Output schalten...

Autor: bitte löschen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Düsendieb schrieb:
> so reicht es aus:
>
> PORTC = (1 << 3); Transistor ein
> PORTC &= ~(1 << 3);  Transistor aus

Warum gibst Du einem Anfänger, der auf vorbildliche Weise symbolische 
Konstanten verwendet, die Empfehlung, dies nicht zu tun?

Autor: Captain Subtext (captainsubtext)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aron schrieb:
> PORTC = (1 << DDC3); Transistor ein

Hallo Aron,
das einschalten würde ich ein wenig abändern:

PORTC |= (1 << PC3); //Transistor ein

Durch das ODER ( | ) werden die anderen Pins am Port C nicht verändert, 
statt "DDC3" würde ich der Übersichtlichkeit halber "PC3" schreiben.

Aber ansonsten stimmt alles!

Autor: Aron (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi
Danke für euere schnelle Antwort

ich habe jetzt mein Program geändert, leider tut sich nicht viel.

Ich habe ein Overflow programmiert die mir jede Sekunde  3 anlaoge 
Spannungen misst.die dritte Spannungen wird nachdem einschalten eins 
Transistors gemessen. nun habe ich das Problem, dass die Spannung 
abwechslend richtig oder falsch messe.
Beispiel:
erste Messung richtig--> nächste Rotiene---> Messung falsch---> nächste 
Rotiene--> Messung Richtig und so weiter.
Ich bin mir sicher das liegt an der Steuerung des Transistors aber ich 
weiss nicht was falsch ist, vielleicht wirft jemand einen Blick auf 
meinen Programm, mit der Hoffung ein Fehler zu finden

PS: Ich verwende ein Atmega88
MfG
Aron

Autor: Rene K. (draconix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oha, da sehe ich böse Fallen!

1.) Variablen Deklaration

unsigned int adc=0.0 ....

bringt nichts... ein unsigned int ist immer ganzzahlig.

2.) Der Interrupt

Du rufst in deiner Interrupt Routine eine externe Routine auf: Macht man 
nicht, und sollte eigentlich auch nicht gehen.

Du hast keine Variablen Volatile Deklariert (z.b. adc0.. etc...)

Du sendest aus deiner Interrupt Routine an die UART... böse Falle...

Deine Interruptroutine sollte wenn möglich nur einen Läufer setzen, in 
deiner Hauptschleife in Main sollte dieses dann alles berechnet werden.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.