-
Thread
Lerne Assembler - brauche eure Hilfe
r17 #define rChannelByte r18 #define rBit1 r19 #define rBit2 r20 #define CHIPSEL_HIGH sbi PORTC, 0 #define CHIPSEL_LOW cbi PORTC, 0 #define DOUT_HIGH sbi PORTC, 1 #define DOUT_LOW cbi PORTC, 1 #define CLOCK_HIGH sbi PORTC, 2 #define CLOCK_LOW cbi PORTC, 2 ;--------------
: Ich initialisiere teile von PORTC als Ausgang. Im Kommentar steht was von SCK usw. Das sind die Leitungen an denen die ADC's hängen. Die sind momentan noch irrelevant.
-
Thread
Newbie braucht Hilfe: 9 Servos mit 1µs Auflösung ansteuern? (AVR)
Der ATmega2560 hat 12 PWMs mit 16Bit, damit gehts. Peter
Wieso ist das so? uint8_t geht doch von 0 bis 255, oder? LG Ernst
-
Thread
AX81 - ZX81 im AVR
Also Image auf Festplatte erstellt und dann einfach auf frisch formatierte SD Karte kopiert - geht (wenn die Karte als solche geht..). Peter
dort das Muster "176" schreibst, es muss aber 170 sein, damit es abwechselnd ist. - Im Beispiel für PortC sind die Adressen von PortA eingegeben - ist aber ja klar - Im Tape-Manager führt ein "ENTER" leider nicht zum Load des gewählten Files. Das geht nur über ein "LOAD" auf der Basic-Ebene. Alle nur
-
Thread
Ports low setzen
machen: PORTB &= ~( (1 << PB0) | (1 << PB1) | (1 << PB2) | (1 << PB3) | (1 << PB4) | (1 << PB5); Geht das denn oder wie könnte man es kürzer machen (atomar)
Machs einfach so: [c] uint8_t u8tmp; void main ( void ) { ... u8tmp = PORTC; u8Tmp &= ~(2b11000000); u8Tmp |= (2b00111111); PORTC = u8Tmp; } [/c]
-
Thread
Ping-Pong über LED-Brett für Anfänger
fragen ob man den Code auch vereinfachen kann? So dass ich beispielsweise sage, bei knopf "hoch" geht immer eine LED aus und eine andere an damit das so aussieht als würden die balken sich bewegen? dann wäre noch das Problem wie man es mit dem Ball einfacher realisieren kann? Wäre cool wenn es
pullup, B4-5 output */ outp(0x30, DDRB); outp(0x00, DDRC); outp(0xcf, PORTB); outp(0xff, PORTC); /* Set port A and D to output */ outp(0xff, DDRA); outp(0xff, DDRD); /* Enable 8-bit counter1, running on clk speed */ outp(BV(CS01), TCCR0); /* Set OCR1A as max value and
-
Thread
I2C, Mega32, Pollin-LCD
Software habe ich bei P. Fleurys Bibliothek gefunden. Dazu habe ich in der i2cmaster.s SDA und SCL auf PortC 0 und 1 angepasst. Das Interface passt fasst zur Belegung in i2clcd.h bis auf Enable. Das liegt hier auf Port P6 des PCF8574. Hab ich auch angepasst. twimaster.c und .h habe ich weggelassen, da ich kein Hardware-TWI habe. Woran könnte es jetzt liegen das gar nichts geht? Keine LCD-Initialisierung, keine falschen Zeichen, gar nichts. Übersetzt hab ich mit AVR-Studio4, geladen mit myAVR-Adapter (STK500).
-
Thread
DDS erster Versuch
die Filter gesetzt und einen Schmitttrigger angehangen, bei dem ich mir nicht sicher bin, ob das so geht. Um eure meinung wird gebeten.
Was hast du den für Typen da? Bc140 / 160 geht noch
-
Thread
Automatische Stalltür, Sensorabfrage, Atmega8 GCC
ich das Kabel zum PORTC1. In der 5er Reihe zwischen Multimeter - und 1,5 Volt - hab ich einen 10k widerstand nach 4,5 Volt -. Danke schonmal!
Warum denn eine hell/dunkel-Schaltung??? Dann geht die Klappe auch tagsüber zu, wenn es gewittert oder eine Sonnenfinsternis gibt. Und wenn es nachts gewittert und blitzt, geht die Klappe auf und der Fuchs holt Deine Hühner. Mach das lieber nach
-
Thread
timer/counter-verständnis?
ISR(TIMER1_COMPA_vect) { t--; if(t==5) { counter= 0; PORTC^= (1<<PC5); } }
leuchten lassen und habe > als Muster diese 5sekunden gewählt. Nun warte ich 5sekuden und dann > geht die LED erst an aber die LED soll gleich an gehen und 5 Sekunden > lang leuchten :( Warum schaltest du sie dann nicht einfach gleich ein? Also vor deiner Endlosschleife ein [C] PORTC |
-
Thread
[ATMEGA168] ISP - Fuses falsch gesetzt
Warum tooglest du nicht den PC0 und verwendest den als Takt? PORTC ^= _BV(PC0);
Dein Rettungsprogramm im http://www.mikrocontroller.net/topic/235987#2391930 gibt ein Dauer-LOW auf PORTC.0 aus. Das ist nicht was du willst. Toggeln geht z.B. so ([[Bitmanipulation]]) oder wie ...(Gast) geschrieben hat: [C] #define F_CPU 1000000UL /* 1 MHz CPU clock */ #include <avr/io.h> int
-
Thread
SPI Slave mit DMA auf XMEGA128A1
---------------------------------------------------------------------- ISR( DMA_CH0_vect ) { PORTC.OUTTGL = 0x01; }
---------------------------------------------------------------------- ISR( DMA_CH0_vect ) { PORTC.OUTTGL = 0x01; DMA.INTFLAGS |= (1<<DMA_CH0TRNIF_bp); DMA.CH0.CTRLA |= (1<<DMA_CH_ENABLE_bp); }
-
Thread
STK500 mit ATMEGA8 LED PROBLEM
(glaube ich). Du musst die LEDs also "verkehrtherum" ansteuern. Also 0 = an, 1 = aus. Das mit dem PORTC könnte daran liegen, dass der AVCC-Pin eventuell nicht mit VCC verbunden ist. Das ist ein ganz böser Fehler.
OK, habs lösen können! Hab bei der Übertragung des Programms etwas falsch verstanden, aber jetzt gehts! Danke für eure Bemühungen!
-
Thread
Logiksignale nur durchlassen, falls nicht mehr als eine 1
, sonst wirds beim PortC undurchsichtig ;-)
habe, was genau empfiehlt sich für eine solche Anwendung? Es geht um 5V Signalpegel.
-
Thread
atmega8 UART empfangen
while (1) { uint8_t c; c = uart_getc(); // hier etwas mit c machen z.B. auf PORTC ausgeben DDRC = 0xFF; // PORTC Ausgang PORTC = c; } return 0; // never reached }[/c] Leider weiss ich nicht, wo der Fehler ist. PORTC ist dauerhaft auf 0x00. Ich arbeite mit
JTAG nicht deaktiviert? Das ist standardmäßig aktiviert und auf PORTC.
-
Thread
Uhrzeit stellen
int i=0 ; i<=10 ; i++){ cout << i;} i wird so lange gezählt, bis es den Wert 10 erreicht hat, dann geht die Schleife "zu".
// LEDs an PC0 auf Ausgang for(;;) { if( debounce( PINB, PB0 ) ) { PORTC ^= 1<<PC0; } if( debounce( PINB, PB1 ) ) { PORTC ^= 1<<PC1; } } } [/c] So funktioniert es jetzt. Beide LEDs schalten unabhängig voneinander. Taster drücken =
-
Thread
define Ausdruck mit shift in 2 Richtungen
Hi, wie wird dieses Makro behandelt? #define TEST(x) ((x>>1)<<3) geht das? T.S.
es geht darum dass ich für mein LCD alle pins einzeln frei konfigurierbar gemacht habe und jetzt ein Makro mit einem 8-Bit Port erstelle. Das Dipslay ist im 8 Bit Modus betrieben. #define LCD_P_D0
-
Thread
WordClock mit DCF77, Photodiode und ATMega8
XTAL2, should not exceed 200mA[/pre] Vielleicht kannst Du ja noch die ein oder andere Leitung von PortC auf PortB oder PortD verlegen.
Schaltznetzteil genommen, also kein 7805 mehr. Der Empfang vom Conrad Modul ist gut, das Multiplexn geht bei 32 PWM Stufen auch gut, allerdings gibt der Helligkeitssensor keine guten Werte raus. Wenn ich fertig bin gibts noch ein abschließendes Foto. Grüße Oli
-
Thread
Einzelnen Pin auslesen
> Hoffe jemand kann mir meinen Fehler erklären. > Also ich hab es bisher so versucht das ich PORTC (an dem hab ich die > Brücke gesteckt gehabt) ausgelesen PORTC dient zum Setzen (nicht zum Einlesen) der Ein-/Ausgangspins. Wie es richtig geht steht hier: http://www.mikrocontroller.net/
include <stdint.h> int main() { DDRC=0x00; DDRB = 0xff; while( 1 ) { PORTB = PORTC; } return 0; } [/c]
-
Thread
AVR ATMEGA8-16 -- Problem mit Bedingungen in Abfragen (while, if)
while ((PIND & 0x03) == 0x03) { PORTC &= 0xFC; ALARMTON(TONDAUER_ALARM, Frequenz); /* OUTPUT ERROR */ }
den Linkslauf (PIN1 = High). Und erzwinge ich den verbotenen Zustand (Beide Pins auf High), dann geht auch die Fehlerausgabe. Ich bin etwas verwirrt jetzt.
-
Thread
Xmega 256a3b Usart sendet immer ASCII 255
define USARTxx USARTC1 // Choose USART C1 as communications port #define USARTport PORTC // Matching port for the chosen USART #define USARTtxd PIN7_bm // Bit mask of the TxD pin #include <avr/eeprom.h> #include <avr/interrupt.h> #include <avr/io.h>
PutChar ('!'); PutChar ('\r'); while (1) { PutChar (GetChar ()); } } [/c] Das geht! Gruß Carsten PS: Nicht vergessen: TxD & RxD über Kreuz anschließen! :-)
-
Thread
Display nach Tutorial Probleme
verwendeten Portpins angepasst: [c] / LCD DB4-DB7 <--> PORTD Bit PD4-PD7 #define LCD_PORT PORTC #define LCD_DDR DDRC // LCD Datenbus, Bitnummer des untersten Bits D4, kann auf den // Portbits 0..4 liegen #define LCD_DB PC2 // LCD RS <--> PORTD Bit PD2 (RS:
Programm läuft ab, ich habe testweise mal eine LED am Ende des Programms einschalten lassen, Sie geht dann irgendwann an. Das Display reagiert aber nicht. Sämtliche Leitungen habe ich auf Durchgang geprüft. Leiterplatte ist vom Platinenhersteller und hat auch keine Brüche. Entdeckt jemand einen
-
Thread
PIC16F690 PWM
willst. Evtl brauchst du einen sparsameren oder schnelleren PIC. Aber wenns nur um die Farbsteuerung geht, reicht der 16F690 mit SoftPWM ansich aus.
ein Soft-PWM funktioniert und machst das gleich quasi 3 mal. Das ist das, was ich meinte;) Es geht per Software und das wissen ist ja auch was Wert, aber mit einem PIC der >=3 PWM Module hat, geht das ganze fixer und einfacher von der Hand.
-
Thread
Free runningmodus mit ADC
6,8k Ohm wenn ich jetzt z.b. den 1k gegen den 2,2k tausche, bleibt die dazugehörige Led an und geht nicht aus, obwohl ich denke das der free running modus eingeschaltet ist bei mir und dadurch doch jederzeit der neue messwert dazu führen muss das die jeweils richtige Led leuchtet! code: ADCSRA
= (1<<PA6); } // 220 Ohm Kabel else if ( (ADCW > 542) && (ADCW < 624)) { PORTC |= (1<<PC2); } // 100 Ohm Kabel else if ( (ADCW > 955) && (ADCW <= 1023)) { PORTC |= (1<<PC2); PORTA |= (1<<PA6); }
-
Thread
Präprozessoranweisung das erste Mal
Matthias. hier ist die Headerdatei: #ifndef keypad_h #define keypad_h #define keypad_port PORTC #if (PORTC=keypad_port) #define Taster PINC #if (PORTA=keypad_port) #define Taster PINA #endif extern unsigned char flankenwechsel2; extern unsigned char keypad_uebergeben;
Ok, dann soll für jetzt mal die Information ausreichen, daß es dem Präprozessor da genau wie dir geht. ;-)
-
Thread
16bit Übergabe von uC zu CPLD
output portd=adress; //8bit-adress on db portb.2=1; //adressCPLD=1 portc.0=0; //CS=1 delay_us(10); //delay portc.0=1; //CS=0 portb.2=0; //adressCPLD=0; trisd=0xff; //portd=input //send lower/higher byte trisd=0x0; //portd=output portd=para; //byte on db portc.0=0; //CS=1, adressCPLD=0 portc.0=1; //CS=0 delay_us(10); trisd=0xff; //portd=input return; } [/c] Die Funktion wird also 2x für ein
-
Thread
UART empfangen funktioniert nicht
1<<UCSZ00) ; } int main(void){ DDRD &= ~(1<<0); DDRC = (1<<3)|(1<<4); PORTC = (1<<3)|(1<<4); PORTD &= ~(1<<0); char led_on=0; inti_uart(); while (!(UCSR0A & (1<<RXC0))) // wartet bis Zeichen verfügbar ist ; PORTC ^= (1<<3); led_on = UDR0; if (led_on
Danke aber bis dahin kommt das Programm garnicht, denn die Prüfled nach der Abfrage geht nicht an. Woran kann es liegen?
-
Thread
XMega DMA transfers zu UART
schon implementiert ? Ich muss erst mal sehen obs nicht auch ohne Ringbuffer in meiner Applikation geht. lg, Stef
Source- und fixer USART-Data Adresse... Synchronisiert sich das hinsichtlich Speed dann selber oder geht das so prinzipiell nicht?
-
Thread
TG12864B-05 GLCD Modul hat pixelfehler
Hallo Ich versuche gerade das GLCD Modul TG12864B-05 von Pollin anzusteuern. Das geht auch soweit ganz gut. Das heißt das LCD zeigt etwas an. Jedoch ist es so dass es die Pixel nicht richtig ansteuert. Auf dem Bild habe ich mal das Sample KS108 für den Atmega32 umgeschrieben und auf
Die im AVR Praxis Forum haben mir geraten den Takt mal auf 1 Mhz zu setzten und jetzt geht es auch.
-
Thread
2 Frequenzen einstellen und ausgeben +Display Anzeige
Hi, ich hab jetzt was versucht was sich an den link Text anlehnt! Aber es geht nicht! Ich kann keinen unterschied mehr sehen aber der interrupt geht nicht. [c] /* * Frequenz.c * * Created: 27.09.2011 11:43:22 * Author: ****** */ #define F_CPU 4000000UL #include
Beitrag #2361482: > Hi, > ich hab jetzt was versucht was sich an den link Text anlehnt! Aber es > geht nicht! Ich kann keinen unterschied mehr sehen aber der interrupt > geht nicht. Du hast keinen sei()
-
Thread
einzelne bits ändern in einem Array oder komplett anders ?
und eine LED Matrix 5x7. einzeln bekomme ich beide angesteuert. Die LED Matrix ist an PORTD und PORTC angeschlossen an PORTD die Reihen und an PORTC die Spalten, welche gemultiplext sind. Nun wollte ich aber jetzt die mit es leicht machen um bequem die LEDs durch ein Array schalten. Mein Array
while(1){ LedAn(a,b); } [/c] Wenn ich das LedAn vor der Whileschleife aufrufe dann geht die richtige LED an und wenn ich das in der Whileschleife aufrufe dann geht sie nicht an ?! Woran liegt das denn ? Danach werde ich das mit dem einzelindex und den makros mal ausprobieren.
-
Thread
Schrittmotor ansteuern über Timerinterrupt
Cyberfoxx schrieb im Beitrag #2358111: > if(PORTC%2) > { > PORTC&=0xFE; > } > else > { > PORTC|=0x01; > } kann man auch so schreiben: PORTC ^=0xff warum weden alle bits von PORTC getoggelt?
stimmt! PORTC ^=0x01 wäre richtig!
-
Thread
LM 35 misst nur Nullen
> USART_Transmit(adc_wert ); > USART_Transmit(0x0A); Binär über die UART geht schief. Bastel Dir mit sprintf nen ordentlichen String und sende den. Peter
Dinge definieren #define LED_DDR DDRC //definieren der LED DDR #define LED_PORT PORTC //defintion des genauen ports für die DDR #define LED_PORTPIN1 PC1 //definition der roten LED #define LED_PORTPIN0 PC0 //definition des gruenen LED
-
Thread
INT1 klappt, INT0 nicht.
PORTC = (0 << PC4) | (0 << PC5); _delay_ms(50); PORTC = (0 << PC4) | (1 << PC5); _delay_ms(30); PORTC = (0 << PC4) | (0 << PC5); _delay_ms(50); PORTC = (0 << PC4
PORTC = (0 << PC4) | (0 << PC5); _delay_ms(50); PORTC = (1 << PC4) | (0 << PC5); _delay_ms(30); PORTC = (0 << PC4) | (0 << PC5); _delay_ms(50); PORTC = (1 << PC4
-
Thread
SREG untersuchung in C
] #include <avr/io.h> int main (void) { DDRC = ( 1 << PC5 ); // PC5 an PORTC als Ausgang setzen PORTC ^= ( 1 << PC5 ); // LED erstmal ausschalten uint8_t Ergebnis = 0x00 + 0x00; // Rechnen if (SREG & 0x02) // wenn Zero-Flag gesetzt dann ... { PORTC &= ~(1 << PC5); // LED an } while(1) { } return 0; } [/c] nur leider geht der LED kein Licht auf, und mir auch nicht
-
Thread
PIC 18F2685 - Timer0 - Highbyte lässt sich nicht setzen
alles Ausgänge PORTA = 0x00; PORTC = 0x00; ADCON1 = 0xFF; //AD-Eingänge abschalten,als Digitale Eingänge nutzen INTCONbits.RBIF = 0; INTCONbits.GIE = 1; //Alle Interrupt zulassen INTCONbits.RBIE = 1; //Port Change Interrupt anschalten
Zeile wo der Debugger stehen bleibt wurde noch nicht ausgeführt. Erst wenn man einen Schritt weiter geht wird sie ausgeführt.
-
Thread
Klatschschalter Beschaltung
, 300 , 150 Waitms 100 Sound Portc.0 , 300 , 150 Waitms 100 Config Pinc.5 = Output Config Pinc.4 = Output Config Pinc.1 = Output Config Pinc.2 = Output Portc.1 = 1 Portc.2 = 1 Portc.4 = 1 Portc.5 = 1 Config Timer1
Then '400 ms bis 600 ms Print Firstclap Print "Licht Toggle" Toggle Portc.5 Toggle Portc.4 Portc.1 = 0 Portc.2 = 0 End If If Firstclap > 2344 Then Portc.1 = 0 Portc.2 = 1 Sound Portc.0 , 300 , 150 Waitms 500 Sound Portc.0 ,
-
Thread
AVR ISP Schaltung
Schrott ist. Was meint ihr dazu. Das mit dem Widerling und Vcc gefällt mir garnicht. Und praktisch geht die schaltung auch nicht.
der AREF, AVCC und AGND nicht belegt ist. Die Schaltung funktioniert angeblich einwandfrei, obwohl PortC verwendet wird.: http://www.roehrenkramladen.de/MAS1_2/MASV12.htm
-
Thread
Pic Mit LCD Display
Jungs, wenn ich sage es geht nicht dann geht es nicht. IM Datenblatt steht klipp und klar: Unlike other PORTC pins, RC4 and RC5 do not have TRISC bits associated with them. As digital ports, they can only function as digital
-
Thread
Trivialprogramm für PIC16F1936 - Was mache ich falsch?
LATA banksel TRISA clrf TRISA Genau so würde ich es erst mal machen, nur mit PORTC, LATC und TRISC Und dann, falls COMF weiter nicht geht, dann halt weiter mit banksel LATC movlw 0x00 movwf LATC movlw 0xff movwf LATC
Jetzt werde ich wohl doch 'mal versuchen, den Microchip-Assembler unter wine zu verwenden. Angeblich geht das ja.
-
Thread
bascom zeitunabhängig ausgang setzen.
SPS war nur Hinweis auf Vorgehensweise. Definiere vorher mal Motor_on alias Portc.2 Deine Abfrage sieht dann so aus: If Stellenstunde = _hour And Stellenminute = _min And Anaus = 1 Then Set Motor_On rauswerfen ----> If Umdrehungen = 2 Then Reset Portc.2 ---hat
ist? Zitat: If Umdrehungen = 2 Then Umdrehungen = 0 If Umdrehungen = 2 Then Reset Portc.2 End If Warum nicht so: If Umdrehungen =2 then Umdrehungen = 0 reset portc.2 end if
-
Thread
Atmega8 defekt?
nicht die Ursache, dass eine Schaltung die vor ein paar Wochen noch funktionierte, jetzt nicht mehr geht.
programmieren. Entweder über den Brenner oder besser über eine eigene Spannungsversorgung. Ganz ohne Spannung geht nichts
-
Thread
Bitte um Hilfe.
Du prüft einmal wie die Taste steht, wenn sie gedrückt wird geht die Led an und das Programm springt weiter. Es erfolgt also keine weitere Abfrage ob die Taste inzwischen losgelassen wurde. Du musst irgend wann einmal die Abfrage nochmal durchführen um zu prüfen
Thomas O. schrieb im Beitrag #2336676: > Du prüft einmal wie die Taste steht, wenn sie gedrückt wird geht die Led > an und das Programm springt weiter. Es erfolgt also keine weitere > Abfrage ob die Taste inzwischen losgelassen wurde. > > Du musst irgend wann einmal die Abfrage nochmal durchführen
-
Thread
Speicherzuweisung von 2 zwei 2dim Arrays vertauschen
] Damit muss ich aber jetzt beim Zugriff auf diese Daten den Pointer benutzen und z.B. aus [c]PORTC = currentFrame[row][ct][/c] wird [c]PORTC = *(cfPointer+row*8+ct)[/c] Es funktioniert zwar und vielleicht behalte ich es auch fast so bei (nur Arraydefinition+Pointer mit malloc+Pointer austauschen
#2335044: > Damit muss ich aber jetzt beim Zugriff auf diese Daten den Pointer > benutzen und z.B. ausPORTC = currentFrame[row][ct]wirdPORTC = *(cfPointer+row*8+ct) Nein. Mach doch einfach PORTC = cfpointer[(row * 8) + ct)]; draus.