-         

Ergebnis 1 bis 5 von 5

Thema: Atmega16 macht nicht was er soll.....

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    24.01.2007
    Beiträge
    17

    Atmega16 macht nicht was er soll.....

    Anzeige

    Ich habe ja nun dieses Pollin Board.

    Wenn ich nun die TESTOOL.hex einspiele funktioniert das auch.

    Im AVR-Studio habe ich nun erste Versuche ein getippt und im Simulator getestet.

    Keine Fehlermeldung und Programm läuft (Ausgang PORTD 7 blinkt).
    Wenn ich dann eine HEX erstelle und die mit PONYPROG übertrage, wird zwar der Taster abgefragt und die LED geht an.

    Aber sie BLINKT nicht, wenn ich den Taster wieder los lasse geht die LED auch wieder aus.
    Code:
    .include "m16def.inc"
         
         .def temp1 = r16
         .def temp2 = r17
    
    	 ldi temp1, 0b11100000
    	 out ddrd, temp1
    
    LEDaus:                 ; Schaltet die LED beim Start aus
    	 cbi PORTB, 7
    
    Taster:                 ; Fragt den Taster ab
         ldi temp2, 0x22
    	 sbis pind, 2
    	 rjmp LEDaus
    	 rjmp LEDan
    
    LEDan:                  ; Schaltet die LED ein
         sbi PORTD, 7
    
    Schleife:               ; Schaltet die verzögert aus
         dec temp2
    	 brne Schleife
    	 cbi PORTD, 7
    	 ldi temp2, 0x09
    
    Schleife2:              ; Springt verzögert zur Tasterabfage zurück
         dec temp2
    	 brne Schleife2
    	 rjmp Taster
    Wo liegt der nun der Fehler, das es im Simulator läuft und im Board nicht.

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    37
    Beiträge
    687
    Naja, ich habe keine Ahnung was für ein Takt du hast aber bei geschätzten 4MhZ wird deine Schleife in ca. 36 us abgearbeitet. Macht also ne Blinkfrequenz von ca.27kHz. Ich glaube das kannst Du ganz schlecht erkennen.

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    DIe LED soll wohl "blinken", solange die Taste gedrückt ist.
    Jetzt ist aber eine Schleife mit Zähler von 0x22 runter saumäßig kurz.

    Die schleife

    dec temp2
    brne schleife

    brauch 3 Zyklen, also insgsamt 3 mal 0x22 = dez. 102 Zyklen.
    Bei 8 MHZ sind das ein paar zerquetsche µS

    Da wird nix zu sehen sein.

    Du mußt einen größeren Zähler nehmen (r24 + r25) und ein bißchen mehr reinladen.


    EDIT: oops, da war schon einer. Naja, wenn wir zu zweit sind, glaubt er es uns vielleicht eher
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    24.01.2007
    Beiträge
    17
    AAAAAAAAAAAAAAAAh!

    Hatte mir schon sowas gedacht, nur nicht so extrem.
    Weil beim Simulator steht 4 MHZ und auf den BORD ist eine 8 MHZ Quarz.

    Ich she schon ihr werdet noch einige Fragen von ertragen müssen.

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    37
    Beiträge
    687
    Mit Alt+O kannst Du die Taktfrequenz im Simulator ändern

Berechtigungen

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