loetstelle.net
Lötstelle Userforum
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

ATMega48 steuert nur einen Teil der Pins richtig [gelöst]
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    loetstelle.net Foren-Übersicht -> Mikrocontroller
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Mister Red



Anmeldungsdatum: 22.03.2009
Beiträge: 18

BeitragVerfasst am: Sa 26.Jun 2010 14:30:03    Titel: ATMega48 steuert nur einen Teil der Pins richtig [gelöst] Bauteile finden Antworten mit Zitat

Hallo Forumsmitglieder,

nachdem ich vor einiger Zeit hier, mit großer Hilfe insbesondere von Gerold, in die Welt der Mikrocontroller reinschnuppern konnte, fragte mich mein Vater vor kurzem ob ich ihm da nicht auch mal helfen könne.

Er wollte für seine Modelleisenbahn ein Kirmeskarussell beleuchtet haben. Die entsprechenden LEDs sollen dabei blinken.

Nachdem wir die Blinkabfolge sowie Farben usw. geklärt hatten habe ich folgendes Programm dazu auf einen ATMEGA48 übertragen:

Code:

$regfile = "m48def.dat"
$crystal = 1000000
$hwstack = 100
$swstack = 100
$framesize = 100



G1 Alias Portd.3
Config G1 = Output
G2 Alias Portd.4
Config G2 = Output
G3 Alias Portb.6
Config G3 = Output
G4 Alias Portb.7
Config G4 = Output
G5 Alias Portd.5
Config G5 = Output
G6 Alias Portd.6
Config G6 = Output

B1 Alias Portb.3
Config B1 = Output
B2 Alias Portb.2
Config B2 = Output

G1g2 Alias Portc.5
Config G1g2 = Output
G2g3 Alias Portd.2
Config G2g3 = Output
G3g4 Alias Portd.0
Config G3g4 = Output
G4g1 Alias Portd.1
Config G4g1 = Output

W11 Alias Portc.0
Config W11 = Output
W22 Alias Portb.5
Config W22 = Output
W33 Alias Portb.4
Config W33 = Output

Gr1 Alias Portb.1
Config Gr1 = Output
Gr2 Alias Portb.0
Config Gr2 = Output
Gr3 Alias Portd.7
Config Gr3 = Output

R11 Alias Portc.1
Config R11 = Output
R22 Alias Portc.2
Config R22 = Output
R33 Alias Portc.3
Config R33 = Output
R44 Alias Portc.4
Config R44 = Output

Do

G2 = 0
G3 = 0
G4 = 0
G5 = 0
G6 = 0
B2 = 0
G2g3 = 0
G3g4 = 0
G4g1 = 0
W11 = 0
W33 = 0
Gr3 = 0
R11 = 0
R22 = 0
R44 = 0
G1 = 1
Gr1 = 1
Gr2 = 1
G1g2 = 1
R33 = 1
W22 = 1
B1 = 1

Waitms 36
W22 = 0
W33 = 1

Waitms 22
B1 = 0
B2 = 1

Waitms 22
G1 = 0
G2 = 1

Waitms 10
R33 = 0
R44 = 1

Waitms 56
W33 = 0
W11 = 1

Waitms 30
B2 = 0
B1 = 1

Waitms 24
G2 = 0
G3 = 1

Waitms 20
G1g2 = 0
G2g3 = 1
R44 = 0
R11 = 1
W11 = 0
W22 = 1

Waitms 60
Gr1 = 0
Gr2 = 0
Gr3 = 1

Waitms 84
B1 = 0
B2 = 1

Waitms 29
W22 = 0
W33 = 1

Waitms 7
G3 = 0
G4 = 1

Waitms 33
R11 = 0
R22 = 1

Waitms 22
B2 = 0
B1 = 1

Waitms 14
W33 = 0
W11 = 1

Waitms 54
G4 = 0
G5 = 1

Waitms 40
G2g3 = 0
G3g4 = 1
R22 = 0
R33 = 1
W11 = 0
W22 = 1
B1 = 0
B2 = 1

Waitms 80
Gr3 = 0
Gr1 = 1

Waitms 60
G5 = 0
G6 = 1

Waitms 73
W22 = 0
W33 = 1

Waitms 15
B2 = 0
B1 = 1

Waitms 82
R33 = 0
R44 = 1

Waitms 96
W33 = 0
W11 = 1

Waitms 30
B1 = 0
B2 = 1

Waitms 44
G3g4 = 0
G4g1 = 1
R44 = 0
R11 = 1
W11 = 0
W22 = 1

Waitms 30
Gr1 = 0

Waitms 14
B2 = 0
B1 = 1

Waitms 29
W22 = 0
W33 = 1

Waitms 37
R11 = 0
R22 = 1

