Hallo zusammen, ich hab da mal ne Frage als Anfgänger. Ich hab ein kleines Projekt mit 12 digitalen Ausgängen und einem ADC Eingang, der zwischendurch gelesen werden soll. Ich verwende einen ATmega8-16PU, nen Pollin-Funk-Evaluationsboard bzw. ne eigene Platine wo quasi nur Strom + poti drauf ist (noch). Mein Problem: Ich verwende PortB als Ausgänge - klappt alles super. PortC.0 als ADC Eingang - funktioniert auch super. Die Software wertet den Eingang aus, verwendet den wert und setzt die Ausgänge entsprechend. Nun brauche ich aber noch weitere vier Ausgänge und dachte, ich nehm das PortC.1-4. Aber da passiert mal garnix, irgendwie. Selbst wenn ich eine Software mache, die via DDRC = (1<<PC1) | ... | (1<<PC4) die 1-4 als Ausgänge setzt und die dann einfach alle einschalte, passiert nix. Schreibfehler ausgeschlossen - funktioniert so mit den anderen Ports ja auch ;) Meine Vermutung: Trotz Forum-suche und Datenblatt gewälze (hat mich den ganzen Abend gekostet gestern), find ich nix, was da irgendwie auf den Ports liegen könnte und beim Auslieferungszustand da Probleme verursachen könnte. Hätte jemand von euch eine Idee, was ich bei dem Ding noch beachten muss, wenn ich PortC.1-4 als Ausgänge verwenden möchte? Besten Dank schonmal...
Hallo, poste doch mal deinen Code. Gruß Jannis
z.B.:
1 | #include <avr/io.h> |
2 | #include <stdlib.h> // utoa() |
3 | #include <string.h> // strlen() |
4 | #include <util/delay.h> |
5 | |
6 | int main(void) |
7 | {
|
8 | DDRC |= (1<<PC1); |
9 | PORTC = (1<<PC1); |
10 | |
11 | while(1); |
12 | }
|
Ist im Makefile der richtige µC ausgewählt?
Ah, ich vergaß: Ich benutze Win AVR, da hab ich die makefile von dem projekt mal exportiert. Oben steht drin:
1 | MCU = atmega8 |
Das hatte ich in den Einstellungen noch eingestellt, dass das ein atmega8 ist. Damit compiliere ich und mit avrdude schiebe ich das rüber auf den IC, weil ich irgendwie nicht die ISP mit dem WIN AVR bedienen kann?!
1 | avrdude -p atmega8 -c ponyser -P com1 -e -U flash:w:text1.hex |
klappt aber bisher auch ganz gut :)
Hallo, ich wiederhole mich nur ungerne, aber dein Code währe an dieser Stelle schon interresant, nachdem das Makefile ausgeschlossen werden kann. Gruß Jannis
Den quellcode den ich oben gepostet habe funktionierte schon nicht, deswegen fand ich's so merkwürdig. Darum gings mir ja ;) jetzt allerdings (alles abstopseln, ausmachen wieder neu aufbauen, nochmal kompilieren und messen) funktionierts ... Weiß Gott warum :D Wahrscheinlich ein pebkac.... ;) Daraufhin hab ich das in meinem Projekt nochmal probiert (ist ja quasi fast gleich bishier ...) und hab den fehler gefunden, dass ich in nem uint8_t ne 12 Bit Zahl verwende. Was jetzt noch nicht so der renner war, um ehrlich zu sein. Zwei unterschiedliche Probleme mit den selben Symthomen :D Trotzdem schönen Dank für die schnellen Antworten :)
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.