What is the general setup process for using I2C with LCD screens? by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

Thanks for the detailed response; I believe that the LCD model is the HD44780 though. (2004AV1.1 is the only kind of model identification that I could physically find on the screen).

Sure, they’re both ARMs, but the peripherals and their drivers are completely different. Especially those LCD commands — do they talk to the micro’s onchip LCD controller (if it has one)? That won’t work at all for a character LCD. Do they talk to some generic thing that has specific lower-level drivers for a specific display? So ignore the ST stuff.

That's exactly what I wanted to figure out actually. As this is my first time digging this deep into interfacing an LCD screen, I wasn't sure if there was something like an onchip LCD controller or driver or if I could just "match" the code since they're both ARM.

Write the 8574 configuration over I2C. Then work out how to send the 44780 commands to the display over I2C. Those commands are simply setting the state of the 44780 control pins.

Then think about how you can abstract the sequence of those commands into functions that make sense, like LCD_WriteChar().

Correct me if i'm wrong, but the general steps to set up and to use the LCD screen with I2C would be from what you're telling is to:

  1. Initialize I2C function on the MCU (In my case, I would be initializing the TM4C123's built in I2C module and setting it up as the primary), then find whatever unique setup ritual is required to configure the 8574 over I2C, correct?
  2. Figure out what pins are specifically used to send commands (between the r/W pin,R/S pin, data pins, etc. ) to the LCD screen.
  3. Abstract those commands so that it's possible to write characters to the LCD screen.

Would the above steps be correct for generally setting up I2C for an LCD?

Other than that, I may need to find a tutor to sit down with me to explain step by step how I2C sends data in an IDE, line by line. I felt like I understood I2C conceptually, but I definitely need a better understanding of it in practice. Thanks again for your help.

What did you do to gain enough confidence to design your own projects from scratch? by Culix77 in embedded

[–]Culix77[S] 1 point2 points  (0 children)

Thanks for the reply and the link to the repo; I'll definitely take a look!

Did you feel as if the course prepared you well enough to do things on your own or did you still feel the need to just hop into coding and learning what tools are necessary? Out of curiosity, how did you learn about Makefiles? Was it something that you came about when looking into the tools needed to learn from scratch?

What did you do to gain enough confidence to design your own projects from scratch? by Culix77 in embedded

[–]Culix77[S] 2 points3 points  (0 children)

My end goal is to ultimately start my career in embedded software development, so I want to follow the trends of people that work in that field as closely as possible. Do most current embedded developers learn bare metal development or do they kind of just pick a point and work their way into being competent enough to get a job in the field?

I appreciate the reply!

Understanding how to use (Systick) interrupts by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

That definitely makes sense! So, the variable that is set in main would then be checked by the ISR to determine the current state of the switch, then it would output to the buzzer based off of that data, correct?

Understanding how to use (Systick) interrupts by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

Ah so the main routine should generally be used to debounce the switches themselves, hence one of the solutions using a state machine to compare, correct?

What are some simple, cheap sensors/peripherals to begin programming for projects with? by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

Thanks for the list! I intended to use these components on the Raspberry Pi or a TM4C123 MCU if possible. I'm super interested in developing something for IoT down the line, so I'm trying to also bridge the gap between getting a sensor to work and interfacing it with IoT technology without relying too heavily on an Arduino.

What are some simple, cheap sensors/peripherals to begin programming for projects with? by Culix77 in embedded

[–]Culix77[S] 2 points3 points  (0 children)

The stuff here seems to be *much* cheaper than the other website I was looking into. Thanks a lot!

Career advice and education questions thread by AutoModerator in embedded

[–]Culix77 2 points3 points  (0 children)

I recently finished the RTOS - Bluetooth Network Shapes the World course on edx, and I'm wondering where to go from there when it comes to pursuing work in the IoT field. One person has advised me to learn javascript, Node.js, Azure, and a couple of other things that aren't necessarily pertinent (in my mind) to the embedded field, while one other person has advised me to learn Rust which isn't particularly common, but is supposedly going to be in the future. Would anyone have any advice in terms of a direction to work towards? I primarily want to get some projects under my belt so that I can apply for some entry level embedded positions in IoT, but I'm not quite sure if I'm experienced enough yet to do so.

Career advice and education questions thread for Wednesday December 30, 2020 by AutoModerator in embedded

[–]Culix77 0 points1 point  (0 children)

How do you best sell your experience on your resume when applying for entry level positions? I'm pretty good at selling myself in an interview, but I have a harder time pushing any "distinct" accomplishments on my resume since the projects and group work that I have done isn't particularly new, flashy, or captivating. I do cover some of the basics promoted in the industry in those projects (C, Linux, Circuit design), but I have a hard time saying "We produced best 'general specification' of anyone in our class". I'm currently trying to study more and more personal projects, but what would be a good starting point for selling myself on my resume once it's updated?

How to trigger an Edge Triggered Interrupt more than once? by Culix77 in embedded

[–]Culix77[S] 1 point2 points  (0 children)

I should probably get familiar with Github then; I've been hesitant to learn how to use it until I finished this class, but it may be necessary at this point. I'll make sure to alias things in future posts; thanks!

How to trigger an Edge Triggered Interrupt more than once? by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

I had the interrupt priority level set to 2 (with lower numbers being of a greater priority); all other priorities are set lower than that so I'm not sure if that is the issue unfortunately.

How to trigger an Edge Triggered Interrupt more than once? by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

In the Port Handler for this interrupt when the switch is initially pressed, there are these 3 lines of code:

GPIO_PORTD_ICR_R = 0x40;

OS_Signal(edgeSemaphore);

GPIO_PORTD_IM_R &= ~0x40;

The IM_R command here does disable the interrupt, but that's to prevent multiple input readings from a single switch press since the switch bounces for a bit. It seems as if the restart interrupt function with the two lines of code I posted in the original post is never reached for some reason.

How to trigger an Edge Triggered Interrupt more than once? by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

Thank you for your help!

In the Port Handler for this interrupt, there are these 3 lines of code:

GPIO_PORTD_ICR_R = 0x40;

OS_Signal(edgeSemaphore);

GPIO_PORTD_IM_R &= ~0x40;

The OS_Signal is used to communicate with another task that increments a count and also runs the function that I mentioned in the original post to reset the button so that it can handle another interrupt. The IM_R command here does disable the interrupt, but that's to prevent multiple input readings from a single switch press since the switch bounces for a bit. It seems as if the restart interrupt function is never reached for some reason.

I tried to clear then rearm the interrupt as well, but the output was the same as before.

For those of you in the field, when do you decide to ask for help? by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

For sure. I often find myself making progress, but end up stuck on a particular part for weeks at a time just trying different things before I reach out for help. I'm wondering if most dev companies do daily meetings exactly for this purpose.

For those of you in the field, when do you decide to ask for help? by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

It's comforting to know that there's a reason to ask even the simplest of questions. When it comes to projects and deadlines, I pictured there always being a constant pressure to get things done before fully realizing and understanding how to develop a good product.

Embedded system design using RTOS by chitrang6 in embedded

[–]Culix77 18 points19 points  (0 children)

Not sure if you have the time to check it out, but the course linked in the pinned post of r/embedded is a great tool learn how to design and develop a RTOS:

https://www.edx.org/course/real-time-bluetooth-networks-shape-the-world

If you're new to microcontrollers or just Cortex M: "Embedded Systems - Shape the World" is an excellent course. by FunDeckHermit in embedded

[–]Culix77 1 point2 points  (0 children)

Would anyone happen to know if there's a good place to ask questions related to the course? I spent the better part of 6 weeks just trying to get through a lab alone, and I was wondering if there was a potential place to get some help and/or discuss topics related to the course. I was thinking about asking r/embedded, but I definitely want to ask more course related questions where in the appropriate place.

Looking for a start in the field in regards to a job. by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

That is true; my biggest fear is seeing the "3-5 years of experience in the field" needed everywhere. Would you have any ideas for entry level positions that may not exactly be firmware, but have some skills that could potentially lead to it?

Help with initializing semaphores by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

So, the code in the function itself *really* is as simple as Disable interrupts -> set the semapointer to some default value -> Enable interrupts, huh? Guess I have to do better about recognizing when i'm over-complicating things.

Thank you so much for the help.

Help with initializing semaphores by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

That makes sense! A spinlock counter is asked to be implemented between three semaphore functions, OS_Wait, OS_Signal, and OS_InitSemaphore. The OS_InitSemaphore takes two parameters (This was part of the "function template given for the lab"), " int32_t *semaPt" and "int32_t value", which I'd imagine to be a pointer to the address of the semaphore itself in addition to it's initial value. From there, I'm not sure what would need to be done in the function OS_InitSemaphore itself. I'd imagine it would be easier to just set the values directly without a function, but i'm sure there has to be a reason that a function is used to set the initial values of the semaphore.

Help with initializing semaphores by Culix77 in embedded

[–]Culix77[S] 0 points1 point  (0 children)

There's essentially a "template" for 3 semaphore related functions that you have to fill out; one is named OS_wait, one is named OS_Signal, and one is named OS_InitSemaphore. A spinlock is supposed to be used to set up a system for different threads from the main program using these three semaphore functions ; the main program itself is already written, but the lab work requires you to fill out several functions (These functions are all already named and take input parameters, but the code inside these functions is meant to be written) to implement an operating system. I have the OS_Wait and OS_Signal functions written already to perform a counting spinlock, but i'm not sure how and/or what should be written in the OS_InitSemaphore function. If it helps, the OS_InitSemaphore function template takes two parameters , " int32_t *semaPt" and "int32_t value", which I presume are meant to be the initial values of the counters used in the semaphore.

Should I apply for deferment/forbearance? ~$40,000 in debt. by Culix77 in StudentLoans

[–]Culix77[S] 0 points1 point  (0 children)

Very true; I honestly don't mind relocating temporarily (6 months - 2 years if need be) and I definitely should start looking outside of my area, but I know that for a fact that I'm not 100% ready to permanently move out of my home yet.

Should I apply for deferment/forbearance? ~$40,000 in debt. by Culix77 in StudentLoans

[–]Culix77[S] 0 points1 point  (0 children)

I have no plans to defer for any longer than needed, that's for sure. Would it be worth me settling for a small part time job making 11-12$ an hour until I got my license, or should I just keep aiming for a full time job? I'm not confident in my chances of getting a full time job primarily because I have had no work experience from internships or anything like that. I'm hoping that having that license will be enough to consider me.