Waitms 42
B1 = 0
B2 = 1

Waitms 8
G6 = 0

Waitms 6
W33 = 0
W11 = 1

Waitms 74

Loop

End



Die Übertragung, mittels des selbstgebauten Programmers nach Gerolds Bauanleitung, verlief fehlerfrei.
Anschliessend wollte ich die Funktionsfähigkeit auf einem Steckbrett testen!
Hierbei zeigte sich, dass jedoch nur ein Teil der Pins wie geplant funktioniert. Im Bild könnt ihr sehen, wie der Aufbau ( bitte nehmt es mir nicht übel, dass ich nicht jede LED inkl. Vorwiderstand für meinen Vater gezeichnet habe Wink ) sein soll. Ausserdem ein Photo des Testaufbaus und welche Pins die richtige Ausgabe (grün umrandet) und welche gar keine Ausgabe (rot umrandet) gaben. Ich habe alle Pins durchprobiert und es zeigte sich, dass der rechte Teil funktionierte, der linke nicht.

Meine Frage ist nun, woran kann das liegen? Eine Internetrecherche half mir nicht weiter und auch in den alten Themen des Forums bin ich nicht fündig geworden.
Habe ich etwas übersehen? Weiss jemand von Euch Rat?

Vielen Dank schonmal für eure Hilfe und ein schönes Wochenende...
Red


Zuletzt bearbeitet von Mister Red am So 03.Okt 2010 16:05:25, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sam



Anmeldungsdatum: 13.10.2008
Beiträge: 401

BeitragVerfasst am: Sa 26.Jun 2010 18:33:09    Titel: Bauteile finden Antworten mit Zitat

Hallo
Ich glaube nicht, dass das jetzt viel hilft, aber ich würde zur Sicherheit mal einen Pull-Up an den Resetpin machen.
Überprüfe auch mal alle Fuses.

Dein Programmierstil ist sehr ungewöhnlich. Das muss ich mir noch ein paar mal durchschauen. Aber soll ja nur 'ne kleine Bastelei werden.

Ich werde mal noch weiter suchen.

MfG Sam

_________________
„Zwei Dinge sind unendlich, das Universum und
die menschliche Dummheit, aber bei dem
Universum bin ich mir noch nicht ganz sicher.“
Albert Einstein
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Elektron



Anmeldungsdatum: 16.03.2008
Beiträge: 1049

BeitragVerfasst am: Sa 26.Jun 2010 19:03:45    Titel: Bauteile finden Antworten mit Zitat

Hallo Mister Red,

gewisse Pins sind bei den Atmel AVRs mit Sonderfunktionen belegt. Je nachdem, ob diese Sonderfunktionen gerade verwendet werden oder nicht, sind die Pins für die Sonderfunktionen reserviert und können daher nicht angesprochen werden. Abhilfe schaffst Du Dir indem Du herausfindet welche Pins nicht funktionieren. Vom entsprechenden Pin kann man über das Datenblatt auf die Sonderfunktion schließen und diese einfach deaktivieren - dann sollte es gehen.

edit:

Dein Aufbau schreit nach einem DEMUX Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
pcprofi



Anmeldungsdatum: 17.02.2008
Beiträge: 1459
Wohnort: Düren

BeitragVerfasst am: So 27.Jun 2010 01:13:25    Titel: Bauteile finden Antworten mit Zitat

Nur mal als Idee: Schau mal, ob in den Fuse-Bits JTAG eingeschaltet ist... Wäre eine typische Quelle für solche Fehler...

Gruß Rainer

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
caargoo



Anmeldungsdatum: 27.05.2007
Beiträge: 25
Wohnort: Ö - B

BeitragVerfasst am: So 27.Jun 2010 16:50:07    Titel: Bauteile finden Antworten mit Zitat

Hallo!

Über JTAG verfügt der M48 nicht!

Was für mich aus dem Plan nicht ersichtlich ist:
- ist der Resetpin beschalten
- Spannungsversorgung
- wieviele Led leuchten gleichzeitg

MfG
caargoo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mister Red



Anmeldungsdatum: 22.03.2009
Beiträge: 18

BeitragVerfasst am: So 04.Jul 2010 22:01:29    Titel: Bauteile finden Antworten mit Zitat

Hallo zusammen!

Vielen Dank für Eure Antworten. Entschuldigt bitte, ich habe nur am Wochenende die Möglichkeit hier etwas zu schreiben und auch zu basteln. Diesmal ist es etwas spät geworden.

Ich gebe unumwunden zu, dass der "Programmierstil" ungewöhnlich ist. Meine Kenntnisse hier sind minimal. Aber vielleicht ist es eine Möglichkeit etwas längere (und mit runden Werten versehene) Pausenzeiten zu nehmen? Die Pins, die blinkten, taten das schon recht fix.
Was ist DEMUX?

