delay_ms geht bei mir nicht

Maik15

Neues Mitglied
06. Sep. 2009
55
0
0
Sprachen
Hi zusammen ich bin es schon wieder.

Zur Zeit versuche ich ein Externes EEPROM über eine I2C Schnittstelle zu beschreiben.

Das will aber nicht Funktionieren und Simulieren geht nicht weil die Rückgabewerte vom EEPROM fehlen.

Bei der Fehlersuche bin ich bei meiner Zeitschleife wahrscheinlich fündig geworden.
Da die Schleife selbst beim Blinklicht auf meine Hardware (ATmega644) einfach nicht funktionieren will (in der Simulation geht alles).

Das ist doch ein einfaches Blinken im 2s Takt von allen Pin's vom PortB.

Code:
#include <avr/io.h>			// Datei für Ein und Ausgänge
#include <util/delay.h>				// Datei für Pausen (delay )


//===============================================================

void Zeitscheibe (unsigned int);

//===============================================================
//Hauptprogramm

int main(void)
	{
		unsigned char test;
		DDRB = 0x00;

	while (1)
	{
		PORTB = 0x00;
		Zeitscheibe (2000);
		PORTB = 0xFF;
		Zeitscheibe (2000);
	}
	return 0;
	}

//===============================================================
//Funktion Zeitschleife
void Zeitscheibe (unsigned int Wartezeit)
	{
		int t;
		for (t=0; t<=Wartezeit; t++)		// so oft warten wie Wartezeit vorgibt
			{
			_delay_ms(1);			// 1ms warte
			}
	}
Ich hoffe ich hab beim Rauslöschen vom restlichen Code nicht etwas vergessen.

P.S. bin ich eigentlich der einzige bei dem alles so Kompliziert ist?

gruß
Maik
 
Hallo Maik,

probiere es mal damit, die Variable t in deiner Routine Zeitschleife als unsigned int (uint16_t) zu definieren, so wie die Variable Wartezeit.

Achso, und das Datadirektion Register muss 0xFF für Output sein.

Grüße,
Dirk
 
DANKE Dirk

Da hab ich also in meinem glauben den Fehler gefunden zu haben.
Und um sicher zu sein (beim schreiben von dem Blinklicht)
gleich noch ein paar neue Fehler geschaffen.

Das tut mir jetzt aber leid das ich euch schon wieder mit Nichtigkeiten ärgere.

Ich glaub ich bin wirklich ein schwerer fall.:stupido3:

gruß
Maik
 
Ach ja eine Frage hab ich noch.

Welche der beiden Dateien wird eigentlich eingebunden
#include <avr/delay.h>
#include <util/delay.h>

Zur zeit hab ich Beide drin.

gruß
Maik
 
Das ist beides identisch, bzw. avr/delay.h inkludiert einfach util/delay.h.

Also nur einmal einbinden.

#include <util/delay.h>

Grüße,
Dirk
 
Warum machst Du eigentlich den Umweg über die Funktion "Zeitscheibe"? Hat es irgendeinen Sinn, der sich mir nicht erschliessen will?

Und dann noch, bist Du Dir sicher, dass Du die MCU wirklich schlafen schicken willst? Denn, wenn sie schläft, kann sie nichts machen, das ist wie Pause für eine gewisse Zeit. Wäre ein Timer nicht besser gewesen an der Stelle?

Grüsse
Heinrich
 
Hallo Heinrich

Wegen der Fehler suche im Programm hab ich die Schleife gebaut,
so konnte ich die Durchläufe mitzählen lassen außerdem konnte ich die Pausen lang genug machen um die LED’s blinken zu sehn.

Vom Prinzip brauch ich die delay Pause nur um ein paar Millisekunden auf das EEPROM zu warten.

Aber ansonst hast Du natürlich recht mit einem Timer hat man die CPU frei für andere Aufgaben.

gruß
Maik
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)