-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Problem mit PWM

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.06.2008
    Ort
    Wien
    Beiträge
    162

    Problem mit PWM

    Anzeige

    Hi Leute,

    Ich hoffe einer von euch kann mir mit meinem Problem helfen.
    Ich habe in meiner Schaltung einen AtMega128 verbaut und kann ihn auch ganz normal via PonyProg programmieren.
    Doch leider funktioniert das ganze nicht so wie es soll.
    Es kommt nämlich bei keinem Pin ein Ausgangssignal
    Achja die serielle Schnittstelle ist an USART1.

    MFG XBert
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken schematics.png  
    Angehängte Dateien Angehängte Dateien
    • Dateityp: c v1.c (8,0 KB, 19x aufgerufen)

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    48
    Beiträge
    524
    Hallo,

    hast du mal mit einem einfachen kleinen Programm die Ausgänge gesetzt? Versuch das mal, damit man den Fehler eingrenzen kann.
    Mir sind zwei Sachen aufgefallen.
    Code:
    uint16_t Pulslength[40]; // !!! // array for all delays
    ändere bitte in
    Code:
    volatile uint16_t Pulslength[40]; // !!! // array for all delays
    Code:
        TIMSK |= _BV(TOIE2) | _BV(TOIE1);
    Warum TOIE2, verschweigst du uns etwas? Timer2 wird nicht gestartet.

    Gruß

    Jens

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.06.2008
    Ort
    Wien
    Beiträge
    162
    Das einzige was ich verschwiegen habe ist, dass der Code komplett von hier ist, und nur ein paar kleine Änderungen vorgenommen wurden

    MFG

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    48
    Beiträge
    524
    Hallo,

    keine Ahnung warum das TOIE2 Bit gesetzt wird. Nimm es raus.
    Teste mal die Hardware mit einem kleinen Programm, dass nur die Ausgänge setzt.

    Gruß

    Jens

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.06.2008
    Ort
    Wien
    Beiträge
    162
    So ich hab jetzt mal das folgende compiliert und übertragen:
    Code:
    #include <stdlib.h> 
    #include <inttypes.h> 
    #include <avr/io.h> 
    
    int main(void){
    	DDRA = 0xFF;
    	DDRB = 0xFF; 
        DDRC = 0xFF; 
    	DDRD = 0xFF;
        DDRE = 0xFF;
    	DDRF = 0xFF;
    	
    	PORTA = 0xFF;
    	PORTB = 0xFF;
    	PORTC = 0xFF;
    	PORTD = 0xFF;
    	PORTE = 0xFF;
    	PORTF = 0xFF;
    	
    	while(1){
    	
    	}
    }
    Aber leider bekomm ich an keinem Ausgang einen Pegel von ca 5v

    Wo könnte das Problem sein??

    Ach ja was noch zu erwähnen ist: Hatte vergessen das Compability-Fuse nicht zu setzen, funktioniert aber trotzdem nicht


    MFG XBert

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    48
    Beiträge
    524
    Hallo,

    überprüfe bitte alle Versorgungsleitungen und die Resetverbindungen bei abgezogenem Programmieradapter gründlich. Auch die GND. Ich vermute einen Fehler in diesem Bereich. Bei den Fusebits den Brown out und Watchdog always on erst einmal deaktivieren. Woher kommen die 5V Versorgungsspannung.

    Beim Programm ist mir noch etwas eingefallen.
    Code:
    void setservo(byte index, byte value) 
    { 
       uint16_t wert; 
    
       wert=MINPULS+(MAXPULS-MINPULS)/256*value; 
        cli(); //begin of atomic section
       // callculate hightime 
       Pulslength[index<<1]=0-wert; 
        
       // sum of low and hightime for one servo is 2ms 
       Pulslength[(index<<1)+1]=0-(TIMER_MAXPULS-wert); 
        
       // 1 Servos give you 1*2ms=22ms total cycle time /!!! 
    
      //sei(); end of atomic section
    }
    Es können sonst sporadische Fehler in der Interruptroutine auftreten. Bei näherem Interesse such im Wiki bitte nach 'Interrupts' und/oder 'atomar'.

    Gruß

    Jens

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.06.2008
    Ort
    Wien
    Beiträge
    162
    Die Versorgungspannung kommt von einem Netzteil das 4.85V liefert
    Außerdem stecke ich die Schaltung nach dem Programmieren ab und verbinde sie erst dannach wieder mit dem Netzteil.

    Aber ich werd das ganze noch mal durchmessen

    MFG

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.06.2008
    Ort
    Wien
    Beiträge
    162
    Ach ja was mir noch aufgefallen ist, ist das die LED am eingang des MAX232 immer leuchtet auch wenn der Controller nur mit FF vollgeschrieben ist

    MFG

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    48
    Beiträge
    524
    Hallo,

    der Max mag Pullups im Eingang haben durch die die LED leuchtet. Sollte dann im Datenblatt stehen.
    Ich kann dir sonst leider nicht weiter helfen. Für mich sieht die Situation so aus. Das Programm ist richtig. Der Controller lässt sich beschreiben, d.h. der Takt ist io. Die Beschaltung ist geprüft und für korrekt befunden. Die Ausgänge geben keine Spannung aus. Da bleibt für mich nur die bittere Diagnose, dass der AtMega hin ist.
    Hast du wirklich die GND's genau geprüft. Mal eine LED mit Vorwiderstand an Plus und die GND's "abtasten". Und direkt die Füße am AtMega nehmen. Das und ein Fehler bei der Reset Beschaltung sind noch immer meine Favoriten.

    Daumen drückender Gruß

    Jens


    Edit: Du gibst beim compilieren ja den richtigen Controller an? Ich weiß allerdings auch nicht was beim falschen passieren würde.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.06.2008
    Ort
    Wien
    Beiträge
    162
    So ich meld mich mal wieder:

    Ich hab in den letzten Tagen mal herumprobiert und bin auf etwas sehr seltsames gestoßen.
    Irgendwie it am Resetpin durch irgendwas keine konstante Spannung sondern eine periodische Kurve.
    Aber was noch seltsamer ist, ist das wenn ich ein schlechtes netzteil verwende und es wiederholt aus- und einstecke,
    der Controller zu laufen beginnt und das Programm ausgeführt wird (jetzt blinken beide LEDs im 500ms Takt).
    Wenn ich allerdings ein Labornetzteil verwende dann kan ich sooft ein und ausstecken wie ich will. Es tut sich nichts.

    Ich hoffe es weiß jemand woran das liegen kann

    MFG XBert

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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