Kann denn der Chip kaputt sein?


Also JTAG gibts in der Tat nicht beim ATmega48, ich habe mal die Anzeige der Fusebits angehangen, vielleicht ist dort ja doch noch eine Fehlerquelle.

Einen Pull-up an den Resetpin habe ich so verstanden, den Pin PC6 am Plus der Batterie anzuschliessen, was leider keine Lösung brachte.

Die Pins, die nicht funktionieren sind:
PD0 PD1 PD2 PD3 PD4
PC0 PC1 PC2 PC3 PC4 PC5

Es funktionieren
PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7
PD5 PD6 PD7

Ich habe mal in folgendem Datasheet nach Pinbelegungen gesucht, aber nichts gefunden, geschweige denn, wie man die Belegung entfernt.
http://www.alldatasheet.com/datasheet-pdf/pdf/83740/ATMEL/ATMEGA48.html

Ich ging davon aus, das bei einem neuen Chip nichts programmiert sei.

Die LEDs sind Low current und es leuchten immer nur ein Teil gleichzeitig. Bei meinem Test habe ich aber auch nur die, die man auf dem Bild sieht benutzt. Stromquelle sind erstmal 2 Micro Batterien, wie das ganze auf die Modellbahnanlage soll weiss ich noch nicht.

Ich hoffe ich konnte alle Fragen ausreichend beantworten, so dass sich noch eine Lösung findet!

Viele Grüße und einen schönen Restsonntag

Red
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
pcprofi



Anmeldungsdatum: 17.02.2008
Beiträge: 1459
Wohnort: Düren

BeitragVerfasst am: Mo 05.Jul 2010 16:57:01    Titel: Bauteile finden Antworten mit Zitat

Ich habe jetzt noch nicht in den Code reingeschaut - aber was mich stört, ist, das nur der "obere" Teil der Pins nicht funktioniert.... Bei einem Defekt würde ich spontan davon ausgehen, dass entweder einzelne Pins oder ein ganzer Port ausfallen - beides hier nicht...

Bist du sicher, dass Avcc korrekt mit VCC verbunden ist? Nicht verpolt? (Achtung - Pins verdreht!)

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mister Red



Anmeldungsdatum: 22.03.2009
Beiträge: 18

BeitragVerfasst am: Fr 09.Jul 2010 23:18:27    Titel: Bauteile finden Antworten mit Zitat

Hallo pcprofi,

das hätte ich auch gedacht, dass dann der ganze Chip nicht mehr macht.

Also ich habe das ganze nochmal an anderer Stelle am Steckbrett aufgebaut (Aufbau wie oben auf dem Bild) und alle Pins überprüft. Es ist keiner verdreht und auch sonst ließen sich keine Fehler finden.

Ich kann mir schwer vorstellen, dass es am "Code" liegen kann. Mangels besseren Programmierstils habe ich alle Pins nach dem gleichen Muster programmiert.


Irgendwie weiss ich nicht, woran das liegen kann.
Vielleicht hat ja noch jemand eine Idee! In jedem Fall danke schonmal für Eure Tipps!

Viele Grüße
Red
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektron



Anmeldungsdatum: 16.03.2008
Beiträge: 1049

BeitragVerfasst am: Sa 10.Jul 2010 11:53:05    Titel: Bauteile finden Antworten mit Zitat

Hast du einen Austauschcontroller zur Hand? Manchmal gibt es Fehler die will man sich nicht erklären, und man kann sich so sehr viel Zeit sparen Wink Vielleicht liegt es ja wirklich am Controller selbst. Das ist zwar bei einem neuen Controller nicht wahrscheinlich, aber dennoch möglich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mister Red



Anmeldungsdatum: 22.03.2009
Beiträge: 18

BeitragVerfasst am: Sa 10.Jul 2010 18:58:51    Titel: Bauteile finden Antworten mit Zitat

Hallo Elektron,

danke für den Hinsweis! Ich habe noch einen ATmega88V gehabt, den ich heute getestet habe. Bei der Übertragung gab es wieder keine Fehlermeldung, aber dieselben Pins funktionieren nicht!!!

Kann es doch am "Code" liegen? Oder könnte ein Fehler im Programmer vorliegen? Aber wieso gibt es dann keine Fehlermeldung?


Gruß

Red
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
caargoo



Anmeldungsdatum: 27.05.2007
Beiträge: 25
Wohnort: Ö - B

BeitragVerfasst am: So 11.Jul 2010 06:52:26    Titel: Bauteile finden Antworten mit Zitat

Hallo!

Zum ersten: Den Resetpin über 10k an Vcc

Sehr wahrscheinlich hast Du ein Problem mit den reservierten Wörtern
in Bascom.
Schau mal, ob in dem Bereich der nicht funktioniert Deine Leds
mit Alias "Rxx" angesprochen werden!
R0 bis R32 sind die Register des µC und in Bascom sind diese reserviert.
Also checken wie oben beschrieben, dann umbennen ( z.B. R11 in Led_a_11)
und es sollte funktionieren.

MfG
caargoo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hotzenplotz



Anmeldungsdatum: 14.03.2008
Beiträge: 2212
Wohnort: /sda3/home

BeitragVerfasst am: Mo 12.Jul 2010 21:36:35    Titel: Bauteile finden Antworten mit Zitat

@Mister Red

Ich habe vorhin noch einen ATMega88 gefunden und wollte das jetzt auch wissen. Basic kenne ich nicht und weiss auch nicht wie ich das kompillieren sollte, deswegen hat das ein Kumpel fuer mich gemacht. Am Programm habe ich bis auf die erste Zeile nichts geaendert. Also nur $regfile = "m48def.dat" in $regfile = "m88def.dat" geaendert.
Mit AVRDude in den ATMega88 geschoben, Standardfuses reichen und bei mir gehen alle Pins wie sie im Programm angegeben sind. Fuer mich natuerlich ein wahlloses Durcheinander, auch weil das STK500 nur einfarbige LEDs hat und ich die Ports nicht alle gleichzeitig abgreifen kann.

Die Software ist also in Ordnung.

Kleine Anmerkung. Bei den niedrigen Frequenzen kannst Du fuer die 3V auch einen normalen ATMega nehmen. Also ohne das V.

Wird also an Deiner Hardware liegen.

Auch weiss ich nicht wie Bascom "gesetzt" "nicht gesetzt" interpretiert. Also ist 1 nun gesetzt oder nicht. Deswegen hier nochmal die Settings.

Und im Anhang nochmal die Files fuer einen ATMega88

http://www.engbedded.com/fusecalc/

_________________
Lasst uns Spass haben...


Zuletzt bearbeitet von Hotzenplotz am Mo 12.Jul 2010 22:05:49, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hotzenplotz



Anmeldungsdatum: 14.03.2008
Beiträge: 2212
Wohnort: /sda3/home

BeitragVerfasst am: Mo 12.Jul 2010 22:03:47    Titel: Bauteile finden Antworten mit Zitat

Und um Compilerfehler auch noch auszuschliessen, hier noch die Files fuer Deinen m48
_________________
Lasst uns Spass haben...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mister Red



Anmeldungsdatum: 22.03.2009
Beiträge: 18

BeitragVerfasst am: So 18.Jul 2010 21:57:04    Titel: Bauteile finden Antworten mit Zitat

Guten Abend zusammen!

Leider habe ich an diesem Wochenende nicht soviel Zeit gehabt um alles zu testen, unsere Pfadfindergruppe hat ihr Sommerlager angetreten und ich habe mich bereit erklärt das Material zu transportieren.

@cargoo Ein Umbenennen der betroffenen Pins hat sie leider nicht zum blinken bringen können.

@ Hotzenplotz Vielen Dank für deine Mithilfe. Nun bin ich wenigstens beruhigt, das die "Programmierung" zumindest keine Fehler aufweist. Das hätte mich auch sehr gewundert, denn alle Pins wurden ja gleich "programmiert". Was mich dagegen beunruhigt, ist die Tatsache, das der Fehler dann ja in der Hardware liegen muss.
Mich verwundert, dass Bascom dann keine Fehler angezeigt hat. Sollte es da nicht beim Übertragen meckern, wenn etwas nicht richtig angeschlossen ist oder der Chip defekt ist?
Ich werde in jedem nächstes Wochenende einmal deine compilierte Version ausprobieren.

Bis dahin wünsche ich Euch eine erfolgreiche Woche
und noch einen schönen Restsonntag!

Gruß

Red
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektron



Anmeldungsdatum: 16.03.2008
Beiträge: 1049

BeitragVerfasst am: Mo 19.Jul 2010 10:12:52    Titel: Bauteile finden Antworten mit Zitat

Guck doch nochmal, ob du deine LEDs richtig herum eingelötet hast. Du kannst das daran erkennen, dass Minus beim "Kelch" liegt (du weißt, was ich meine, im inneren des transparenten Gehäusekopfes).
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Anzeige






Verfasst am: Heute 08:03:39    Titel: Bauteile finden

Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    loetstelle.net Foren-Übersicht -> Mikrocontroller Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen


Powered by phpBB 2.x © 2001, 2002 phpBB Group

Sie sind Besucher Nr. 1201833
©opyright by Markus Vohburger 2005 All Rights reserved