-
Thread
Problem mit 16F887
PIC16F690, daran hab ich nichts geändert, da ich keine Unterschiede im Datenblatt fand. Die Led an PORTC 0 leuchtet und manchmal geht sie mal ne Sekunde aus oder auch länger, manchmal blizt sie auch etwas auf. Die anderen Led sind immer aus. Hier noch der Code: [c]#include <pic.h> void delay10( char n); void main( void) { TRISC = 0; while(1) { PORTC = 1; delay10(100); PORTC = 2; delay10(100); PORTC = 4; delay10(100); PORTC = 8; delay10(100); } } void delay10( char n) {
-
Thread
Tasterschaltung in AVR
leuchtet auf. Du lässt die Taste los und nichts weiter passiert. Drückst du erneut auf die Taste so geht die LED wieder aus. Lässt du los passiert nichts weiter. Der erste Fall ist der einfachere. Man muss dort auch nichts entprellen [C] int main() { .... while( 1 ) { if( !( PORTB
//Ausgang definieren (LED) DDRC &= ~_BV(PC0); //Eingang definieren (Taster) PORTC|= _BV(PC0); //internen Pull-Up-Widerstand einschalten while(1){ if (bit_is_clear(PINC,0)) {PORTD &=~_BV(PD0);} //LED an else {PORTD |=
-
Thread
Expander: Digitaleingänge
, die leuchten soll. Außerdem habe ich oben beim define die Adresse auf 0x70 geändert. Allerdings geht das nur solange, bis [c]ret = i2c_start(Dev24C02+I2C_WRITE); // set device address and write mode[/c] ausgeführt wird. Die LED die nach dem init gesetzt ist, leuchtet, die nach dem oben genannten
Schleife auf. [c]//wait until transmission completed while(!(IWCR &(1<<TWINT)));[/c] danach gehts nicht mehr weiter
-
Thread
Nicht auffindbarer Fehler in Code für Roboter (Bascom)
Size = 30 , Bytematch = 13 Declare Sub Serial0charmatch() 'Config Outputs Config Portc.4 = Output 'M_left1a M_left1a Alias Portc.4 Config Portc.5 = Output 'M_left2a M_left2a Alias Portc.5 Config Portc.6
Size = 30 , Bytematch = 13 Declare Sub Serial0charmatch() 'Config Outputs Config Portc.4 = Output 'M_left1a M_left1a Alias Portc.4 Config Portc.5 = Output 'M_left2a M_left2a Alias Portc.5 Config Portc.6
-
Thread
SHT71 Assembler Code für Atmega8
Ich hab schon angefangen nur bin ich mir nicht sicher ob das funktionieren würde. Bzw. wies weiter geht^^. Zum Aufbau, ich hab zwischen Vdd und Data wie beschrieben einen 10kOhm Widerstand hingelötet. Ich habe nur noch nicht wirklich kapiert wie es weiter geht nach dem ich die Verbindung aufgebaut
und siehst dir an, was da rauskommt? > Ich habe nur noch nicht wirklich kapiert wie es weiter geht... Wie wäre es mit Reverse Engineering des C-Codes?
-
Thread
Problem mit Projekt eines Empfangsprogramms für Besucher
{ if (i == 2) { tasterFrei = 0; PORTC |= 0x02; _delay_ms(10); PORTB = 0x02; _delay_ms(100); PORTB = 0x00; delayLong(9);//dauer ansage nr.2 PORTC &= ~0x02; tasterFrei = 1; } else { if (i == 3) { tasterFrei = 0; PORTC |= 0x04; _delay_ms(10); PORTB = 0x04; _delay_ms(100); PORTB = 0x00; delayLong(18);//dauer ansage nr.3 PORTC &= ~0x04; delayLong(80); /
-
Thread
7-Segment-Anzeigen mit gemischten Ports
{ PORTB &= ~mask->portB; PORTB |= mask->portB; } if( mask->portC != 0 ) { PORTC &= ~mask->portC; PORTC |= mask->portC; } if( mask->portD != 0 ) { PORTD &= ~mask->portD; PORTD |= mask->portD; } } int main() { uint8_t e, z, h; ... for(
Einer von 9 bis 0, wie es sich gehört und stoppen. Ich verstehe es absolut nicht, wieso " >= " nicht geht.
-
Thread
MOS6581/Commodore SID Timing?
dabei mit einem Atmel AVR ATMega gesteuert. Adressleitungen sind an PORTA angeschlossen, Daten an PORTC und PORTD5 ist CLK und PORTD7 ist /CS. Reset ist an VCC angeschlossen und R/W an GND. Trotzdem kommt mit dem Testprogramm kein Ton raus. Der C-Source (nur provisorisch zum testen) sieht folgendermaßen
DDRC = 0xFF; // DATA DDRD |= (1 << PIND7); // CS PORTA = 0x00; PORTC = 0x00; PORTD |= (1 << PIND7); // Initialize with /CS on. } void writeMos(uint8_t addr, uint8_t data) { PORTA = addr; PORTC = data;
-
Thread
avr while-Schleife und Interrupt
<MS1_Takt)) == 0 ) { Messschieber_gefunden = 1; } _delay_us(1); // so geht es ... // PORTC |= 1<<PC1; // und so auch ... } } [/c] Wie man an den Kommentaren erkennen kann, möchte ich eine Messschieberanzeige auf ein LCD übertragen. Nach dem Start des Controllers
'delay' in die while-Schleife einfüge? Dann geht's ja auch.
-
Thread
externer Interrupt (PCINT1) atmega88 - Sprung nach 0x0000
PinChange-Interrupts PCINT8..15 zuständig ist. Es gibt drei PinChange-'Blöcke': PortB mit PCINT0..7 PortC mit PCINT8..15 PortD mit PCINT16..23 PortB ist Block 0, PortC ist 1 und PortD ist 2. Und dementsprechend ist auch die Bezeichnung der Register. Alles mit 0 gehört zu PortB. Und der Pin mit PCINT1
schrieb im Beitrag #1819690: > Es gibt drei PinChange-'Blöcke': > > PortB mit PCINT0..7 > > PortC mit PCINT8..15 > > PortD mit PCINT16..23 Danke nochmal!!!
-
Thread
10 Kanal Phasenanschnitt
= (1 << CS21); //Start timer for(i = 0; i < 5; i++) { if(lamp_state[i] == 0) { PORTC |= (1 << i); //lampstate = 0 => on all the time } else { PORTC &= ~(1 << i); } } } [/c] Und die Timer ISR, da wo der eigentliche Spaß passiert : [c] ISR(TIMER2_OVF_vect
läuft mit 8mhz. Falls du ein paar Zahlen nachrechnen möchtest. Und PORTC geht zu den Optokopplern für die Triacs. Der Rest müsste sich eigentlich erschließen. Ich fahr jetzt erstmal in Urlaub. Gruß Sebastian
-
Thread
Port-Informationen mittel Struktur verarbeiten
Beispiel habe ich gesucht ! Danke. Das mit dem mehr an Code/Takten war mir schon klar, doch mir gehts gehts vorerst um den Komfort mit dem Funktionsaufruf innerhalb der Funktion direkt auf die richtigen Ports zuzugreifen. Die #defines in deinem ersten Beispiel würden bei Verwendung einer Funktion
Nur das man dann "richtig" zugreifen kann. Könntest Du bitte erklären wieso das mit defines nicht geht, oder wenn Du meinst, das es geht, was ist dann der Vorteil?
-
Thread
Probleme Controller für die WordClock zu programmieren
Code dazu: int main(){ DDRD=0xff; PORTD=0xff; DDRB=0xff; PORTB=0xff; DDRC=0xff; PORTC=0xff; } Wie gesagt sind nur PC6, PC5, PC4 und PB2 tatsächlich auf 5V und der Rest bei 1,4V. grüße
funktionieren. Meinst du mit weglaufen des Controllers, dass er nicht gegen Versorgungsspannung geht? Kann das an einem Kaputten Baustein, oder an einem Kurzschluss auf der Platine liegen? Danke für eure Hilfe!
-
Thread
Einen allgemeinen Namen für alle PORTś definieren?
Hallo, meine Frage steht eigentlich schon im Titel. Kann man eigentlich für alle Ports (PORTA, PORTB, PORTC.....) einen und denselben namen definieren z.B. OUT. Wenn ja wie? Wäre sehr dankbar. So funktionierts auf jedenfall nicht: #define OUT PORTA #define OUT PORTB #define OUT PORTC while (1
Alex L. schrieb im Beitrag #1810943: > Kann man eigentlich > für alle Ports (PORTA, PORTB, PORTC.....) einen und denselben namen > definieren z.B. OUT. Wenn ja wie? Das geht nicht.
-
Thread
Kann man das besser schreiben?
unsigned char geht natürlich auch nicht für 32bit-Zahlen.
@ Peter : Geht leider nichtmehr... hab wohl nicht ordentlcih geplant und auch schon alles verlötet... s. Bild
-
Thread
High-Pin nur 0.6V
Hallo, ich habe ein Atmega16. Der Code sieht so aus: DDRC = 0xFF; PORTC = 0b11111111; Ich setze also alle Pins von PortC als Ausgänge und gebe eine 1 (5V) aus. Aber ich messe mit einem Voltmeter nur ca. 0.6V an den Ausgängen! Warum? Danke!
Sinne von 'du sperrst dich aus', kann da nichts. Entweder hat der Spuk dann ein Ende, oder er geht weiter.
-
Thread
Struct gut so?
nicht übertreiben) (PINC,0) ein. Sieht also so aus: [c] if ( (PINC,0) == 1) [/c] Das geht nicht! Guck ins AVR-GCC-Tutorial!!!! [c] if ( bit_is_set(PORTC,0) ) { //tue dies und das } [/c] PS: ich müsste nachlesen, wie bit_is_set definiert ist. So wird der Compiler es aber nicht
#1801901: > "spricht eigentlich was gegen leere Klammern? So wie das da: > #define LED_AN() sbi(PORTC, 1)" > > Mault den der Compiler rum? Nein? Dann wirds wohl gehen. Warum probierst Du´s nicht einfach aus ? Geht schneller als auf ne Antwort zu warten. :-)
-
Thread
RST bei Buffernutzung
DDRA |= (1<<PIN); char s[22]; unsigned char flag1,flag2,flag3,flag4; DDRC |= 0x01; PORTC |= 0x01; DDRB &= ~(1<<1); // Conf. pin for recv. control signal DDRD &= ~(1<<LIMIT_SWITCH_IN_PIN); // Conf. pin for limit switch DDRD &= ~(1<<LIMIT_SWITCH_OUT_PIN); // Conf
dann frage ich aber auch das "0-te" Bit ab.... Dann gehts.... Oder ich hab mal was von Bitmasken gesehen, ein Strukt, in dem 8 Bits sind. Diese kann ich dann über ein define nutzen, quasi ein eigenes sbit für die AVRs, die ja keine bitadressierung haben
-
Thread
Externes RAM am atmega128
Ich nehm einfach nen t89c51cc01. Bei dem weiss ich wie das geht. Danke für die Hilfe. Gruß M.H.
Das 6264-RAM hat 13 Adress-Leitungen (A0-A12). Diese werden an die zugehörigen Pins vom Latch und PortC angeschlossen; der Rest am AVR bleibt frei. Bis auf den A15-Pin (PC7), dieser kommt an CE2. Die Leitungen /RD und /WR werden auch an RAM und AVR angeschlossen. CE1 vom RAM kommt auf GND. Dann ist
-
Thread
NMEA von GPS-Modul mit PIC18f8520 auswerten, klappt nicht richtig.
comparators TRISB = 0x00; PORTB = 0x00; TRISE = 0x00; PORTE = 0x00; TRISC = 0x80; PORTC = 0x02; UART1_Init(4800); // Initialize UART module at 4800 bps Delay_ms(100); // Wait for UART module to stabilize while(1) { scratch = RCREG1;
in erster Linie nur 200 Zeichen gross ist, passiert dann alles mögliche > Hier noch mein Code, geht das auch schöner? Sicher. Wenn du dir angewöhnen würdest nicht dem schnellen Hack hinterherzulaufen, sondern wenigstens halbwegs vernünftiges Softwaredesign betreiben würdest. Dazu gehört auch,
-
Thread
IOs umbenennen
Ja das geht sogar sehr gut. Man braucht dazu ein Macro. Dann kann man die Portpins wie Bitvariablen ansprechen, also auf 0 oder 1 testen oder setzen. Hier eine Beispiel: http://www.mikrocontroller.net/attachment
PORT_A &PORTA, &DDRA, &PINA #define PORT_B &PORTB, &DDRB, &PINB #define PORT_C &PORTC, &DDRC, &PINC #define PORT_D &PORTD, &DDRD, &PIND Habe hier zugegebenrmassen nicht gross Kopfzerbrechen bereitet!
-
Thread
ASM oder C programmieren?
C oder gleich C++ damits in der entwicklung schneller geht. asm nimmt man im äußersten notfall noch, wenn es wirklich auf die letzte µs ankommt (wobei man da dann einfach ne andere hardware nimmt )
Natürlich enthält ein OS auf dem PC Assembler, aber das programmiert man ja nicht selber. Es geht ja hier um die Anwendungsprogrammierung und nicht um ein OS. Peter
-
Thread
Probleme mit 74HC273 als Porterweiterung
Der Code: [c] #include <avr/io.h> #include <avr/delay.h> #define LED0 PORTC |= (1 << PC5) #define LED1 PORTC |= (1 << PC4) #define LED2 PORTC |= (1 << PC3) #define LED3 PORTC |= (1 << PC2) #define LED4 PORTC |= (1 << PC1) #define LED5 PORTC |= (1 << PC0) #define LED6 PORTD |= (1 << PD5) #define LED7 PORTD |= (1 << PD4) #define LED8 PORTC |= (1 << PC5) #define LED9 PORTC |= (1 << PC4) #define LED10 PORTC |= (1 << PC3) #define LED11 PORTC |= (1 << PC2) #define LED12 PORTC |= (1 << PC1) #define LED13 PORTC |= (1 << PC0) #define
-
Thread
Timer-Interrupt und Delay
DoStep2 CPI step, 0x03 BREQ DoStep3 CPI step, 0x04 BREQ DoStep4 DoStep1: OUT PORTC, step RJMP Exit_TIMER0_Interrupt DoStep2: OUT PORTC, step RJMP Exit_TIMER0_Interrupt DoStep3: OUT PORTC, step OUT OCR1AH, DelayHigh ;Delaytime OUT OCR1AL, DelayLow RJMP Exit_TIMER0_Interrupt DoStep4: OUT PORTC, step OUT OCR1AH, NormalHigh ;Normaltime OUT OCR1AL, NormalLow LDI step, 0x00 RJMP Exit_TIMER0_Interrupt Exit_TIMER0_Interrupt: RETI /// Habe das auf das Wesentliche gekürzt
-
Thread
AtMega162 Portprobleme!
An der einen Stelle hat's geklappt an der anderen nicht . Wenn ich DDRC = 0b11111111; PORTC = 0b00000000; deklariere soll mit PORTC|=(1<<6); eine LED angehen . Allerdings geht PC1 und nicht PC 6 auf high ?! . Wieso ?! :( .
-
Thread
Lauflicht Problem mit 74hc595
Mein Code sieht jetzt so aus [c]#include <avr/io.h> #include <util/delay.h> #define DS_PORT PORTC #define DS_PIN 0 #define ST_CP_PORT PORTC #define ST_CP_PIN 1 #define SH_CP_PORT PORTC #define SH_CP_PIN 2 #define _BV64( bit ) ( 1ULL << (bit)) #define DS_low() DS_PORT&=~_BV64(DS_PIN
den alten Code kopiert -.- [c]#include <avr/io.h> #include <util/delay.h> #define DS_PORT PORTC #define DS_PIN 0 #define ST_CP_PORT PORTC #define ST_CP_PIN 1 #define SH_CP_PORT PORTC #define SH_CP_PIN 2 #define _BV64( bit ) ( 1ULL << (bit)) #define DS_low() DS_PORT&=~_BV64(DS_PIN
-
Thread
Probleme mit SPI Übertragung (ATMega88 x2)
kommunizieren und mir dann ein Messergebnis über die serielle Schnittstelle vom Master ausgeben. Konkret geht es darum die interne Temperaturmessung etwas genauer zu betrachten. Momentan habe ich beide Controller über einen MAX232 mit 2 Schnittstellen verbunden. Dies soll aber momentan nur zum testen der
if(getByte() == 0x54) getTemp = 0x01; else sendZero = 0x01; } ISR(SPI_STC_vect){ //PORTC |= (1<<PC0); spiChar = SPDR; } void initUART( void ){ UCSR0B |= ( 1<<RXEN0 ) | ( 1<<TXEN0 ); UCSR0B |= ( 1<<RXCIE0 ); UCSR0C |= ( 1<<UCSZ00 ) | ( 1<<UCSZ01 ); UCSR0A |= ( 1<
-
Thread
Serielle Übertragung
was nicht heißt, dass es keines > gibt). Mit fehlt jedoch der ganze Code, z.B. um zu prüfen, dass PORTC > nirgendwo anders auftaucht, Hallo, nein PortC wird nur dort verwendet. > das Register „received“ bzw. ein Alias davon > nirgendwo anders verwendet wird .def temp = R16 .def received
from USART OUT PORTC, received POP temp ;Restore Status-Register OUT SREG, temp POP temp ;Retore temporary Variable RETI SerOut: LDI Temp, 31 SBIS UCSRA,UDRE RJMP
-
Thread
AVR-AtMega8 Bascom Probleme
regfile = "M8def.dat" $crystal = 1000000 $hwstack = 100 $swstack = 100 $framesize = 100 Config Portc.0 = Output Config Portc.1 = Output Config Portc.2 = Output Config Portc.3 = Output Portc.0 = 1 Portc.1 = 1 Portc.2 = 1 Portc.3 = 1 End [/code] Grundschaltung: http://www.kreatives-chaos.com
ist überall gleich. So um die 1V(bei 5V Eingangsspannung). Habe auch noch einen 2ten Mega8. Bei dem geht es auch nicht.
-
Thread
DC-Motor ansteuern
/* sende Zeichen */ return 0; } [/c] So versteh ich zumindest das Turtorial, jedoch gehts noch nicht. Der UART sendet dauerhaft 'S'. Hilfe!? Danke!
PC nicht den PWM-Wert eingeben (z.B. 145) sonden per Tastendruck nur erhöhen oder verringern. Das geht auch soweit. Jetzt möchte ich den aktuellen PWM-Wert des µC an den PC übertragen. Die Übertragung geht, jedoch bekomme ich die ASCII zu dezimal "wandlung" nicht hin.
-
Thread
programmieren funktioniert nicht
{ volatile uint16_t i; volatile uint16_t ii; //PORT C Output; DDRC = 0xFF; PORTC = 0xff; // Port C BitMuster 1111 1111 while(1) { for(ii=0; ii<4; ii++) { for(i=0;i<40000;i++); } PORTC =~ PORTC; // Port C invertieren } }
der Prommer zu schnell), hier hilft ein '-B 10' für den avrdude. Falls es dann noch immer nicht geht kann man weiter sehen. HTH
-
Thread
2x 7 Segment Anzeige - Multiplexen mit HF lässt Board ausgehen?
sevenseg_show_mp(int number); void main(void) { DDRD = 0xff; PORTD = 0xff; DDRC = 0xff; PORTC &= ~(1<<PC4); PORTC |= (1<<PC5); while(1) { sevenseg_show_mp(4); PORTC ^= (1<<PC4); PORTC ^= (1<<PC5); sevenseg_show_mp(5); PORTC ^= (1<<PC4); PORTC
Frank Thetank schrieb im Beitrag #1777878: > dann geht nach ca. ein bis drei Sekunden das komplette Board mitsamt ISP > einfach aus. Werd mal konkreter. Geht ein Reset? Welcher Strom fließt? Wird was warm? > Bei k < 500 geht aber alles ganz
-
Thread
2x 7 Segment Multiplexen mit ATmega32 - Grundlagenproblem
1k Widerstand => PC5). Den Code habe ich dann auf folgendes reduziert: [c] DDRC = 0xff; PORTC &= ~(1<<PC5); PORTC |= (1<<PC4); [/c] Leider geht die LED nicht. Was mache ich nun?
main(void) { int i = 0; int j = 0; DDRD = 0xff; PORTD = 0xff; DDRC = 0xff; PORTC &= ~(1<<PC4); PORTC |= (1<<PC5); while(1) { for (j = 0; j < 10; j++) { for (i = 0; i < 15000; i++) {} sevenseg_show(j); } PORTC ^= (1<<PC4); PORTC
-
Thread
Programmierung von ATmega8-16PU macht Probleme
ich während des Programmiervorgangs mit einer Krokoklemme den > Reset-PIN auf Masse ziehen oder geht da was kaputt? Das kannst du und es geht nix kaputt... leider nützt es aber auch nix. Der Reset geht beim Proggen ja nur kurz auf Low um den Vorgang einzuleiten. Dauerreset verhindert also das
Hi > DDRB = 0xff; > // Alle LEDs an > PORTC |= (1 << 0); /* PIN aktivieren */ Wenn du zu Ausgabe PortC nimmst, solltest du auch *DDRC* auf Ausgang setzen. MfG Spess
-
Thread
Hilfe beim Uhr programmieren
1000000 $baud = 19200 $hwstack = 32 $swstack = 10 $framesize = 40 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portb.4 , E = Portc.4 , Rs = Portc.5 Config Lcd = 16 * 2 Config Lcdbus = 4 Cursor Off Config Portb.0 = Output Config Portb.5 = Output Config Portb
ein neues an [pre] $regfile = "m8def.dat" $crystal = 1000000 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portb.4 , E = Portc.4 , Rs = Portc.5 Config Lcd = 16 * 2 Config Lcdbus = 4 Cursor Off Config Adc = Single , Prescaler = Auto Dim Messung As Word
-
Thread
C; AVR: Eingänge und Ausgänge setzen
; DDRC &= ~(0b00000010); PORTC |= (0x0b00000010); DDRD &= ~(0xFF); PORTD |= (0xFF) [/c] Ist dies korrekt? Bei Abfragen bekomme ich jedesmal Fehler, sprich, die Bits sind nicht so wie sie sein sollen.
/C] Wiederrum: siehe Tutorial deiner Wahl, ganz am Anfang wo es zum ersten mal ins Eingemachte geht. AVR-GCC-Tutorial
-
Thread
Unbekanntes lcd Display
deiner Initialisierung fehlt er Befehl 'Entry Mode Set'. Kannst du mir vielleicht sagen wie das geht? bix schrieb im Beitrag #1761660: > Vermutung (2): > Lcd_data sollte als "Alias Portc" definiert werden Danke; hatte ich nicht beachtet (kommt davon wenn man Code nicht selber schreibt), aber
code] $regfile "m32def.dat" $crystal = 8000000 Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portd.6 , Rs = Portd.7 Config Lcdbus = 4 Cls Locate 1 , 1 Lcd "Hallo Welt" [/code] Bascom muss irgendetwas noch über die Datenleitungen
-
Thread
PNP Transistor schaltet nicht
hwstack = 32 $swstack = 10 $framesize = 40 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Lcdbus = 4 Cursor Off Ddrb = &B00100000 Cls Locate 1 , 1 Lcd "Hallo Welt" Do Portb.5 = 1 Loop
geht trotzdem nicht.
-
Thread
TWI I2C Anfängerhilfe
welche folgen es hat steht im.... Datenblatt :-) Tipp: Besorge die einen I2C Sniffer! Speicheroszi geht zwar auch, ist aber sehr mühsam.
gibt ein Kapitel "Two Wire Serial Interface" > Dreimal darfst du raten, worum es in diesem Kapitel geht Schon klar... ich habe mir auch schon alles über die Kommunikation durchgelesen, aber den Part "Send START condition" braucht man denke ich nur um die Kommunikation einzuleiten, nicht aber für die
-
Thread
Wert eines Knopfes lesen
: [c] // PORTD2 und 3 als Eingang DDRD &= ~(1<<2); DDRD &= ~(1<<3); // PORTC0-3 als Ausgang DDRC |= (1<<0) | (1<<1) | (1<<2) | (1<<3); while(1 == 1) { if(bit_is_set(PIND_PIN, 2)) PORTC &= ~2; else PORTC |= 2; } [/c] Nun bleibt das LED2 immer an, egal
Pull-Ups im AVR? Ist es was internes am ATMega? Wenn ja, wäre es eine Idee zum testen, ob das Programm geht... Wie nutze ich die? Danke Luca Bertoncello
-
Thread
Probleme bei der Stueuerung über Taster!
Hier noch der Plan der Schaltung. PD4 geht auf RS vom Display und Interrupt des AD5932 auf PD6. Das ist im Plan noch falsch. Martin
ich diese schöne funktion am besten setzen? Wieso um pflanzen? sind doch dioden mit drin. Außerdem geht es jetzt leider nicht mehr. Würde ich auch nicht mehr so machen! Martin
-
Thread
EtherSex mit Pollin Net-IO - Portsteuerung und Abfrage über HTTP funzt nicht ?
Hier habe ich mal was damit gemacht. Parallel dazu habe ich noch die NamedPins benutzt, da geht das sofort. Die Checkboxen im IOControl reagierten bei mir auch ziemlich spät.
Mitmachen - ? Gern, wenn ich kapiert habe, wie es geht ...! Habe halt das Henne - Ei Problem. Grüße
-
Thread
For schleife verhält sich seltsam
DDRD, &PORTD, 1<<PD5, 0, 1, 0}, // 8 {&DDRD, &PORTD, 1<<PD4, 0, 1, 0}, // 9 {&DDRC, &PORTC, 1<<PC0, 1, 1, 3}, // a --4 {&DDRC, &PORTC, 1<<PC1, 1, 1, 7}, // b --8 {&DDRC, &PORTC, 1<<PC2, 1, 1, 5}, // c --6 {&DDRC, &PORTC, 1<<PC3, 0, 1, 0}, // d {&DDRC, &
>uint8_t pwmtable_8D[32] PROGMEM = Das musst du mit pgm_read_byte() auslesen. So geht es nicht DimValue = pwmtable_8D[j];
-
Thread
display geht an PortD und PortA, aber nicht an PortC
Hallo Leute, also ich hab hier ein Problem, dass ich beim besten Willen nicht verstehe. Ich hab ein Display wie im Tutorial angeschlossen.(http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD) Mit dem Beispielcode und den LCD-Routinen funktioniert das ganze einwandfrei. Wenn ich überall PORTD und DDRD zu PORTA und DDRA umändere und das LCD entsprechend anschließe funktioniert es auch. Wenn ich jedoch alles nach Port C transferiere, dann kommen nur die schwarzen Kästchen im LCD. Könnte mir wer sagen, an was das liegen könnte? Danke schon mal, michl
-
Thread
Wecker mit Solar und Ladeüberwachung bauen
parallel weiter und braucht dabei nur wenige µA. Nur einmal nachts während idealer Empfangsnbedingungen geht es automatisch in den Empfangsmodus zwecks Synchronisation. http://www.hkw-elektronik.de/shop/artikel/FUM-DCF.php Antennen gibt es dort auch für kleines Geld. Ich kann das nur empfehlen, damit
hwstack = 32 $swstack = 10 $framesize = 40 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Lcdbus = 4 Cursor Off Config Pinb.1 = Output Config Pinb.4 = Output Config Pinb.5 = Output Config Pinb.3
-
Thread
EA DOG-M 163 an ATMega32 in 4bit Modus
-> Pin C7 #define PIN_RS PC7 // LCD DB4-DB7 <--> PORTD Bit PD2-PD5 #define LCD_PORT PORTC #define LCD_DDR DDRC #define LCD_DB PC2 [/c]
beliebige Pins nehmen: http://www.mikrocontroller.net/attachment/30300/lcd_drv.zip Oder nimm SPI, geht auch über beliebige Pins. Peter
-
Thread
ATmega16: Timerinterrupt spinnt in Verbindung mit Sleep Modes
normal. Was habe ich übersehen? Vielen Dank für eure Hilfe. Johnny PS: An PortA und PortC hänge jeweils an den ersten 6 Bit LEDs, an PortD hängen 8 LEDs als "Debugausgabe".
zurückgesetzt wird, auch wenn ich im Datenblatt nichts dazu gefunden haben. Der oben zitierte Abschnitt geht mit einer Empfehlung weiter, wie in diesem Fall verfahren werden kann. Alternativ kannst Du ins Hauptprogramm testweise eine sehr kurze Warteschleife einbauen, um die 240 Wartezyklen zu verbraten (
-
Thread
Mit dem ATmega8 Text auf einen Drucker ausgeben klappt nicht.
DDRA = 0xFF; // Daten-Port DDRC |= (1<<STROBE_PIN) // Strobe-Port PORTC |= (1<<STROBE_PIN); for(i=0; i<strlen(text); ++i) { PORTA = text[i]; PORTC &= ~(1<<STROBE_PIN); _delay_ms(3); PORTC |= (1<<STROBE_PIN); } [/c] bitte nur als Anregung mitnehmen
DDRA = 0xFF; // Daten-Port > DDRC |= (1<<STROBE_PIN) // Strobe-Port > PORTC |= (1<<STROBE_PIN); > > for(i=0; i<strlen(text); ++i) > { > PORTA = text[i]; > PORTC &= ~(1<<STROBE_PIN); > _delay_ms(3); > PORTC |= (1<<STROBE_PIN); > } [/code] das wuerde