Hallo, allerseits! Ich habe ein Problem mit der Portkonfiguration bei einem Mega32. PORTC ist über DDRC=0x01111111 bis auf C7 als Ausgang konfiguriert. Schalte ich aber über PORTC.2=0; den Ausgang ab, so geht der Pegel dort zwar auf Low, scheint aber hochohmig zu werden (sagt zumindest ein Blick aufs Oszi und Anfassen mit der Hand). Ich nehme an, dass die Portfunktion durch irgendeine andere Einstellung überlagert wird, ich meine aber, schon so ziemlich alles ausgeschaltet zu haben. Hier ein Auszug aus meiner Konfigurationsdatei: TCCR0=0; OCR0=0; TCCR2=0; TCNT2=0; TWCR=0; MCUCR=2; MCUCSR=0; OCR2=0; ASSR=0; OCR1AH, AL, BH, BL = 0 DDRD=0x10110000; PORTD=0x10000000; DDRA=0; PORTA=0; SREG=|0x80; UCSRA=0; UCSRB=0x98; UCSRC=0x86; UBRRH=0; UBRRL=3; ACSR=0x80; SFIOR=0; ADMUX=0; ADCSRA=0x87; DDRB=0x00011111; TIMSK=0x04; TCCR1A=0; TCCR1B=0; GICR=0x40; Hat jemand eine Idee, warum hier insbesondere bei PC2 das Durchschalten auf Masse nicht sauber funktioniert? Öffne ich ein neues Projekt und lasse mir vom Codewizard das Programm generieren, geht es. Kopiere ich aber die Initialisierungszeilen von dem Programm in meinen ursprünglichen Quelltext, geht es wieder nicht mehr. Ich nehme an, es liegt an den Projekteinstellungen. Aber welche könnten das sein?!? Vielen Dank für Eure Hilfe! Gruß KMT
Hi ich würde mal stark tippen das du das JTAG-Interface nicht deaktiviert hast (über Fuse-Bits). Matthias
Irgendsowas in der Richtung hatte ich auch im Verdacht. Habe gerade mal die Fuse Bits ausgelesen. Raus kam Folgendes: CKSEL0=1 CKSEL1=1 CKSEL2=1 CKSEL3=1 SUT0=1 SUT1=1 BODEN=1 BODLEVEL=1 BOOTRST=1 BOOTSZ0=1 BOOTSZ1=1 EESAVE=1 CKOPT=1 JTAGEN=1 OCDEN=1 Wie sollten die Fuse Bits denn sinnvollerweise stehen? Habe einen externen Quarzoszillator mit 7,3728 MHz und Programmiere über ISP direkt in der Schaltung mit einem STK500. Compiler ist Codevision C. Vielen Dank nochmals für die Mithilfe! Gruß KMT
Hi das die Fusebits so stehen kann ich mir fast nicht vorstellen. Wären ja alle 1. Wie die richtig zu stehen haben kannst du dem Datenblatt entnehmen. JTAG muß auf jeden Fall ausgeschaltet sein. Wenn du eh mit dem AVRStudio programmierst hast du da ja eine schöne Übersicht in der du alle Optionen aktivieren und deaktivieren kannst. Da brauchst du dich noch nicht mal mit den einzelnen Bits auseinandersetzen. Matthias
Habe nochmal nachgeschaut; das Problem besteht nicht nur auf PINC.2, sondern auch bei einigen Pins von PortD, z.B. PORTD.7. Im eingeschalteten Zustand kein Problem, im Ausgeschalteten Zustand (PORTD.7=0) wird der Portpin hochohmig... Habe das JTAGEN-FuseBit abgeschaltet, das brachte aber (logischerweise) auf PORTD.7 keine Besserung. Hat jemand noch eine Idee? Gruß Kai Markus
Hat sich soeben erledigt; Doofheit vor der Tastatur war mal wieder der bestimmende Faktor. Ich hatte in der Initialisierung das Register DDRD so gesetzt: DDRD=0x10110000; Das interpretiert Codevision aber nicht als Binär-, sondern als Hexadezimalzahl.Damit war PORT D7 als Eingang geschaltet, und ich habe mit PORTD.7=1 bzw. 0 immer nur den Pull-Up-Widerstand ein- und ausgeschaltet... Gebe ich stattdessen ein: DDRD=0xB0; läuft alles wunderbar. Vielen Dank für Eure Mithilfe! Gruß KMT
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.