PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Blinklicht geht net :/



coCo
11.09.2006, 13:18
Hi,
ich hab mal angefangen meinen Mega32 mit C zu programmieren. Jetzt hab ich aber schon ein paar Probleme die ich net lösen kann :(

Ich wollt ein Blinklicht machen und habe folgendes "produziert":


#include <avr/io.h>
#include <avr/delay.h>


int main(void)
{


DDRC |= (1<<PC0);


while(1) {
PORTC |= (1<<PC0);
_delay_ms(100);
PORTC &= ~(1<<PC0);
_delay_ms(100);
}



}


Die LED blinkt zwar, aber so schnell, dass man es kaum sieht. Auch wenn ich den Parameter von _delay_ms() auf 1000 ändere, passiert nix auf dem steckbrett-.-

Und noch eine andere Frage: Auf mikrocontroller.net hab ich gelesen, dass man einen Pin folgendermaßen auf Ausgang schalten kann:
DDRC |= (1<<PC0);

Mit PORTC |= (1<<PC0); kann man den Pin dann auf High setzen und mit PORTC &= ~(1<<PC0); wieder auf Low, bei mir is das aber genau umgekehrt. Woran könnte das liegen?

MfG

m.a.r.v.i.n
11.09.2006, 15:53
Hi CoCo,

liegt wahrscheinlich an der Bibliotheksfunktion delay_ms.
Hier mal ein Auszug aus der Doku (delay.h)



The maximal possible delay is 262.14 ms / F_CPU in MHz.


Bei z.B 16Mhz ist das maximale Delay nur noch ca. 16ms.
Du mußt dir also eine eigene Funktion schreiben, wenn du größere Delays benötigst.



Mit PORTC |= (1<<PC0); kann man den Pin dann auf High setzen und mit PORTC &= ~(1<<PC0); wieder auf Low, bei mir is das aber genau umgekehrt. Woran könnte das liegen?


Meinst du damit, ob die LED leuchtet bzw. nicht leuchtet, oder was?
Das liegt nämlich daran, wie die LED angesteuert wird, mit LOW oder HIGH Pegel. LED Vorwiderstand an GND oder an VCC.

Gruß m.a.r.v.i.n

coCo
11.09.2006, 16:22
Hi,
danke für deine Antwort.
Also ich hab den Vorwiderstand an VCC, so wie es in dem Tutorial aus dem RN Wissen stand. Also muss ich das einfach an GND anschließen. :)

Wie müsste denn so eine Funktion aussehen, bzw. kannst du so eine Funktion posten? Einfach ganz oft _delay_ms(16) ausführen nehme ich mal an...

MfG

coCo
11.09.2006, 16:53
Ok hab das mit der Funktion hingekriegt :)

Hab noch ne Frage zu PonyProg, wollte net extra nen Thread aufmachen.
Ist es normal, dass nach dem Übertragen, das Verifying so lange dauert (15 sek) ?

MfG

robby-fant
11.09.2006, 17:13
natürlich. kannste aber einfach unterbrechen.