Hallo ich habe gerade alle PORTS mmit PORTx = 0xFF; auf HIGH geschaltet aber merkwürdigerweise macht der microcontroller (Atmega 16 das nicht an jedem I/O der PORts... WO ran kann dies liegen?
Hast du auch das entsprechende Datenrichtungsregister DDRx beschrieben? Das muss als Ausgang, also 1 gesetzt werden. Wenn du zb in PortB alle Pins auf 1 setzen willst machst du das folgendermaßen:
1 | ldi r16,0xff |
2 | out DDRB,r16 |
3 | out PortB,r16 |
MfG Chaos
Ja die Datenrtichtung habe ich festgelegt und das Abschalten der Jatg Fuses bringt keinen unterschied... es sieht sogar so aus das z.B PORTC 1 immer hin und her Springt... zwischen 0 und 3.5V
>Ja die Datenrtichtung habe ich festgelegt und das Abschalten der Jatg >Fuses bringt keinen unterschied... es sieht sogar so aus das z.B PORTC 1 >immer hin und her Springt... zwischen 0 und 3.5V Programm zeigen.
Ja auf PortC liegt allerdings JTAG. Zumindest auf nem Teil von PortC... Mit welcher Spannung versorgst du dein µC? Womit hast du die schwankende Spannung am PortC1 gemessen? Wenn du ihn mit 5V versorgst, ist das ungewöhnlihc, das am Port nur 3,5 ankommen...
#include <avr/io.h> int main(void) { DDRA = 0xFF; DDRB = 0xFF; DDRC = 0xFF; DDRD = 0xFF; while(1) { PORTD = 0xFF; PORTA = 0xFF; PORTB= 0xFF; PORTC = 0xFF; } }
Mit C kenn ich mich zwar fast überhaupt nicht aus, aber fehlt da nicht ne schließende geschweifte Klammer nach der Definition der DDRx?
j. t. schrieb: > aber fehlt da nicht > ne schließende geschweifte Klammer nach der Definition der DDRx? Nee. Da fehlt nichts. 10 Zeilen Programm. Da können natürlich 10 Fehler drin stecken. Ich sehe aber keinen. Das liegt nicht am Programm. mfg.
Naja die erste klammer öffnet die PRogrammfunktion und öffnet den INhalt der Endlosschleife... die dritte schließt sie wieder und die vierte vervollständigt das PRogramm.... Ich kann es mir nicht erklären warum ich fast keinen Ausgang mehr auf High ziehen kann dann alle PORTS sind auf Ausgang geschaltet und dann auch eigentlich auf High gesetzt... zumindest was die Software angeht... -\_(';')_/-
Aber woran soll es liegen, denn das PRog ist meiner meinung nach auch korrekt und so viel ist es ja auch wirklich nicht !IIch kann nur noch sagen das MOPED steckt auf dem Pollinboard Evaluationboard 2.1 und wird über den AVRISP MKII angesprochen mehr ist da nicht dran...?
Hallo, was ist wenn while() nicht ausgeführt wird? Sind deine Bezeichner auch korrekt vordefiniert? Wenn du PORTA = ..., ausgibst und der Bezeichner PORTA ist nicht mit der richtigen Adresse verknüpft, kommt nichts an.
da ich zwischen diesen auswählen kann sobald ich einen gewissen Prozentsatz an Buchstabeneingeben habe gehe ich davon aus das diese korrekt vordefiniert sind... vermutlich in der avr/io.h... Ich kann mich auch irren aber bin auch für jede HIlfe dankbar !
Ja, das sollte irgendwo dort drin stehen, aber du könntest es zB falsch schreiben ...., Nicht zu hoch bewerten, war nur eine mögliche Idee ... Wenn du das auswählen kannst, sollte es auch passen.
Anfänger schrieb: > was ist wenn while() nicht ausgeführt wird? Das gibt Mecker vom Compiler, aber while(1) { ... } wird solange ausgeführt bis der Controller kaputt geht. j. t. schrieb: > Stehen die Bezeichener nicht "#include <avr/io.h>" hier drin? Nein da stehen die nicht drin. Die entsprechende Headerdatei wird automatisch included. Voraussetzung dafür ist natürlich, daß der richtige Controller eingestellt ist. da_Rula schrieb: > wird über den AVRISP MKII angesprochen mehr ist da nicht dran Und da muss auch die richtige Datei zum Flashen ausgewählt sein. Das wird nicht automatisch geändert. Da steht aktuell immer die zuletzt benutzte drin. Und wenn das vor zwei Jahren war. mfg.
Anfänger schrieb: > was ist wenn while() nicht ausgeführt wird? Hallo Anfänger, while(1) bedeutet: "führe die Schleife aus, solange die Zahl 1 nicht den Wert 0 besitzt". Dies ist ein häufiges Konstrukt (nicht nur in C) um eine Endlosschleife darzustellen. > Sind deine Bezeichner auch korrekt vordefiniert? Der C-Code ist für den AVR-GCC geschrieben. In der Headerdatei 'avr/io.h' werden die richtigen Definitionen für die gewählte MCU eingebunden. > Wenn du PORTA = ..., ausgibst und der Bezeichner PORTA ist nicht mit der > richtigen Adresse verknüpft, kommt nichts an. Damit hast du vollkommen recht. In 'avr/io.h' sind Bedingungen enthalten, die dazu führen, dass anhand der dem Compiler mitgeteilten MCU die richtigen Registerzuweisungen vorgenommen werden. Ich denke mal, der Fragesteller hat dem gcc einen falschen Wert für den Parameter mcu übergeben, oder der MC ist zerschossen oder falsch beschaltet.
:D Das ist auch ne gute Idee, hatte ich auch mal, hab das Programm in Controller geflasht, und es hat partout nicht das gemacht was es sollte. Ich war schon kurz vor dem Verzweifeln, hab dann noch einmal geflasht, dabei hab ich im Augenwinkel gesehen, das ich nicht in dem Pfad war, wo die "richtige" .hex steht. *gg Gaaaanz einfach Lösung, muss man aber auch erstmal draufkommen. Quasi so simpel, das man vor lauter Bäumen den Wald nicht sieht =) MfG Chaos
Einen Tanz im Bereich von 0 bis 3,5V habe ich nur erlebt, als ich die JTAG-Einstellung falsch gesetzt habe. Aber nur an den zugehörigen Anschlüssen. Stimmen Deine Einstellungen bezüglich des Prozessors? Das Programm sollte es eigentlich nicht sein. Was benutzt Du zum Programmieren (Entwicklungsumgebung) und mit wem sprichst Du (Prozessor)?
>wo die "richtige" .hex steht. Ja, falsche HEX Datei geflasht passt zu dem Problem. Oder JTAG Fuse doch irgendwie nicht deaktiviert.
Wenns an JTAG läge, dürften doch eigentlich nur die Pins 1-4, oder welche es auch immer genau sind weiß ich nich ausm Kopf, am PortC ganicht reagieren. Die anderen sollten ganz einfach auf 1 bzw 5V gehen. Die 3,5V klingen ein wenig nach nem Pin der schnell an und aus geschaltet wird, und dann mit nem DVM gemessen wird(Effektivwert).... Von daher sieht es tatsächlich nach falsch geflasht aus.
Beim Flashen aus dem Studio 4 habe ich des Öfteren mal Blödsinn gemacht. Der Flash-Dialog ist nämlich reichlich "nachtragend". Er merkt sich den zuletzt eingestellten Prozessor auch wenn mittlerweile ein anderer Zuhause ist. Auch änderte sich die eingestellte Hex-Datei (LW:Pfad:Name) nicht. Erschwerend kam hinzu, dass immer nur der erste Teil des Pfades angezeigt (sichtbar) wurde und bei der Länge der heutigen Wege selbst beim Wechsel des ganzen Projektes keine Änderung zu sehen war. Keine Ahnung wie die bei den aktuellen Studios ist.
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.