-         

Ergebnis 1 bis 5 von 5

Thema: Blinklicht geht net :/

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    27
    Beiträge
    485

    Blinklicht geht net :/

    Anzeige

    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":
    Code:
    #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

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    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

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    27
    Beiträge
    485
    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

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    27
    Beiträge
    485
    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

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.08.2006
    Beiträge
    183
    natürlich. kannste aber einfach unterbrechen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •