Hallo, bei meinem ersten uC Projekt mit einem Atmega32 habe ich Probleme, das erste Test-Programm zum laufen zu bringen. Der Aufbau befindet sich auf einem Lochraster-Board mit div. Peripherie. Aktuell ist jedoch nur die MCU und der Reste-Baustein MAX700 bestückt. Die MCU wird extern mit einem 8 MHz Quarz betrieben. Der erste Test zeigt: +5 Volt liegt stabil an, der Oszillator schwingt offensichtlich: an PIN 12 liegt eine entsprechende Schwingung an (ca. 4 V geteste mit Oszi), an PIN 9 (Reset) liegt HIGH-Pegel. Mit PonyProg habe ich die MCU geladen: Die Fuses sind so konfiguriert: OCDEN 1 JTAGEN 1 SPIEN 0 CKOPT 0 EESAVE 0 BOOTSZ1 0 BOOTSZ0 0 BOOTRST 1 BODLEVEL 0 BODEN 1 SUT1 1 SUT0 1 CKSEL3 1 CKSEL2 1 CKSEL1 1 CKSEL0 1 (0 = Häckchen, 1 = kein Häckchen) Folgendes kleine Programm sollte zeigen, dass dioe MCU acuh tatsächlich läuft: .INCLUDE "m32def.inc" .CSEG .ORG 0 jmp V_START ... V_START: ldi r16, 0b11111111 out DDRA, r16 ; PORTS A, C, D auf Ausgang schalten out DDRC, r16 out DDRD, r16 out PORTA, r16 ; PORTS A, C, D Highside Treiber ein out PORTC, r16 out PORTD, r16 loop: ldi r16, 0b01010101 out PINA, r16 out PINC, r16 out PIND, r16 ; alle PINS der Ports auf 0 schalten nop ldi r16, 0b10101010 out PINA, r16 out PINC, r16 out PIND, r16 jmp loop .end Die Erwartungshaltung ist, das die Ausgänge ein Rechtecksignal ausgeben, das zwischen benachbarten Ausgängen eines Ports invertiert ist. Leider sehe ich an allen Ausgängen der Ports A, C, D nur statisch HIGH-Pegel anliegen. Die Ausgänge habe ich testweise mit Widerständen einmal gegen +5V und einmal gegen Masse geschaltet - beides Mal leider ohne Erfolg. Woran könnte es liegen ? Was könnte ich noch falsch gemacht haben ? Vorraus schon vielen Dank für die Unterstützung! Viele Grüße, Anton
Hi > out PINA, r16 > out PINC, r16 > out PIND, r16 ; alle PINS der Ports auf 0 schalten ..... Nimm mal out Portx,r16 MfG Spess
Der Sinn von
1 | out PORTA, r16 ; PORTS A, C, D Highside Treiber ein |
2 | out PORTC, r16 |
3 | out PORTD, r16 |
erschließt sich mir übrigens nicht. Das ergäbe nur Sinn, wenn Du Inputs mit PullUps haben möchtest.
Das Atmel die IO-Zugriffsregister mit PINx und POUTx bezeichnet hat, könnte damit zu tun haben, das eines eher für IN, das andere eher für OUT gedacht ist :-) Oliver
Hi >Das Atmel die IO-Zugriffsregister mit PINx und POUTx bezeichnet hat, >könnte damit zu tun haben, das eines eher für IN, das andere eher für >OUT gedacht ist :-) Bei neueren AVRs kann man mit dem Schreiben einer 1 auf ein Pin-Bit das entsprechende Port-Pin togglen. MfG Spess
Hallo, danke für die schnelle Hilfe, das erwartete Ergebnis hat sich nach der Korrektur gezeigt. Grüße, Anton
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.