ok, wird jetzt etwas klarer
hast du schon mal versucht am PORTD, verschiedene Bitmuster auszugeben?
Ich spiele mit dem schrecklichen Gedanken, dass es sich um ein ESD-Schaden handeln könnte...
ok, wird jetzt etwas klarer
hast du schon mal versucht am PORTD, verschiedene Bitmuster auszugeben?
Ich spiele mit dem schrecklichen Gedanken, dass es sich um ein ESD-Schaden handeln könnte...
beide Controller sollen einen ESD-Schaden haben obwohl das Blinkprogramm Funktioniert?
Habe es grade aber getestet: Ergebnis: Der Port auf welchem die Enable-Leitung liegt funktioniert NICHT!
Leiter bringt ein Wechsel auf den PortB der RnMega2560, welcher geteset wurde auch nichts! Beim Beobachten mit den LEDs habe ich aber festgestellt das PortB.3 (Db4) PortB.7 (Rs) ständig High sind. Ist das Normal?
Gruß Sebasti
Hallo Sebasti,
dein ständiges Hin- und Hergespringe zwischen den Ports bringt nichts. Du kannst Probleme nicht mit der Stecknadel-im-Heu-Methode lösen.
Seit einer Woche hängst du an einem simplen Display.
Wenn du nicht langsam systematisch vorgehst, wird das nichts.
Wenn du an PortC ein Problem hast, dann schalt doch einfach JTAG aus?
Bisher hast du auch kein Programm gepostet, daß man mal einen Fehler finden könnte.
Vermutlich sind es nur ein paar Kleinigkeiten, vergessene Stackwerte, Print oder was auch immer.
Wie soll man dir da helfen?
Gruß, Michael
Hallo Michael,
auch ich finde sehr schlecht das ich es nach einer Woche & Hilfe immernoch nicht schaffe ein einfaches Display zum Laufen zu bringen. Ich springe zwischen den Ports hin und her damit ich einen Funktionierenden finde! Ich kann mich später darum kümmern warum ein bestimmter Port nicht Funktioniert. Am Anfang habe ich alles Systematisch durchprobiert bis ich zu dem Punkt kam hier zu schreiben. Seitdem ändere ich meinen Aufbau immer so wie Vorschläge kommen. Wie könnte ich es denn besser machen?
JTAG war nie ein Problem dar ich noch nicht am Port C dran war. Es ist nur nebenbei aufgefallen und ich habe JTAG inzwischen auch Deaktiviert.
Am Anfang hatte ich einige Programme gepostet und mir wurde noch nicht gesagt das ich irgendwo einen Fehler habe. Nur Ratschläge wie man es mal anders Probieren kann und für mich geschriebene Programme wurden gepostet. Diese habe ich dann einfach kopiert und übertragen. Ich wüsste nicht wo man da was falsch machen kann?
Aber da du drum gebeten hast findet du hier jetzt die aktuellen Programme.
RnMega 2560:
AtMega32:Code:$regfile = "m2560def.dat" $hwstack = 82 '80 $framesize = 68 ' 64 $swstack = 8 '44 $crystal = 16000000 Config Pinf.1 = Input 'Quarzfrequenz Config Pind.5 = Output Led Alias Portd.5 Led = 0 Config Lcdpin = Pin , Rs = Portb.7 , E = Portb.5 , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 Config Lcd = 16 * 4 Initlcd Stop Watchdog Do Cls Lcd "Hallo!!" Waitms 500 Loop End
Gruß SebastiCode:$regfile = "m32def.dat" $prog &HFF , &HC4 , &HD9 , &H00 ' generated. Take care that the chip supports all fuse bytes. $crystal = 1000000 $framesize = 64 $hwstack = 64 $swstack = 64 Ddrb = &B11111111 Config Lcdpin = Pin , Rs = Portd.7 , E = Portd.5 , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 Config Lcd = 16 * 4 Initlcd stop WATCHDOG Do Cls Lcd "Hallo!!" Wait 5 Loop End
Ps: ich bin auch nicht jeden Tag am Basteln. Pro Tag komme ich im Moment durchnittlich auf 25-30 Minuten, für mehr reicht die Zeit im Moment auch nicht.
Ach armer Sebasti
Ja, mit ESD muss man nicht unbedingt ganzen µC zerschossen haben.beide Controller sollen einen ESD-Schaden haben obwohl das Blinkprogramm Funktioniert?
Wie jetzt? Weder HIGH noch LOW?Der Port auf welchem die Enable-Leitung liegt funktioniert NICHT!
Hast du während das LCD-Programm lief, die LEDs beobachtet oder anderes Programm füer LEDs geschrieben?Beim Beobachten mit den LEDs habe ich aber festgestellt das PortB.3 (Db4) PortB.7 (Rs) ständig High sind. Ist das Normal?
1MHz Quarz?Code:$crystal = 1000000
Edit: Laut Schaltplan hast du ein 16MHz Quarz drin...
Geändert von 5Volt-Junkie (16.03.2011 um 18:44 Uhr)
Hallo Sheff,
gut, das nächste mal sollte ich noch ausführlicher schreiben.
Das musste ich leider feststellen. Bis jetzt war ich der Überzeugung das es nur ein geht/geht nicht gibt.Ja, mit ESD muss man nicht unbedingt ganzen µC zerschossen haben.beide Controller sollen einen ESD-Schaden haben obwohl das Blinkprogramm Funktioniert?
Mhhhh, jetzt funktioniert sie. Gestern war die LED immer aus (Low). Das deutet wohl auf einen WackelkontaktWie jetzt? Weder HIGH noch LOW?Der Port auf welchem die Enable-Leitung liegt funktioniert NICHT!
Ich habe das Display abgeklemmt und meine LEDs angeschlossen. Im Anhang findest du übrigens den Schaltplan der Platine.Hast du während das LCD-Programm lief, die LEDs beobachtet oder anderes Programm füer LEDs geschrieben?Beim Beobachten mit den LEDs habe ich aber festgestellt das PortB.3 (Db4) PortB.7 (Rs) ständig High sind. Ist das Normal?
Internen Quarz, 1 MHz. Im Screenshot von den Fusebites erkennt man das auch.1MHz Quarz?$crystal = 1000000
Mir ist noch etwas aufgefallen:
Und zwar benutze ich auf dem RnMega2560-Board immer folgendes Programm um sehen zu können ob das Teil noch funktioniert (Blinkprogramm):
Für den AtMega32 habe ich den Code bis auf die Einstellungen nicht verändert:Code:$prog , 255 , &B11011001 , 'Quarz an / Teiler aus / Jtag aus $regfile = "m2560def.dat" $crystal = 16000000 'Quarzfrequenz Config Pind.5 = Output Led Alias Portd.5 Const Cdebug = 1 $baud = 9600 Dim I As Long I = 0 Led = 0 Wait 1 Led = 1 Wait 1 Do I = I + 1 Led = 1 Waitms 50 Led = 0 Waitms 60 Loop Until I = 5 Do I = 0 Led = 0 Waitms 1100 Do Led = 0 Waitus 1 Led = 1 Waitus 9 I = I + 1 Loop Until I = 110000 Led = 1 Waitms 1100 Loop End End
Komicherweise braucht der AtMega32 c.a. 5x länger wie der RnMega um die Variable I auf den Wert von 110000 hochzuzählen. Das Blinken am Anfang passiert absulut synchron. Erst beim Hochzählen der Variable merkt man das der AtMega 32 wesentlich länger braucht als der RnMega2560. Ich wüsste nicht das der AtMega32 nicht zu hoch zählen kann?Code:$regfile = "m32def.dat" $prog &HFF , &HC4 , &HD9 , &H00 ' generated. Take care that the chip supports all fuse bytes. $crystal = 1000000 $framesize = 64 $hwstack = 64 $swstack = 64 Config Pind.1 = Output Led Alias Portd.1 Const Cdebug = 1 Dim I As long I = 0 Led = 0 Wait 1 Led = 1 Wait 1 Do I = I + 1 Led = 1 Waitms 50 Led = 0 Waitms 60 Loop Until I = 5 Do I = 0 Led = 0 Waitms 1100 Do Led = 0 Waitus 1 Led = 1 Waitus 9 I = I + 1 Loop Until I = 110000 Led = 1 Waitms 1100 Loop End
Kennt zufälligerweise jemand den Grund?
Und nochmal danke für eure Hilfe & Bemühungen.
Gruß Sebasti
Geändert von Sebasti (16.03.2011 um 19:48 Uhr)
Na gut, die laufen auf verschiedenen Frequenzen. Das hat also nichts mit den Typen zu tun.
Dies hier
Do
Led = 0
Waitus 1
Led = 1
Waitus 9
I = I + 1
Loop Until I = 110000
dauert bei 1 MHz
80 Takte * 110000 Durchläufen / 1.000.000 = 8,8 sec
bei 16MHz
229 * 110000 /16.000.000 = 1,57 sec
Waitus 1 alleine benötigt 2µs bei 1 MHz Takt, also schon doppelt so lange.
Wenn du wirklich nur einen Takt warten willst, setze ein NOP ein.
Lesezeichen