Hallo Forum,
ich beschäftige mich seit ein paar Tagen mit
Microcontroller-Programmierung.
Meine Ausstattung: STK500, ATMEGA16 und Bascom Demoversion.
Ich habe eine einfaches Programm geschrieben, das einfach nur alle ports
blinken lassen soll. Der ATMEGA16 war neu und ich habe auch schon einen
anderen probiert. Ich habe keine Fuses verändert.
Erst dachte ich das STK500 wäre kaputt und ich habe es zurückgeschickt.
Reichelt hat mir umgehend Ersatz (ein Neues) geschickt. Aber genau das
Gleiche passiert.
neben der üblichen CPU Definition und der Frequenzeinstellung habe ich
folgenden Code:
------------------------------------
config porta = output "Hier blinken nur 4 Ausgänge
config portb = output "Hier blinken alle außer Ausgang 7
config portc = output "Hier blinken alle 8 Ausgänge !!
config portd = output "Hier blinken nur 3 Ausgänge, einer ist immer an
do
porta = 255
portb = 255
portc = 255
portD = 255
waitms 50
porta = 0
portb = 0
portc = 0
portD = 0
waitms 50
loop
---------------------------------------
Ist der ATMEGA defekt, das STK500 oder was mache ich falsch? Laut
Datenblatt hat das Teil doch 32 Ein/Ausgänge. Warum kann ich nicht alle
als Ausgänge nutzen - heul...
Danke!!! Pauline
Nicht heulen, Schaltplan des STK500 studieren!
Der Atmega16 allein hat zwar 32 programmierbare I/O Leitungen. Aber
einige davon werden von dem dem STK500 Board benutzt, z.B. damit du den
Atmega seriell ansprechen kannst.
Zudem kannst du den Atmega16 überlasten, wenn du gleichzeitig alle
Ausgänge benutzt und z.B. auf 32 Pins über die LEDs je 20 mA Strom
gibst. Immer die Absolute Electrical Ratings im Datenblatt (ziemlich
hinten) beachten!
Wenn du ein Projekt hast, bei dem du viele I/O Leitungen brauchst, gibt
es meistens eine bessere Lösung als die I/O Leitungen direkt am AVR
anzuschliessen.
Viele Leitungen haben Sonderfunktionen, die man lieber nutzen will als
damit zu klimpern. Stichwort Multiplexing und Porterweiterung im
Tutorial.
Wenn du - wie du schreibst - keine Fuses geändert hast, wundert mich das
Ergebnis bei PORTC. Ab Werk ist die Sonderfunktion JTAG aktiv und da
dürften keine 8 blinkende LEDs zu sehen sein. Kenne mich mit BASCOM aber
nicht so aus, vielleicht dreht das da was.
Hi
Der einzige Port bei dem es bei einem neuen ATMega16 Probleme gibt, ist
Port C wenn die JTAG-Fuse nicht abgeschaltet ist.
Bist du sicher, das der ATMega im richtigen Sockel steckt?
MfG Spess
würde sich aber im falschen Sockel nicht flashen lassen, oder?
Das Stromargument zieht auch nicht, da im STK500 die LEDs über
Transistoren geschaltet sind.
Hi
>würde sich aber im falschen Sockel nicht flashen lassen, oder?
Also ich habe es nicht probiert, aber Programmierleitungen liegen auf
den gleichen Pins. Und der Strom könnte, wohl gemerkt könnte, sich der
AVR auch über Portpins holen. Habe ich schon gehabt.
MfG Spess
Hallo
sorry ich habe portc und Portb oben in meiner Beschreibung vertauscht.
portc liefert nur 7 Ausgänge und bei portb leuchtet alles.
Und ja, der atmega sitzt im richtigen Sockel (rechts im orangenen von
den LEDs gesehen).
Fuses habe ich keine geändert!
Ein- zwei hätten mich nicht gewundert. aber das an porta UND an porte
nur drei-vier Ausgänge gehen kann ich nicht glauben.
hängt es vielleicht mit der bascom Demo zusammen? Das Programm hat doch
nur 1% vom Speicherbedarf laut dem popup was da kommt...
Auf jeden Fall schon mal danke! Morgen schaue ich mal ob ich einen
Schaltplan vom stk500 finde und ich schaue mir den mal an!
lg pauline
Hi
>Und ja, der atmega sitzt im richtigen Sockel (rechts im orangenen von>den LEDs gesehen).
Der muss aber in den Linken (rot). Bezeichnung SCKT3100A3.
MfG Spess
Auf jedenfall muss man die JTag-fuse ändern, sonst funktionier port C
nicht.
Das manche ports nicht als Ausgang funktionieren, kann auch an Bascon
liegen, aber nicht an der abgespeckten Version sondern scheint ein
generelles problem zu sein.
Ich hatte mal Probleme mit PortB unter Bascom, habe dann das Programm
auf C umgeschrieben, und danach keine Probleme mehr.
MfG Turbotoni
Pauline schrieb:> Erst dachte ich das STK500 wäre kaputt und ich habe es zurückgeschickt.> Reichelt hat mir umgehend Ersatz (ein Neues) geschickt. Aber genau das> Gleiche passiert.
hihi...man hätte auch mit eine multimeter die spannung der nicht
leuchtenden pins messen können um einen defekt des stk500
auszuschließen... ;)
Turbotoni schrieb:> Auf jedenfall muss man die JTag-fuse ändern, sonst funktionier port C> nicht.
Quatsch... JTAG lässt sich per Software abschalten. Dazu muss man einem
Neuling nicht den Rat geben, ohne Wissen an den Fuses zu basteln.
>> Das manche ports nicht als Ausgang funktionieren, kann auch an Bascon> liegen,
Wieso??? - Wenn die richtige Definitionsdatei eingebunden ist, dann
sollte (darf) es da keine Probleme geben.
> aber nicht an der abgespeckten Version sondern scheint ein> generelles problem zu sein.>> Ich hatte mal Probleme mit PortB unter Bascom, habe dann das Programm> auf C umgeschrieben, und danach keine Probleme mehr.
Aha, das ist also der Beweis, dass Bascom nicht funktioniert?
Nein, ich bin kein Bascom-Verfechter, aber was Du da schreibst, glaube
ich nicht so einfach.
>> MfG Turbotoni
...
Nein, das liegt sicher nicht an Bascom.
Wahrscheinlich hängt es damit zusammen:
Zitat Pauline:
>neben der üblichen CPU Definition und der Frequenzeinstellung habe ich>folgenden Code:...
Die "üblichen" CPU-Definitionen hast Du nicht mitgeschickt. Vielleicht
sind sie etwas unüblich.
;-)
MfG Paul
Ähhhm...hallo!
Es ist wohl was dran, dass Frauen rechts und links gerne vertauschen.
Der ATMEGA war wie Spess53 im falschen "roten" Sockel.
Und kaum stecke ich ihn um - schon funktionierts :-) freu!
Vielen Dank an Euch!
LG Pauline