-
Thread
STM32F103 Bluepill mit 128kb lässt sich nicht flashen
Device und auch dem EB Plugin was man sich runterladen kann. So wie beschrieben im Embitz Forum geht es jedenfalls nicht.
so. Dann in HAL nachsehen und in stm32f1xx_hal_rtc_ex.c findet man ein paar Tamper Funktionen, das geht vielleicht auch mit der SPL.
-
Thread
Ausgänge bei 3.2V
Einleitung didaktisch schon mal gut. "Geht euch nix an" LED an 12V ! Ausgänge als Ausgänge definiert?
die nach pragmatischen Lösungen suchen? Ich verstehe es nicht. Muss ich auch nicht. Also bitte! geht zur Seite wenns ums Fach geht. Hier mal zu allen die produktiv Vorschläge ( und damit meine ich ALLE ) lieferten. Großen Dank. Insbesondere an Stefan S.!!! Ich machte tatsächlich den Fehler immer
-
Thread
PWM Frequenz ATMega328P einstellen
ADPS0) | (1<<ADPS1) | (1<<ADPS2); sei(); DDRD = 0xFF; PORTD = 0x00; DDRC = 0x00; PORTC = 0x00; DDRD |= (1<<PD6); //PWM Output DDRB |= (1<<PB0); //green LED DDRB |= (1<<PB1); //PWM Output uint16_t Min1 = 122; uint16_t Min2 = 982; uint16_t Max1 = 982; uint16_t
Also gleiche > Einstellungen, gleiche Frequenz usw., aber unterschiedliche Tastgrade? Natürlich geht das und zwar mit OC1A (PORTB,1) und OC1B (PORTB,2) als PWM-Ausgänge. Hier ein LED-Crossfader, einmal mit gleicher Phasenlage beider PWM-Kanäle: http://www.led-treiber.de/html/software-fader.html#
-
Thread
Vorstellung und erstes Projekt
drin, die ich weder im Sinne von Kombinatorik noch im Sinne von sequentiell einordnen kann. Konkret geht es darum, dass zwei Signale sich gegenseitig blockieren, je nachdem welches zuerst anliegt. Also das bloße Anliegen von Signal A geht weiter in die Schaltung, während ein anschließend auftretendes Signal
set_Pin(unsigned char port, unsigned char pin, bool state) { ... } Der Aufruf wäre dann z.B für PORTC, Pin 7 eine 1 schreiben: set_Pin(PORTC, 7, 1); Gruß
-
Thread
Programm läuft nur mit JTAG Fuse
HIGHJTAGEN" aber abschalte, funktioniert das Programm nicht mehr. Sobald ich JTAG wieder einschalte geht alles wieder (nur die PortC halt nicht). Woran kann das liegen? Atmega1284P / Atmelstudio7 / C
=ein PORTC |= (1<<PC5); //H-Brücke H1=ein PORTC &= ~(1<<PC6); //H-Brücke L2=ein PORTC &= ~(1<<PC7); //H-Brücke H2=ein while (1) {
-
Thread
Atmega8A 1000ms != 1s ?
fixled_off(); _delay_ms(10000); } } void ioinit (void) { DDRC = 0b00111000; PORTC = 0b11000111; } void adcinit (void) { DDRC = 0b00111000; PORTC = 0b11000111; } void fixled_on(void) { PORTC |= _BV(PC3); } void fixled_off(void) { PORTC &= ~_BV(PC3); } void statled_on(void) { PORTC |= _BV(PC4); } void statled_off(void) { PORTC &= ~_BV(PC4); } void gps_on(void) { PORTC |= _BV(PC5); } void gps_off(void) { PORTC &= ~_BV(PC5); } [/c]
-
Thread
Frage zu Externes SRAM(XMEM) und Atmel Studio 7
oben "Using all 64Kbytes Locations of External Memory" das man diese bekommt wenn man alle Pins an PortC freigibt für den XMEM Bus. Aber das habe ich dort getan wenn ich keins der XMMn Bits setzte oder? Also kann ich doch jetzt die vollen 64kB ansteuern oder nicht? Im Linker habe ich eingestellt das die
Falk B. schrieb im Beitrag #6593018: > Nö, geht nicht, ist "Handarbeit". Hallo Falk. Ah ja habe ich mir schon irgendwie gedacht. Falk B. schrieb im Beitrag #6593018: > Nicht ganz, denn der externe SRAM teilt sich den Adressraum mit dem
-
Thread
[S] Suche Dienstleistung für PIC18F45K22
Dinge die sich dem Neuling nicht spontan erschließen. Da es um ein privates Photovoltaik-Projekt geht (und die Saison geht bald wieder los) möchte ich eine zeitaufwendige Selbstschulung gerade gerne umgehen. Daher suche ich jemand Kundigen, der mir den Code, unter Berücksichtigung etwaiger Migrationsanpassungen
U6 = (U6<<8); U6 = (U6|ADRESL); } void init (void) { PORTA = 0; PORTB = 0; PORTC = 0; PORTD = 0; LATA = 0; LATB = 0; LATC = 0; LATD = 0; ANSELA = 0b00101100; ANSELB = 0b00001101; ANSELC = 0b00000000; ANSELD = 0b10111111; TRISA = 0b11101100
-
Thread
Potentiometer + Servomotor I Atmega328PB
Beitrag. diesmal muss mit dem Potentiometer ein Servomotor bewegt werden. Ich habe den Code so gut es geht vervollständigt nur gibt es einige Unstimmigkeiten im Code die ich bis jetzt nicht rausfinden konnte. Vielleicht kann hier jemand weiterhelfe, hat dass letzte mal so gut geklappt! :D Ich glaube bei
) // An dieser Stelle muss die Deklarations-Kopfzeile korrekt vervollständigt werden { PORTC |= 0xFF; // Servo-Ausgang selektiv auf HIGH } // Interrupt-Service-Routine des Timer/Counter 1 (Endzeitpunkt der HIGH-Phase einer PWM-Periode) ISR(TIMER1_CAPT_vect)
-
Thread
Stm32F103C8 (Bluepill) Pin B4 und B5
kommst du darauf? Welche komplexe I/O Schnittstelle willst du denn auf diesen beiden Pins fahren? Es geht ja nur entweder GPIO oder SPI, aber dann reden wir von PA15 und PB3 bis PB5). Wie dem auch sei, das Remappen tut man durch beschreiben des AFIO->MAPR Registers. Siehe dazu http://stefanfrings.de
ohne Pull Up (haben die LPC z.B.). Und auch beim AVR Mega32 war ein FAQ 'warum funktioniert mein PortC nicht richtig?'. Nur auf SWJ/JTAG zu achten reicht nicht.
-
Thread
Laufzeitverhalten main-Funktion
PORTC ^= (1<<PC3); trigger_1ms = false; } [/c]
Aber der TO wollte das haben: PORTC ^= (1<<PC4); und nicht das: PORTC = (1<<PC4); Und "PORTC ^= (1<<PC4);" ist nicht interruptsicher
-
Thread
Potentiometer mit ADU Atmega328PB [HILFE]
Mich irritiert dies hier > PORTC = 0xFF; // Alle Segmente der 7-Segemntanzeige ... Anschließend wird mit PC_Bitmaske verodert, da ändert sich folglich dann gar nichts. Muss das nicht PORTC = 0 heißen (je nach Segment-Beschaltung
Vorschlag: PORTC &= PC_Bitmaske[number]; (Vielleicht auch PORTC &= ~(PC_Bitmaske[number]), je nachdem, wie PC_Bitmaske codiert wurde)
-
Thread
Atmega Taster einlesen und in Register schreiben funktioniert nicht wie geplant
<<PA1)) && (PINB & (1<<PB1)) ) ) {PORTB &= ~(1<<PB1);} else {PORTB &= ~(1<<PB1);} PORTC = PIND; } [/c] Was genau mache ich falsch?
passendem 'Gleichzeitig' werden beide LEDs akiviert :-( - Selection Mode: drückt man eine Taste, geht eine LED an; eine die schon an war, geht aus. - individuell: man kann alle LEDs durch die jeweilige Taste ein- und ausschalten. Das ist wohl das, was du machen wolltest. Ich bin kein SW-Profi,
-
Thread
_delay_ms Faktor 13 zu langsam
Settings alle korrekt sind. Wenn ich testweise auf den langsameren internen Oszillator wechsle, geht z.B. usart erwartungsgemaess nicht mehr. So, nun die _delay_ms()-Funktion: laeuft relativ genau Faktor 13 langsamer als sie soll, also ein Testsignal mit _delay_ms(38) ontime+offtime laeuft ca. mit
) | (1 << PB2) | (1 << PB3) | (1 << PB4) | (1 << PB5); DDRD |= (1 << PD2) | (1 << PD5); PORTC |= (1 << PC0) | (1 << PC1) | (1 << PC2) | (1 << PC3) | (1 << PC4) | (1 << PC5); PORTD |= (1 << PD6) | (1 << PD7); TCCR1A |= (1<<WGM10); TCCR1A |= (1<<COM1A1) | (1<<COM1B1); TCCR1B
-
Thread
Atmega 1284 Pin-Change Interrupt, funktioniert nicht
--> Ausgang PORTA |= 0x00; //All Outputs PORTB |= 0x00; //All outputs/undefined PORTC |= 0xff; //SW 0..5 with Pull-Up PORTD |= 0x40; //SW 6 with Pull-Up SW_Init(); //Initialize Taster sei(); //Global IRQ-Enable //SW_Init(); //Initialize Taster }
--> Ausgang PORTA |= 0x00; //All Outputs PORTB |= 0x00; //All outputs/undefined PORTC |= 0xff; //SW 0..5 with Pull-Up // c-->f PORTD |= 0x40; //SW 6 with Pull-Up SW_Init(); //Initialize Taster sei(); //Global IRQ-Enable } void SW_Init() { PCICR = 0x0c
-
Thread
AVR C array Programmierung wo liegt der Fehler?
} R1_temp = R1_temp >> 1; if (G1_temp & 0x1){ PORTC |=(1<<G1);} else{ PORTC &= ~ (1<<G1); } G1_temp = G1_temp >> 1; if (B1_temp & 0x1){ PORTC |= (1<<B1);}
//Clock Signal erzeugen PORTC |= (1<<CLK); _delay_us(0.1); PORTC &= ~(1<<CLK); } //Ein"latchen" der Reihe PORTC |= (1<<PC5); _delay_us(0.1); PORTC &= ~(1<<PC5)
-
Thread
Anfängerfrage AVR GCC
LEDs sind auf dem STK500 mit dem PORTD über das Flachbandkabel verbunden. Genauso die Taster mit PORTC. Beides funktioniert auch einwandfrei, z.B. mit dem Entprellprogramm von Peter D. Solange ich den Taster gedrückt halte geht die LED aus. Wenn ich im falschen Moment drücke, bleibt sie an, aber
Danke! Denke so geht's: [c] for(;;) { // main loop if (TCNT1 == 0) OCR1A = 625; // 50 Hz while (!(PINC & (1 << PINC0))) { // Prüfen ob PC0 low
-
Thread
PIC18F4580 Port Probleme mit high signal
PortC/D geht bei einem POR erstmal auf input. Laut Dabla.... PullDowns!?
einmal als analog Pin konfiguriert. Das umschalten auf digital Port dauert demnach etwas. Bei PortC ist noch ein Modul zugeschaltet, welches man abschalten sollte.
-
Thread
Servo-Pulssignalläge messen mit Atmega328p
#define BAUD 19200 //Debug #define MYUBRR FOSC/16/BAUD-1 #define LED_PORT PC0 #define LED_ON PORTC |= (1 << LED_PORT) #define LED_OFF PORTC &= ~(1 << LED_PORT) #define RC_RECEIVER_PORT PD2 #define RISING_EDGE PIND & (1 << RC_RECEIVER_PORT) /*Variablen*/ volatile uint16_t Throttle; volatile
Lothar M. schrieb im Beitrag #6819095: > Da geht es um einen schnarchlangsamen Temperatursensor. Ach, wenn du meinst... Der Temperaturwert (berechnet aus dem Duty Cycle) mag langsam sein, nicht jedoch das PWM Signal selbst. Lt. Datenblatt des
-
Thread
Bit in Ausgaberegister als Variable definieren
Mit #define mitten im Code geht es nicht, zumindest wüsste ich nicht wie. Danke im Voraus und einen schönen Tag Nicola
Hallo, ja, das geht tatsächlich mit uint_8. Ich dachte das geht eh nicht, deshalb habe ich es gar nicht erst versucht. Manchmal ist es eben einfach einfach. Danke! Lothar M. schrieb im Beitrag #6439911: > Und wenn
-
Thread
AVR128DA übertakten
muss der Zyklus mindestens 20 CPU Clocks lang sein, darunter gibt es Datensalat. Beim Atmega1248P geht es nahtlos.
Ich wollte ohnehin mal SPI sowie USART-SPI auf den AVR-Dx ausprobieren, da würde das jetzt passen. Geht aber alles nicht so schnell bei mir.
-
Thread
Makro Funktionen avr-gcc
Beitrag #6420590: > Der Lesbarkeit wegen machen hier Makros dann schon Sinn, Wenn nix anderes geht.... Aber solange es bessere Alternativen gibt. Wie schon gesagt, constexpr Ausdrücke, oder Funktionen, haben hier deutliche Vorteile, bei gleich guter Lesbarkeit. Ganz Klar schrieb im Beitrag
setnum(uint8_t num) { uint8_t oldSREG = SREG; cli(); PORTB |= (seg_codeB[num] & BMask); PORTC |= (seg_codeC[num] & CMask); PORTD |= (seg_codeD[num] & DMask); SREG = oldSREG; } [/c]
-
Thread
UART auf ATMega328p sendet nicht
Hallo zusammen, Ich versuche auf dem ATMega328p über UART zu senden. Der TX Pin geht zwar nach aktivieren und setzen der Baud Rate auf 5V aber leider wird nichts gesendet. Der TX Pin bleibt dauerhaft auf 5V (Oszilloskop). Der interne Oszillator (auf 8Mhz gefused) wird benutzt.
char data) { // wait for transmit buffer to be empty if (UCSR0A & (1 << UDRE0)) { PORTC |= (1 << PC0); } else { PORTC &=~(1 << PC0); } while(!(UCSR0A & (1 >> UDRE0))); // load data into transmit register UDR0 = data; } [/c]
-
Thread
Seltsames Verhalten bei verschiedenen Timer Prescalern-Atmega 328P
getoggelt. Setze ich den Prescaler an Timer0 auf 1/1024, funktioniert das nicht nicht mehr. Die Led geht beim Tastendruck kurz aus und dann sofort wieder an. Und dieses Verhalten kann ich mir nicht erklären. Ich bin davon ausgegangen, dass ein größerer Prescaler nur dazu führt, das der OCR0A Interrupt
als Ausgänge PORTB = 0xFF; DDRC = 0xFF; //PortC als Ausgänge PORTC = 0xFF; DDRD = 0x00; //PORTD als Eingänge } int main(void) { _setup(); while (1) { if(jflags &= (1<<taster_einlesen)) { _taster_einlesen
-
Thread
CAN Verarbeitung mehrer Botschaften
buffer_relais[7] = CANMSG; send_relais = 42; // Daten für TB-1 untere Reihe Laden PORTC = buffer_relais[1]; PORTG |= (1 << PG4); // Daten für TB-1 obere Reihe Laden PORTC = buffer_relais[0]; PORTG &= ~(1 << PG4); // Daten für TB-2 untere Reihe Laden PORTC = buffer_relais[3]; PORTG |= (1 << PG3); // Daten für TB-2 obere Reihe Laden PORTC = buffer_relais[2]; PORTG &= ~(1 << PG3); // Daten für TB-3 untere Reihe Laden PORTC = buffer_relais[5]; PORTD |= (1 << PD4); // Daten für TB-3 obere Reihe Laden PORTC = buffer_relais
-
Thread
AVR Atmega ports register
einzelnen Ports bzw Register an. (DDR, PORT, PIN) Hat es einen Vorteil, wenn ich einen PORT (z.B. PORTC) ausschließlich als Input definiere (alle 8 Bits) und den anderen (z.B. PORTL) ausschließlich aus Output? Oder gibt es eine andere sinnvolle Zuweisung der IO, z.B. IO die viel gepollt werden auf einem
Stevo J. schrieb im Beitrag #6368795: > Hat es einen Vorteil, wenn ich einen PORT (z.B. PORTC) ausschließlich > als Input definiere (alle 8 Bits) und den anderen (z.B. PORTL) > ausschließlich aus Output? Eher ist das Gegenteil der Fall... Da der maximale Output Strom nicht nur pro Pin
-
Thread
Attiny1616 USART Verständnissproblem
PA0? Es geht doch um PA2.
S. Landolt schrieb im Beitrag #6355115: > PA0? Es geht doch um PA2. Tut mir leid, ich habe das überlesen und denke meinem Vorredner geht es da ebenso. Ja an PA2 liegt GND
-
Thread
LED blinken lassen waehrend senden/empfangen vom USART
> das geht bestimmt noch besser Ich hätte ad hoc gesagt, das geht so gar nicht: sbi/cbi auf PIN? Wenn es nicht ein ganz alter AVR8 ist, dann wird mit 'sbi PIN..' der Ausgang getoggelt, während 'cbi PIN..' nichts
> unterscheiden willst, dann wird das alles, nur nicht intuitiv. Bei einem Traffic-Indicator geht es nicht darum, dem Eingeweihten intime Details der Kommunikation zu verraten. Es geht darum, dem Laien möglichst unübersehbar zu sagen: hier passiert was (oder halt auch nicht). Das Konzept wird
-
Thread
HILFE Seltsames Verhalten Atmega 328P auf Arduino-Board mag Code nicht
im Beitrag #6342462: >> RS liegt auf PC4, EN auf PC4. Tipfehler! (RS = Register select) <-> PORTC PortBit 4 (EN = Enable) <-> PORTC PortBit 5
der 44870 noch busy ist. Hier ist bei einem Lo auf D7 des LCD frei. Ich mache die Abfrage über Pin5 PORTC. Offensichtlich klapp hier die Abfrage nicht. So das die Routine die Bussy checkt in eine Endlosschleife geht. Ich habe diese Abfrage durch ein delay von 0,5ms ersetzt und das ganze läuft nun fehlerfrei
-
Thread
volatile Funktionen
". Ich auch nicht. Und auch nicht in der Dokumentation des gcc, wo es um "function attributes" geht. Was soll das denn sein? Abgesehen davon geht es bei volatile Objekten keinesfalls um Locking, sondern darum, die Zugriffe auf das RAM durch Nutzung von Registern abzukürzen.
PORTC = i.load (std::memory_order_relaxed); }[/c] Für _Atomic geht es ähnlich, keine Lust es nachzuschlagen. std::atomic<std::uint8_t> sollte automatisch wissen dass std::uint8_t atomisch geschrieben werden
-
Thread
PPS5330 Labor-Netzteil hack
Die Zeiten habe ich mit dem Scope gemessen. [c] void start_ADC() { // clear intecrator PORTC |= (1<<ADC_AD0); PORTC &= ~(1<<ADC_AD1); PORTC |= (1<<ADC_AD2); _delay_ms(1); // Voltage measurement PORTC &= ~(1<<ADC_AD0); PORTC &= ~(1<<ADC_AD1); PORTC &= ~(1<<ADC_AD2);
/* // Temp1 measurement PORTC |= (1<<ADC_AD0); PORTC |= (1<<ADC_AD1); PORTC &= ~(1<<ADC_AD2); PORTC |= (1<<Test_flag); // Test_flag = High while (!(PINC & (1<<ADC_ADW))); PORTC &= ~(1<<Test_flag); // Test_flag
-
Thread
C Best Practice für konstante globale Variablen
Beim arm-gcc sorgt das Schlüsselwort const schon dafür, dass kein RAM belegt wird. Aber beim avr-gcc geht das nicht so einfach, deswegen #define. Was nicht konstante Variablen angeht: Diese vermeide ich wo immer es geht, da man sich danach durch copy/paste Aktionen sehr schnell Konflikte/Fehler einhandelt
der Präprozessor relativ verlässlich ist, sind es Optimierungen nicht. Und in den seltensten Fällen geht (in C): [c] int myXYArray[MyCfg.nXY] [/c]
-
Thread
Erstes PCB mit Eagle: STM32 Breakout Board
Steckverbindern) per "label" beifügen. Dafür brauchst du dann das alternative Raster. Und wenn's geht, Eingänge links, Ausgänge rechts. (z.B. dein Spannungsregler) W.S.
natürlich amateurhaft und stark verbesserungswürdig ist), auf dem all VDD Pins markiert sind. Wie geht man damit am besten um? Optimalerweise sollte doch jeder Abblockkondensator direkt mit einem Versorgungspin verbunden sein, oder nicht?
-
Thread
AVR Studio und Funktion _delay_ms()
delay_time = 2000; DDRB = 0xFF; // PORTB STK500 LEDs PORTB = 0x00; DDRC = 0xFF; // PORTC 2x 74C48 PORTC = 0x00; for (;;) { for (int i = 0; i <= 255; i++) { _delay_ms (delay_time); PORTB = i; PORTB = ~PORTB; PORTC = i; _delay_ms (delay_time
ja die I/O Ports auch > nicht.Oder verstehe ich das falsch? Da verstehst du etwas falsch. Es geht nicht um den Mikrocontroller, sondern um das Programm avr-gcc.exe an sich. Das ist für einen viel neuere Prozessoren gebaut und verwendet Befehle (für sich selber, nicht das, was es generiert!) die
-
Thread
Neue AVR Familie - AVR-DA
Atmel-ICE kostet >120 EUR mit Gehäuse. PICkit Interessiert mich nicht, da um schlechte Tools für Atmel geht.
Hühnerfutter. Und das umstellen eines "geerdeten" UPDI-Tiny's geht auch nicht, weil die 12V fehlen....
-
Thread
ILI9486L in Betrieb nehmen
); _delay_ms(2); PORTD |= (1<<RDX); _delay_ms(2); } void setData(uint16_t *Data){ PORTC = (*Data & 0xff); PORTA = ((*Data >> 8) & 0xff); }[/c]
PORTG &=~ (1<<WRX); setData(Data); PORTG |= (1<<WRX); } void setData(uint16_t Data){ PORTC = (Data & 0xff); PORTA = ((Data >> 8) & 0xff); }[/c]
-
Thread
Ampelschaltung PORTC
Community, Ich möchte gerne eine sehr einfach Ampelschaltung programmieren. Dabei soll bei rot PORTC 3 gesetzt sein, bei gelb PORTC 2 und bei grün PORTC 1. Außerdem soll wenn die Ampel wenn sie grün ist blinken und zwischen dem Wechseln ein delay von 1 sec. also 1000ms haben. Das ganze sollte dann
> PORTC = 3
-
Thread
Atmega8 UART ext. Quarz
-----------Hauptprogramm------------------- int main(void) { DDRC=0x0F; // alle Pins an PortC als Ausgänge DDRD=0x04; // alle Pins an PortD als Ausgänge DDRB=0xFF; // alle Pins an PortD als Ausgänge USART_init(UBBR_Value); USART_Flush(); sei(); while(1) { //PORTC = 0x00;
nicht auf 9600 Bd eingestellt, sondern auf 315. Dieses [c] UCSRC = (1<<UCSZ1)|(1<<UCSZ0); [/c] geht in Wirklichkeit nach UBRRH, damit wird UBRR = 6*256 + 51.
-
Thread
PIC18F4550 LATA mit PORTA nicht auslesbar?
mit XC8 Compiler). An sich habe ich einige Erfahrung, aber das hier will mir nicht in den Kopf. Es geht um die berüchtigten Funktionsunterschiede der LATA und PORTA Register. Im untenstehenden Code wird das PORTA Register bei der | Operation gelesen. Aber offenbar wird dort an Bitposition 1 ein low
External USB transceiver RCV input". UCON.USBEN muss '0' sein weil sonst Teile von PORTA,PORTB und PORTC für USB verwendet werden.......
-
Thread
Pinabfrage ATMEGA
{ PORTD ^= (1<<PD6); //Toggel Augang PD6 if (!(PORTC & (PINC0))) //Pinabfrage PC0 = 0 { PORTD &= ~(1<<PD7); //LED einschalten } if (PORTC & (PINC0)) //Pinabfrage PC0 = 1 { PORTD |= (1<<PD7); //LED ausschalten
> if (!(PORTC & (PINC0))) //Pinabfrage PC0 = 0 > if (PORTC & (PINC0)) //Pinabfrage PC0 = 1 PIN - Abfrage!
-
Thread
Xmega Scheduler
aus > dieser Flut von Reports die rauszufischen, die einen tatsächlichen > Fehler melden.. Es geht hier nicht um Fehler - es geht um Fragen zur Anwendung. Mir persönlich ist diese Entwicklung vollkommen egal - aber wenn ich Fragen hätte würde ich die dort stellen - und nicht hier.
gebe zu es ging mir auch darum Leute wie c-hater etwas in die schranken zu weißen, so ein Umgang geht einfach gar nicht und erschreckt bestimmt viele die gerade erst anfangen!
-
Thread
String über UART an LCD
Reihenfolge deiner push und pop Befehle stimmt nicht, es wird > LIFO benutzt, heisst letzter rein geht als erster raus. Oh stimmt ganz vergessen... Jetzt wirds langsam immer peinlicher ._. [avrasm] receive: cli SBI PORTC,3 push temp1 push zl push zh ldi zl, low(text)
Wenn ich mehr Bytes reserviere macht es keinen Unterschied....Er bleibt bei dem Vergleich und geht gar nicht in die Stringfunktion
-
Thread
ATmega809 - SPI empfängt 1 Byte und dann nie wieder
Code-Abschnitt hab ich den MISO-Pin entsprechend als Ausgang definiert: [c] self->SPI.PORT = &PORTC; self->SPI.MOSI = PIN0_bm; self->SPI.MISO = PIN1_bm; self->SPI.SCK = PIN2_bm; self->SPI.SS = PIN3_bm; self->SPI.PORT->DIR |= self->SPI.MISO; [/c] So sieht die ISR aus: [c]
seinem read(...) bzw. write(...) nur 1 Byte sendet/liest, dann taktet er auch nur 1 Byte... SCK geht ja vom Master aus. Wenn du mit dem Logic Analyser nichts siehst (außer dem 1 Byte), dann liegt ja auf der Datenleitung auch nichts...? Oder verstehe ich deine Problemstellung falsch?
-
Thread
Schalten eines Tasters
EDIT: [avrasm]SBI PORT PORTC,4[/avrasm]
OK...Blöd wenn die Katze vorzeitig auf Enter drückt ;D Ich meine natürlich: [avrasm]SBI PORTC,4[/avrasm] So jetzt aber
-
Thread
#define nutzen um mehr als 8 Ein- oder Ausgänge anzusprechen
weiter. Ich arbeite in C. Daher wenn möglich auf dieser Sprache Tipps zukommen lassen. Außer es geht nicht unter C, was ich mir nicht vorstellen kann. Herzlichen Dank. Gabi
jeden beliebigen Portpin direkt ansprechen. Willst Du mehrere 8Bit-Ports gleichzeitig ansprechen, geht das mit einer Funktion. Z.B. für 4 Ports einlesen: [c] uint32_t get_32pins(void) { return PINA | PINB<<8 | (uint32_t)PINC<<16 | (uint32_t)PIND<<24; } [/c]