Homepage

  • Projekte
  • Shop
  • Forum
Erweiterte Suche
  • Schnellzugriff
    • Unbeantwortete Themen
    • Aktive Themen
    • Suche
  • FAQ
  • Anmelden
  • Registrieren
  • Foren-Übersicht
  • Suche

Wie programmiere ich einen ATMEGA 8 Eingang?

Informationen, Fehlermeldungen, Verbesserungen zu Ulis Basisversion des AVR-Webservers.
Antworten
  • Druckansicht
Erweiterte Suche
4 Beiträge • Seite 1 von 1
Darko
Beiträge: 2
Registriert: 17.01.2013, 16:51:28

Wie programmiere ich einen ATMEGA 8 Eingang?

  • Zitieren

Beitrag von Darko » 17.01.2013, 17:05:15

Hurra! Ich bin auch bei euch angemeldet.
Bin jetzt seit 4 Studnen frustriert im Netz und versuche verzweifelt einen Eingang im ATMEGA 8 zu programmieren.
Ich habe schon viel ausprobiert.

Ich möchte den ursprünglichen PORTB 2 als Eingang definieren, der mit einer EXTERNEN Spannung eines Mobilfunkgerätes ca. 2.5 V (war mal der Vibrationsmotor dran) irgendeinen Eingang von mir aus auf TRUE setzen, damit ein Ausgang ( den habe ich programmiert bekommen) für 1 sekunde eine Spannung von 5 Volt rausgibt.
Ich weiß, dass ihr über den 3 zeiler lacht, aber ich fange ja auch erst gerade an.
Hoffe ich bekomme bald eine Lösung, wenigstens heute noch...


Achso, mein jetziger Stand des Quellcodes sieht so aus:



//----------------------------------------------------------------------
// Titel : myAVR Beispiel "Blinklicht" für den ATmega8/48/88/168
//----------------------------------------------------------------------
// Funktion : PORTB wird mit Verzögerung inkrementiert.
// Schaltung : PB.0-PB.2 an LED 1-3
//----------------------------------------------------------------------
// Prozessor :
// Takt : 3.6864 MHz
// Sprache : C
// Datum : 12.11.2007
// Version : 1.0
// Autor : S. Hänsel
// Programmer : ...
// Port : ...
//----------------------------------------------------------------------
#define F_CPU 3686400 // Taktfrequenz des myAVR-Boards
#include <avr\io.h> // AVR Register und Konstantendefinitionen
//----------------------------------------------------------------------
void initPorts(void) // Unterprogramm füpr die Initalisierung
{
DDRB=0x07; // Set Bits 0, 1 und 3 von DDRB =1 "Ausgang"
}
//----------------------------------------------------------------------
main (void)
{
unsigned char i; // Variable für Ausgabedaten
i=PINB; // Startwert
initPorts(); // Unterprogrammaufruf für Initialisierung
if (PINB&(1<<PB2))

{
// Schleifenanfang Mainloop
PORTB=1; // ausgabe Bitmuster

waitMs(1050); // etwas warten
PORTB = 0;

}

}
//----------------------------------------------------------------------




Ich könnte mir vorstellen, dass bei der Definition der Ausgänge was schief gelaufen ist...
VIELEN VIELEN DANK!!!!!!!!!!!!!!!
Nach oben

Benutzeravatar
Ulrich
Site Admin
Beiträge: 3054
Registriert: 29.02.2004, 18:12:19
Wohnort: Siegen
Kontaktdaten:
Kontaktdaten von Ulrich
Website

Re: Wie programmiere ich einen ATMEGA 8 Eingang?

  • Zitieren

Beitrag von Ulrich » 17.01.2013, 17:30:57

Hallo,

ohne jetzt dein Programm auszuprobieren. Dein Programm lauft einmal ab und danach ist es am ende.
Ich würde mal dein Programm in eine While-Schleife packen.

void main (void)
{
PORTS EINSTELLEN

while(1) <--- diese Schleife endet nie
{

Einlesen des Ports
Ausgabe des Ports

}
}


Gruß
Uli
Nach oben

Darko
Beiträge: 2
Registriert: 17.01.2013, 16:51:28

Re: Wie programmiere ich einen ATMEGA 8 Eingang?

  • Zitieren

Beitrag von Darko » 18.01.2013, 11:48:52

Hallo. Danke für die Antwort.

Jedoch bringt mir diese nicht viel. Ok die while Schleife kann ich einbauen, jedoch

weiß ich immer noch nicht wie man einen Eingang definieren kann.
Wenn ich heute keine Lösung bekomme, löse ich das problem mit diversen Relais und Timerschaltungen...
Wäre zwar schade aber ich muss das nun fertig bekommen...

Gruß Darko
Nach oben

qlaus
Beiträge: 35
Registriert: 02.10.2008, 19:32:02

Re: Wie programmiere ich einen ATMEGA 8 Eingang?

  • Zitieren

Beitrag von qlaus » 18.01.2013, 13:48:34

Hallo Darko,

Eingänge hast ja schon indirekt mit der Zuweisung DDRB = x gesetzt. Alle Bits die 1 erhalten haben sind Ausgänge, der Rest sind Eingänge (Bit-Wert = 0).

Da Du als Reaktion auf PB2 auf PORTB eine 1 ausgibst, wird bit0 (PB0) auf 1 gesetzt die andern Ausgänge haben ja Bit-Wert 0, folglich muß Du auch an PB0 auf dein Ergebnis warten, also etwas angeschlossen haben oder halt messen.

Viel Erfolg
Qlaus
Nach oben

Antworten
  • Druckansicht

4 Beiträge • Seite 1 von 1

Zurück zu „Software: Ulis Basisversion“



  • Foren-Übersicht
  • Alle Zeiten sind UTC+02:00
  • Alle Cookies löschen

Powered by phpBB® Forum Software © phpBB Limited

Deutsche Übersetzung durch phpBB.de

Datenschutz | Nutzungsbedingungen

 

 

sitemap  |    |  datenschutz   |  impressum